Ubuntu 16.04 / phpMyAdmin / Como Torná-lo Acessível Apenas a IPs Específicos

Para restringir os endereços IP que podem acessar o phpMyAdmin no Apache 2.4, use Require ip nas configurações de acesso do diretório do phpMyAdmin. Especifique os endereços permitidos, verifique a sintaxe da configuração e depois recarregue o Apache. O acesso será então permitido apenas para os endereços especificados nos caminhos onde as configurações foram aplicadas.

Escopo de aplicação e pré-requisitos

Este artigo usa o exemplo do phpMyAdmin instalado a partir do pacote no Ubuntu, servido diretamente pelo Apache 2.4, onde o diretório /usr/share/phpmyadmin é usado em sua configuração. O método de instalação, host virtual, aliases e localização dos arquivos de configuração variam dependendo do ambiente. Não aplique este exemplo como está para configurações que utilizam Nginx, contêineres ou proxies separados.

O suporte padrão de segurança para o Ubuntu 16.04 LTS terminou em abril de 2021, e o suporte do Ubuntu Pro terminou em maio de 2026. Verifique as condições para suporte Legacy adicional e planeje a migração para uma versão suportada. Você pode verificar o cronograma detalhado em Cronograma de Manutenção de Segurança do Ubuntu.

Se as configurações forem aplicadas incorretamente, até os administradores podem ficar sem acesso ao sistema. Antes de fazer alterações, garanta o acesso via console ou SSH ao servidor e verifique os endereços IP reais dos administradores permitidos a acessar e o caminho usado pelo phpMyAdmin. Ao acessar pela internet, geralmente é necessário o IP público visto pelo servidor, e não o IP privado do PC de gerenciamento. O endereço visto pelo servidor pode variar dependendo do uso de VPN, proxy, NAT e IPv6.

Verificação e Backup da Configuração Atual do Apache

Verifique os aliases e as configurações de diretório do phpMyAdmin na versão do Apache e na configuração ativa. Se os arquivos a seguir não existirem, localize o arquivo de configuração real de acordo com o método de instalação. Os resultados de pesquisa a seguir podem incluir configurações que não estão ativas, portanto, verifique também as configurações ativas e os hosts virtuais.

apache2 -v
sudo apache2ctl -S
sudo grep -R -n -i phpmyadmin /etc/apache2/conf-enabled /etc/apache2/sites-enabled

Se a configuração do pacote existir em /etc/apache2/conf-available/phpmyadmin.conf e essa configuração estiver ativa, faça um backup antes de fazer alterações. Se os arquivos de backup abaixo já existirem, atribua um nome diferente para não sobrescrevê-los.

sudo cp -a /etc/apache2/conf-available/phpmyadmin.conf /etc/apache2/conf-available/phpmyadmin.conf.before-ip-restriction

Abra o arquivo de configuração real com um editor de texto e encontre a seção <Directory /usr/share/phpmyadmin>. Por exemplo, você pode editá-lo com o seguinte comando.

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Configurando endereços IP permitidos

Após verificar as regras de permissão de acesso na seção existente do diretório phpMyAdmin, configure as regras de aprovação que se aplicam a essa seção da seguinte forma. Os endereços abaixo são exemplos para fins de explicação, portanto, certifique-se de substituí-los pelos endereços reais do administrador. Mantenha o processamento PHP existente ou outras configurações necessárias na seção original.

<Directory /usr/share/phpmyadmin>
    Require ip 192.0.2.10
</Directory>

O bloco acima é um exemplo mostrando a parte de controle de acesso. Não exclua toda a seção de diretório existente e cole como está. Se você colocar Require all granted e Require ip lado a lado na mesma seção, o acesso pode ser permitido se qualquer um deles for autorizado, então revise as regras de aprovação existentes para garantir que as restrições pretendidas sejam realmente aplicadas. Outras seções Directory ou Location ou configurações de autenticação também podem afetar os resultados, então verifique toda a configuração.

Se houver vários endereços, você pode listá-los separados por espaços. Por exemplo, a seguinte regra permite o acesso se corresponder a qualquer um dos dois endereços. Se você especificar um intervalo de rede, todo o intervalo será permitido, então especifique apenas o intervalo necessário. Endereços IPv6 e notação CIDR também são suportados.

Require ip 192.0.2.10 198.51.100.25

As diretivas Order, Deny e Allow são sintaxe legado suportadas para compatibilidade no Apache 2.4. Evite misturar regras antigas e novas indiscriminadamente; revise a configuração existente e quaisquer outros requisitos de autenticação antes de migrar para a sintaxe atual. Consulte o guia de controle de acesso do Apache e a documentação Require ip para formatos de endereços e escopo.

Verificação de sintaxe, aplicação e verificação de conexão

  1. Após salvar o arquivo, verifique a sintaxe de toda a configuração do Apache com o seguinte comando. Se Syntax OK não aparecer, verifique e corrija o arquivo e a linha do erro. A verificação de sintaxe não garante que a política de acesso funcionará conforme o esperado.
sudo apache2ctl configtest
  1. Se a verificação de sintaxe for bem-sucedida, recarregue a configuração e verifique o status do serviço. O nome do serviço pode variar dependendo da distribuição.
sudo systemctl reload apache2
sudo systemctl status apache2
  1. Acesse o phpMyAdmin a partir de uma rede permitida usando seu endereço atual. Se você passar no controle de acesso, a tela de login pode aparecer, mas um login separado do banco de dados será necessário.
  2. Verifique o mesmo endereço a partir de uma rede separada que não esteja incluída na lista de permissões. Se a regra relevante do Apache se aplicar e não houver outros erros, 403 Forbidden geralmente é exibido. Se um endereço permitido for bloqueado ou um endereço não permitido conseguir abrir a página, verifique os logs do servidor, as seções de configuração aplicáveis, o proxy e os endereços IP.

Ambiente de Proxy e Segurança Adicional

Se o Apache estiver atrás de um proxy reverso ou balanceador de carga, ele pode ver o IP do proxy em vez do usuário real. Nesse caso, permitir o endereço do proxy pode dar acesso a mais usuários do que o pretendido, então tenha cautela. Para usar o endereço real do cliente, é necessário configurar apenas proxies confiáveis. Não confie cegamente em cabeçalhos enviados por clientes arbitrários; após consultar a documentação do Apache mod_remoteip , configure de acordo com sua rede.

As restrições de IP não substituem o login do phpMyAdmin ou o gerenciamento de permissões do banco de dados. Use HTTPS e limite as permissões da conta ao escopo necessário. Se os IPs públicos mudarem frequentemente em seu ambiente, em vez de permitir cegamente uma faixa ampla de endereços, considere caminhos de acesso como VPNs.

Problemas de Conexão e Revertendo Configurações

Se o acesso estiver bloqueado, verifique o IP público atual do administrador, as rotas IPv4 e IPv6, se o arquivo de configuração está ativo e se regras de aprovação de outras zonas estão aplicadas. A localização dos logs de erro do Apache depende da configuração, e na instalação padrão do Ubuntu, você pode verificar /var/log/apache2/error.log. Tenha cuidado ao compartilhar logs, pois podem conter informações sensíveis.

Se você precisar reverter alterações, primeiro compare para garantir que ninguém mais tenha modificado os arquivos desde o backup, restaure o arquivo de backup para seu caminho original, depois execute uma verificação de sintaxe e recarregue. Restaurar para a configuração anterior pode permitir que o acesso previamente permitido seja novamente autorizado, então verifique o escopo de acesso após a restauração.

sudo cp -a /etc/apache2/conf-available/phpmyadmin.conf.before-ip-restriction /etc/apache2/conf-available/phpmyadmin.conf
sudo apache2ctl configtest && sudo systemctl reload apache2

Se uma verificação de sintaxe resultar em erros, não recarregue; corrija a configuração em vez disso. Também verifique se as restrições de login e acesso pretendidas são mantidas tanto em ambientes permitidos quanto não permitidos.