Voltar para blog

Habilitando phpMyAdmin por IP no HestiaCP com controle de risco e hardening

22/02/2025 · 2 min · HestiaCP

Compartilhar

Habilitar phpMyAdmin por IP no HestiaCP é uma necessidade comum em manutenção urgente, mas também é um vetor de exposição se for feito sem controle. Neste artigo, documento o fluxo que uso em produção: liberar acesso de forma temporária, com usuário dedicado e camada de hardening para reduzir risco.

Quando usar este procedimento

Uso este modelo quando:

  1. preciso de intervenção rápida no banco sem acesso por túnel;
  2. equipe de suporte precisa validar tabela/opção em janela curta;
  3. acesso por domínio do painel está indisponível temporariamente.

Fora desses cenários, prefiro acesso via CLI ou túnel restrito.

Etapa 1: criar usuário administrativo dedicado no MySQL

Nunca uso root no phpMyAdmin. Crio conta separada para auditoria e revogação rápida.

mysql
CREATE USER 'admin_pma'@'localhost' IDENTIFIED BY 'SENHA_FORTE_AQUI';
GRANT ALL PRIVILEGES ON *.* TO 'admin_pma'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Validação:

SHOW GRANTS FOR 'admin_pma'@'localhost';

Etapa 2: habilitar include do phpMyAdmin no Apache

No HestiaCP, o phpMyAdmin geralmente já está instalado, mas pode não estar habilitado na configuração de IP.

Arquivo típico:

/etc/apache2/conf.d/IP.conf

Garanta a diretiva:

IncludeOptional /etc/apache2/conf.d/*.inc

Teste sintaxe e recarregue:

apache2ctl -t
systemctl reload apache2

Etapa 3: validação funcional

Teste endpoint localmente:

curl -I http://SEU_IP/phpmyadmin

Se retornar 200 ou 302, o endpoint está publicado.

Acesse http://SEU_IP/phpmyadmin e autentique com admin_pma.

Hardening obrigatório após publicação

1) Restringir IP no firewall

Exemplo com UFW (ajuste para seu IP de administração):

ufw allow from 203.0.113.10 to any port 80 proto tcp
ufw allow from 203.0.113.10 to any port 443 proto tcp

2) Forçar HTTPS

Evite uso contínuo via HTTP. Em manutenção, prefira endpoint sob TLS válido.

3) Publicação temporária

Concluída a tarefa, remova exposição externa e mantenha apenas fluxo interno.

Erros comuns que já tratei

Endpoint abre, mas login falha

Causa: usuário MySQL com host diferente ('user'@'%' vs 'user'@'localhost').

Apache não recarrega

Causa: erro sintático no IP.conf ou include duplicado.

Validação sempre com apache2ctl -t antes de reload.

Bloqueio por WAF/firewall

Causa: regra de segurança barrando /phpmyadmin.

Ação: criar exceção temporária, rastrear logs e remover exceção após manutenção.

Rollback

Se precisar fechar rapidamente:

  1. remover/ajustar include em IP.conf;
  2. apache2ctl -t;
  3. systemctl reload apache2;
  4. bloquear IP/porta no firewall;
  5. opcionalmente revogar usuário criado.

Revogação de usuário:

DROP USER 'admin_pma'@'localhost';
FLUSH PRIVILEGES;

Conclusão

Habilitar phpMyAdmin por IP no HestiaCP pode ser seguro quando tratado como procedimento controlado: usuário dedicado, validação de configuração, restrição por IP e desativação após uso. O erro operacional é deixar o endpoint exposto como solução permanente.

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.