Estou sendo enganado pela China e não sei por que não consigo bloquear sua solicitação para meu servidor .
//host.deny
ALL: item.taobao.com ALL: 117.25.128.*
Mas quando vejo o log de erros no meu servidor da web tail -f /var/log/apache2/error.log
, as solicitações ainda estão sendo permitidas.
Pergunta: Por que minha configuração /etc/hosts.deny não está funcionando?
Resposta
-
O arquivo é chamado
/etc/hosts.deny
, nãohost.deny
-
Nem todos os serviços usam tcp-wrappers.
sshd
, por exemplo, não funciona por padrão. Nem o apache. -
Você pode usar
iptables
para bloquear todos os pacotes de 117.25.128 / 24, por exemplo:iptables -I INPUT -s 117.25.128.0/24 -j DROP
-
Melhor ainda, você pode usar fail2ban para monitorar um arquivo de log (como access.log do apache e / ou error.log) e bloqueia automaticamente os endereços IP que tentam atacar o seu servidor.
Da descrição do pacote debian fail2ban
:
Fail2ban monitora arquivos de log (por exemplo, /var/log/auth.log, /var/log/apache/access.log) e bane de forma temporária ou persistente endereços sujeitos a falhas atualizando as regras de firewall existentes.
O Fail2ban permite a especificação fácil de diferentes ações a serem tomadas, como banir um IP usando regras iptables ou hosts.deny, ou simplesmente enviar um e-mail de notificação.
Por padrão, ele vem com expressões de filtro para vários serviços (sshd, apache, qmail, proftpd, sasl etc.) mas a configuração pode ser facilmente estendida para monitorar qualquer outro arquivo de texto. Todos os filtros e ações são fornecidos nos arquivos de configuração, portanto fail2ban pode ser adotado para ser usado com uma variedade de arquivos e firewalls.
Comentários
Resposta
Quanto à sua pergunta original. Meu Apache no debian não está configurado com libwrap, então não vai consultar hosts.deny. [A resposta anterior já menciona isso – a realidade é que tcpwrappers não é o epítome da segurança como era nos anos 90, especialmente quando se trata à lista negra]. Você teria que executá-lo não como um daemon, mas a partir de (x) inetd, o que o tornaria mais lento (consideravelmente).
Você pode bloquear / permitir o acesso no nível do Apache e fazer não precisa de tcp wrappers para Apache [nem iptables, por falar nisso]. Você não mencionou o ssh, no entanto, nunca deixo os servidores ssh abertos para o exterior diretamente. No entanto, continue lendo.
Temos um vhost com 300 + domínios e também problemas semelhantes, com taobao, baidu e, muitas vezes, até mesmo com spiders do Google. Notavelmente, os spiders do baidu podem ser bastante agressivos e persistentes.
Como você já percebeu, eles têm vários servidores, e mesmo se você bloquear um IP, eles aparecerão novamente em breve de alguns outros endereços IP.
Não é nada prático tentar mantê-los ts de endereços IP / bloqueios de rede manualmente.
O que funciona bem para nós é o modsecurity bloqueando as strings do agente do usuário permanentemente, enquanto o mod_evasive está bloqueando temporariamente os IPs que estão sendo abusivos.
Esta configuração , além de desacelerar os spiders dos mecanismos de pesquisa, também tem a vantagem de reduzir os zumbis que tentam adivinhar senhas em CMSes.
A parte relevante de nosso modsecurity.conf
SecRule REQUEST_HEADERS:User-Agent "Yandex" phase:1,deny,nolog,id:"6972" SecRule REQUEST_HEADERS:User-Agent "ichiro" phase:1,deny,nolog,id:"6973" SecRule REQUEST_HEADERS:User-Agent "Baiduspider" phase:1,deny,nolog,id:"6974" SecRule REQUEST_HEADERS:User-Agent "Baiduspider/.*" phase:1,deny,nolog,id:"6975" SecRule REQUEST_HEADERS:User-Agent "Baiduspider-video" phase:1,deny,nolog,id:"6976" SecRule REQUEST_HEADERS:User-Agent "Baiduspider-image" phase:1,deny,nolog,id:"6977" SecRule REQUEST_HEADERS:User-Agent "sogou spider" phase:1,deny,nolog,id:"6978" SecRule REQUEST_HEADERS:User-Agent "YoudaoBot" phase:1,deny,nolog,id:"6979" SecRule REQUEST_HEADERS:User-Agent "bingbot(at)microsoft.com" phase:1,deny,nolog,id:"6980" SecRule REQUEST_HEADERS:User-Agent "msnbot(at)microsoft.com" phase:1,deny,nolog,id:"6981" SecRule REQUEST_HEADERS:User-Agent "BLEXBot/1.0" phase:1,deny,nolog,id:"6982" SecRule REQUEST_HEADERS:User-Agent "Bot.*" phase:1,deny,nolog,id:"6984" SecRule REQUEST_HEADERS:User-Agent "AhrefsBot.*" phase:1,deny,nolog,id:"6985"
E nosso mod-evasive.conf
DOSHashTableSize 2048 DOSPageCount 10 DOSSiteCount 300 DOSPageInterval 2.0 DOSSiteInterval 1.0 DOSBlockingPeriod 600.0 DOSLogDir /var/log/apache2/evasive DOSWhitelist 127.0.0.1 DOSWhitelist 1xx.xxx.xxx.xx
Eu também esqueci uma possibilidade muito real. Se você não negocia com a China ou está executando o seu servidor doméstico, bloqueie o país inteiro. O nível de ataques e malware que vem deles justificou muitos profissionais a fazer isso.
http://www.cyberciti.biz/faq/block-entier-country-using-iptables/
Eu também esqueci de adicionar uma nota de rodapé a esta resposta bastante longa.Freqüentemente, as pessoas me sugerem no trabalho para usar o robots.txt para esse tipo de problema. A questão é que o robots.txt é apenas uma sugestão para programas remotos. Atores desonestos certamente os ignoram, e não é garantido que outros rastreadores da web os honrem atualmente. Em nossos testes, por exemplo, o Baidu parece não honrá-los. (robots.txt é o mesmo que perguntar a um gangster, por favor, faça cócegas em vez de me socar)
Comentários
- Obrigado cara! sim, eu ‘ vou usar o mod_evasive, essas configurações de arquivo funcionam bem para você?
- Elas funcionam muito bem, a maioria de nossos vhosts não tem muito visitantes. Caso contrário, você terá que aumentar dospagecount (visitas máximas a uma única página de um IP) e dossitecount (visitas máximas de e IP) de acordo.
- Olhe para as minhas primeiras linhas novamente. > Entendi que faz sentido, ‘ irei ler as configurações. Obrigado novamente por toda a sua ajuda!
- (não entenda mal, apenas sugerir bloqueio de endereços no servidor web ou Apache poderia ser um título melhor) … no entanto, não foi por este comentário que vim aqui novamente, leia a resposta novamente, por favor. Além dos comentários no início, você encontrará algo mais interessante no final.
iptables -A INPUT -s 117.25.128.0/24 -j DROP
, mas isso não ‘ bloqueou.-I INPUT
insere a nova regra no topo da cadeia INPUT.-A INPUT
adiciona ao final da cadeia. se-A INPUT
não ‘ funcionar, deve ter havido alguma outra regra anterior na cadeia que permitia esses pacotes.