Como eu posso bloquear tentativas de hackers direcionadas ao phpMyAdmin?

32

Meu site recebe milhares de visitas diárias de diferentes IPs que tentam acessar:

/php-myadmin/
/myadmin/
/mysql/

... e milhares de outras variações. Nenhum desses diretórios existe, eu nem tenho o phpmyadmin no meu servidor.

Eu não acho que nenhuma dessas tentativas tenha sido bem-sucedida, mas elas devem estar afetando os recursos do servidor e desperdiçar a largura de banda, então eu gostaria de pará-las, se possível. Eu bloqueei um punhado desses IPs, mas eles continuam voltando com novos IPs, existe alguma maneira de evitar isso permanentemente?

    
por amba88 08.01.2014 / 02:04

7 respostas

41

Não se preocupe com isso. Servir um 404 é uma pequena, minúscula quantidade de trabalho para um servidor web fazer. Você provavelmente poderia servir 10 404 por segundo usando um 486. A largura de banda por 404 é insignificante; uma minúscula requisição GET e uma minúscula resposta 404.

Sério; não se preocupe com isso. Isso é apenas parte integrante da execução de um servidor na Internet.

    
por 08.01.2014 / 03:03
36

Infelizmente para você, é assim que funciona a Internet. Somente ignore isso. Milhares de bots / trojans escaneiam a Internet. O IP de origem será sempre aleatório. Não há cura.

A única solução 100% para eliminar esse tráfego está ilustrada abaixo:

Uma alternativa é:
 - para mover com https / http da porta 80/443 para outra coisa. Os bots geralmente não procuram o servidor http em todas as outras portas 65k.
 - use VPN para se conectar ao servidor (eu acho que isso não é possível se você hospedar um site público).

    
por 08.01.2014 / 03:00
29

O que você quer é Fail2ban (supondo que essa seja uma máquina linux, você não disse ...)

O que é o Fail2ban?

O Fail2ban analisará os logs do sistema, procurando expressões regulares específicas para bloquear. Quando encontrar uma correspondência (ou várias correspondências do mesmo IP, dependendo de como você a configura), ela será bloqueada, geralmente por meio de IPTables. Normalmente, isso é usado para bloquear tentativas de autenticação com falha contra SSH ou servidores da web.

Você o configura para bani-los por um determinado período de tempo (pode ser minutos, pode levar dias ... depende de quão persistentes eles são), após o qual a proibição expirará, a menos que eles tentem novamente.

Como isso ajuda a bloquear os robôs de varredura do phpmyadmin?

Ele pode ser usado facilmente para coincidir com sinais comuns de um ataque, como tentar acessar pastas phpmyadmin inexistentes. Você terá que descobrir a expressão regular correta para corresponder a essas tentativas e garantir que você não bloqueie usuários legítimos.

A configuração dada em esta postagem do blog pode funcionar verbatium ou exigir alguns ajustes para sua configuração.

Por que devo bloqueá-los? Os erros 404 não custam muito

Bloqueando-os no iptables Têm algum uso - as probabilidades são se eles estão verificando vulnerabilidades do phpmyadmin, eles podem tentar outros serviços por vulnerabilidades também, até que eles atinjam algo que funcione. Proibi-los fará com que a maioria dos bots / scripts desistam depois de algum tempo, e eles seguirão para metas melhores.

Mesmo durante as varreduras, não custa muito (a menos que elas realmente encontrem uma vulnerabilidade), elas inundam seus registros, dificultando a visualização de ataques e problemas com êxito com seu servidor da Web.

Como o comentário abaixo diz, o Fail2ban requer alguns recursos do sistema. Mas não muito. No mínimo, posso dizer que nunca tive um problema de desempenho que eu pudesse atribuir ao Fail2ban. No entanto, tive problemas de desempenho de scripts muito agressivos que tentavam violar senhas forçadas ou lançar milhares de tentativas de injeção de SQL e outras explorações por segundo em meu servidor. Bloqueá-los no nível do firewall leva menos recursos do que bloqueá-los no nível do servidor / aplicativo. Ele também pode ser estendido para executar scripts personalizados para banir endereços IP - então, em vez de bani-los em IPtables, você poderia proibi-los em um firewall de hardware ou enviar e-mails a alguém se a mesma pessoa tentar atacá-lo para reclamar ao seu ISP ou peça ao seu datacenter para bloqueá-lo em seus firewalls.

Alguma outra dica?

É ALTAMENTE RECOMENDADO que você coloque na lista de permissões alguns endereços IP que você controla para que você não se bloqueie acidentalmente.

    
por 08.01.2014 / 03:22
4

O que eu faço é colocar um script pequeno no diretório apropriado, então ele roda se alguém acessa / phpmyadmin /. Esse script não faz nada além de invocar iptables (no Linux), que bloqueia o endereço IP que acessa o script por 30 minutos (após o qual um cron-job libera a cadeia de iptables à qual o endereço IP é adicionado).

A vantagem sobre o fail2ban é que você não usa nenhum recurso para analisar o syslog / log de acesso. A desvantagem, é claro, é que você não verifica mais nada, exceto acessar esse endereço específico.

Por que eu faço isso? Claro, servir um 404 seria fácil para o servidor, mas eu não quero que eles fuçam, simples assim. Eu quero desperdiçar o tempo de sua ferramenta, esperando que o servidor responda, tentando novamente até que finalmente desista. Além disso, se você não bloqueá-los, eles tentarão muito URLs diferentes antes de finalmente seguir em frente - às vezes mais de mil. Dependendo da ferramenta, pode ser "legal" e espaçá-las por algumas horas, ou pode não se importar com o servidor em todos eles em questão de minutos.

Por que não atendo uma página válida? Sua ferramenta pode parar de escanear você e alertar o skiddie que a está executando - quem, então, precisa fazer o check-out manualmente. O outro lado disso é que eles vão dar ao seu servidor um olhar muito mais próximo do que eles teriam, se a varredura não fizesse você aparecer nos resultados. Talvez eles fuçam um pouco mais, talvez alguns escaneamentos de portas, talvez você os enlouqueça, e eles lançam um DoS para ver se eles podem fazer qualquer coisa. Simplesmente bloqueá-los - o que, do ponto de vista deles, faz com que o servidor perca tempo no momento em que acessam o script phpmyadmin - é eficaz desperdiçar o tempo de sua ferramenta, evitando atenção indesejada.

Se você tiver o phpMyAdmin no servidor, uma solução eficaz pode ser colocá-lo em um diretório separado e usar o controle de senha do servidor da Web (.htpasswd para Apache) para bloquear o acesso antes que qualquer coisa chegue até ele.

    
por 08.01.2014 / 14:17
0

FWIW, restringimos o acesso ao / phpmyadmin / apenas a endereços IP permitidos.

Nós também usamos o mod_evasive (no apache2) para impedir ataques script / DOS mal-comportados.

    
por 09.01.2014 / 10:04
0

liga a ferramenta admin do mysql ao seu endereço de loopback da máquina 127.0.0.1

use ssh com o encaminhamento de porta para acessar seu back-end de administrador.

adicione uma camada extra de segurança que pode ser bastante transparente.

    
por 13.01.2014 / 13:19
-4

A melhor maneira que encontramos é proteger com senha a pasta em que o phpmyadmin está. Além disso, não use nada relacionado ao phpmyadmin como um nome de pasta: pma, phpmy, etc ...

    
por 08.01.2014 / 15:39