PhpMyAdmin – Como proteger de ataques Brute Force e DOS

porLuis Augusto Moretto

PhpMyAdmin – Como proteger de ataques Brute Force e DOS

Aumente o nível de segurança de seu PhpMyAdmin e fique protegido de Brute Force e DOS

ways-hackers-hack-your-website brute force phpmyadmin fail2ban https://goo.gl/LdUzwE
Proteja seu PhpMyAdmin e otimize sua infra

proteja o seu phpmyadmin

PhpMyAdmin é um painel de administração do banco de dados MySQL. Esse painel de administração do MYSQL roda no browser.

Seu endereço é público. Fica acessível em qualquer site em que esteja rodando. A instalação padrão tem o seguinte endereço: 

https://experienciasdigitais.com.br/phpmyadmin/

O painel do PhpMyAdmin utiliza o usuário e a senha do banco de dados Mysql para autenticação.

Assim se o usuário ROOT estiver habilitado para acesso remoto alguém pode querer quebrar a senha através de Brute Force.

O Problema

Como o endereço do PhpMyAdmin é público ele fica vulnerável as tentativas de Brute Force. Uma estratégia paliativa é instalar em outro diretório mas não resolve o problema de fato.

Segundo a documentação oficial, é recomendado a utilização de logs para o controle de tentativas de acesso. A razão para isso é que não existe nada oficial para “contornar” um ataque de força bruta.

A tentativa de Brute Force é feita por Robôs (Agentes) que ficam rodando  contra o endereço da instalação e para quebrar a senha ROOT.

A cada tentativa de autenticação uma conexão de Banco de dados com o MySQL é estabelecida. Isso consome recursos do Apache2 e do MySQL desnecessários.

Ou seja mesmo que a tentativa de login falhe, uma conexão com o banco de dados foi realizada e um processo do Apache2 inicializado.

Essa estratégia maliciosa pode levar o seu Banco de Dados ou Apache2 ao problema de DOS.  O DOS pode tornar os recursos de um servidor nas Nuvens indisponíveis para os seus utilizadores.

Aumentando a segurança

Uma solução complexa mas eficaz é criar uma JAIL para o arquivo de log do MySQL com fail2ban. Neste caso ao menos três tentativas maliciosas serão realizadas antes de bloquear o ip. 

Uma solução altamente eficaz e de simples implementação é o uso do arquivo .htaccess. Com ele vamos criar uma dupla autenticação.

Não basta ter as credenciais do banco de dados. Agora será necessário fazer o login no Apache para se autenticar no painel.

Antes de acessar o painel, aparece uma janela de autenticação conforme a figura abaixo:

phpmyadmin brute force dos
.htaccess e a janela de autenticação na página (dupla)

1) Criando um arquivo .htacess

Dentro do diretório de instalação crie um arquivo .htacess.

    Edite o arquivo .htaccess
    # sudo nano /usr/share/phpmyadmin/.htaccess
    
    Adicione o seguinte dentro do arquivo
    
    # conteúdo do .htaccess
    AuthType Basic
    AuthName "Restricted Files"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user
    

Dentro das configurações do Apache:

    #edite o arquivo
    
   sudo nano /etc/apache2/conf-available/phpmyadmin.conf


    #adicione AllowOverride All conforme exemplo
phpmyadmin.conf bash

Crie um usuário e senha para acesso ao diretório web protegido pelo Apache2

    #Crie um usuario
    
    sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
    
    #informe a senha e confirme a mesma
    #reinicie seu apache2 para aplicar as configurações
    
    sudo service apache2 restart

Happy Coding! 😀