Meu site recebe milhares de acessos diários 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, no entanto, elas devem estar afetando os recursos do servidor e desperdiçando largura de banda, então eu gostaria de interrompê-las, se possível. Eu bloqueei um punhado desses IPs, mas eles continuam voltando com novos IPs. Existe alguma maneira de evitar isso permanentemente?
web-server
hacking
amba88
fonte
fonte
mod_security
neste tópico, então confira isso . Observe que um comentário abaixo observa que isso realmente causaria mais trabalho ao servidor, é claro. Então, talvezmod_evasive
também seja bom de implementar .fail2ban
, mas isso está listado abaixo.Respostas:
Não se preocupe com isso. Servir um 404 é uma quantidade minúscula de trabalho para um servidor da Web. Você provavelmente poderia servir dez 404 por segundo usando um 486. A largura de banda por 404 é insignificante; uma pequena solicitação GET e uma pequena resposta 404.
A sério; não se preocupe com isso. Isso é apenas parte da execução de um servidor na internet.
fonte
Infelizmente para você, é assim que a Internet funciona. Ignore isso. Milhares de bots / trojans examinam a Internet. O IP de origem será sempre aleatório. Não há cura.
A única solução 100% para eliminar esse tráfego é ilustrada abaixo:
Uma alternativa é:
- mover com https / http da porta 80/443 para outra coisa. Os robôs geralmente não procuram o servidor http em todas as outras portas de 65k.
- use a VPN para conectar-se ao servidor (acho que isso não é possível se você hospedar um site público).
fonte
O que você quer é Fail2ban (assumindo que esta seja uma máquina Linux, você não disse ...)
O que é o Fail2ban?
Fail2ban analisará os logs do sistema, procurando por expressões regulares específicas a serem bloqueadas. Quando encontra uma correspondência (ou várias correspondências do mesmo IP, dependendo de como você a configura), ele será bloqueado, geralmente através do 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 período de tempo definido (pode ser minutos, pode levar dias ... depende de quão persistentes eles são), após o qual o banimento expirará, a menos que tente novamente.
Como isso ajuda a bloquear os robôs de verificação do phpmyadmin?
Ele pode ser usado com a mesma facilidade para corresponder a sinais comuns de um ataque, como tentar acessar pastas phpmyadmin inexistentes. Você precisará descobrir a expressão regular correta para corresponder a essas tentativas e garantir que não bloqueie usuários legítimos.
A configuração fornecida nesta postagem do blog pode funcionar literalmente ou exigir alguns ajustes na sua configuração.
Por que eu deveria bloqueá-los? Os erros 404 não custam muito
Bloqueá-los no iptables DEVE ter alguma utilidade - as probabilidades são de que, se estiverem verificando vulnerabilidades do phpmyadmin, eles também podem tentar outros serviços, até encontrarem algo que funcione. A proibição deles fará com que a maioria dos bots / scripts desista depois de um tempo, e eles passarão a alvos melhores.
Mesmo com as verificações não custando muito (a menos que encontrem uma vulnerabilidade), elas inundam seus logs, dificultando a visualização de ataques e problemas bem-sucedidos no servidor da web.
Como diz o comentário abaixo, o Fail2ban requer alguns recursos do sistema. Mas não muito. No mínimo, posso dizer que nunca tive um problema de desempenho que pudesse atribuir ao Fail2ban. No entanto, tive problemas de desempenho de scripts muito agressivos, tentando usar senhas de força bruta ou lançando milhares de tentativas de injeção de SQL e outras explorações por segundo no meu servidor. Bloqueá-los no nível do firewall leva MUITO menos recursos do que bloqueá-los no nível do servidor / aplicativo. Também pode ser estendido para executar scripts personalizados para banir endereços IP - portanto, em vez de bani-los em tabelas de IP, você pode bani-los em um firewall de hardware ou enviar um e-mail a alguém se a mesma pessoa continuar tentando atacá-lo para que você possa reclamar ao provedor de serviços de Internet ou peça ao seu datacenter que os bloqueie nos firewalls.
Alguma outra dica?
É ALTAMENTE RECOMENDADO que você coloque na lista branca alguns endereços IP que você controla para não se bloquear acidentalmente.
fonte
O que faço é colocar um pequeno script no diretório apropriado, para que seja executado se alguém acessar / phpmyadmin /. Esse script não faz mais nada além de invocar o 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 ao qual o endereço IP é adicionado).
A vantagem sobre o fail2ban é que você não usa nenhum recurso para analisar o syslog / access-log. A desvantagem, é claro, é que você não verifica mais nada, exceto acessar esse endereço muito específico.
Por que eu faço isso? Claro, servir um 404 seria fácil para o servidor, mas não quero que eles fujam, simples assim. Quero perder o tempo da ferramenta deles, esperando o servidor responder, tentando novamente até que finalmente desista. Além disso, se você não bloqueá-los, eles vão tentar um monte de URLs diferentes antes de finalmente seguir em frente - às vezes mais de mil. Dependendo da ferramenta, pode ser "agradável" e espaçá-las por algumas horas, ou pode não se importar e sobrecarregar o servidor com todos eles em minutos.
Por que não sirvo uma página válida? A ferramenta deles pode parar de fazer a varredura e alertar o skiddie que o está executando - que então precisa fazer o check-out manualmente. O lado oposto disso é que eles darão ao seu servidor uma visão muito mais próxima do que teriam, se a verificação não o fizesse aparecer nos resultados. Talvez eles bisbilhotem um pouco mais, talvez algumas verificações de portas, talvez você as enlouqueça e elas lançem um DoS para ver se podem fazer alguma coisa. Simplesmente bloqueá-los - o que, do ponto de vista deles, faz com que o servidor atinja o tempo limite no momento em que acessam o script phpmyadmin - é efetivo para desperdiçar o tempo de suas ferramentas, evitando a atenção indesejada.
Se você possui o phpMyAdmin no servidor, uma solução eficaz pode colocá-lo em um diretório separado e usar o controle de senha do servidor da web (.htpasswd for Apache) para bloquear o acesso antes que algo aconteça.
fonte
FWIW, restringimos o acesso a / phpmyadmin / apenas a endereços IP na lista de permissões.
Também usamos o mod_evasive (no apache2) para impedir ataques de script com DOS / mal comportados.
fonte
vincule a ferramenta de administração do mysql ao endereço de loopback da sua máquina 127.0.0.1
use ssh com encaminhamento de porta para acessar seu back-end de administrador.
adicione uma camada extra de segurança que pode ser bastante transparente.
fonte
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 ...
fonte
None of these directories exist, I don't even have phpmyadmin on my server.
- Ele não está perguntando como proteger suas instalações existentes ... ele está perguntando o que fazer com coisas que não existem. Você não pode renomearPMA
ou o que tem se não existir.