Editando meu /etc/hosts.deny

3

Estou sendo controlado pela China e não sei por que não posso bloquear a solicitação deles para o meu servidor.

// host.deny

ALL: item.taobao.com
ALL: 117.25.128.*

Mas quando vejo o log de erros no meu servidor tail -f /var/log/apache2/error.log , as solicitações ainda são permitidas.

Pergunta: Por que minha configuração /etc/hosts.deny não está funcionando?

    
por Jordan Davis 17.11.2015 / 04:52

2 respostas

11
  1. O arquivo é chamado /etc/hosts.deny , não host.deny

  2. Nem todos os serviços usam wrappers tcp. sshd , por exemplo, não é por padrão. Nem o apache.

  3. 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
    
  4. Ainda melhor, você pode usar o fail2ban para monitorar um arquivo de log (como o access.log e / ou o erro do apache. log) e automaticamente bloquear endereços IP tentando atacar seu servidor.

A partir da descrição do pacote debian fail2ban :

Fail2ban monitors log files (e.g. /var/log/auth.log, /var/log/apache/access.log) and temporarily or persistently bans failure-prone addresses by updating existing firewall rules.

Fail2ban allows easy specification of different actions to be taken such as to ban an IP using iptables or hosts.deny rules, or simply to send a notification email.

By default, it comes with filter expressions for various services (sshd, apache, qmail, proftpd, sasl etc.) but configuration can be easily extended for monitoring any other text file. All filters and actions are given in the config files, thus fail2ban can be adopted to be used with a variety of files and firewalls.

    
por 17.11.2015 / 05:08
3

Quanto à sua pergunta original. Meu Apache no debian não está configurado com o libwrap, portanto não consultará hosts.deny. [a resposta anterior já menciona - a realidade é que tcpwrappers não é o epítome da segurança como era nos anos 90, especialmente quando se trata de listas negras]. Você teria que executá-lo não como um daemon, mas de (x) inetd, o que diminuiria a velocidade (consideravelmente).

Você pode bloquear / permitir acesso no nível do Apache e não precisa de wrappers tcp para o Apache [nem iptables para esse assunto]. Você não mencionou o ssh, mas nunca deixo servidores ssh abertos diretamente para o exterior. No entanto, continue lendo.

Temos um vhost com mais de 300 domínios e também problemas semelhantes, com taobao, baidu e, muitas vezes, até mesmo com aranhas do google. Notavelmente as aranhas baidu podem ser bastante agressivas e persistentes.

Como você já descobriu, eles têm farms de servidores e, mesmo que você bloqueie um IP, eles aparecerão novamente em breve de alguns outros endereços IP.

Não é prático tentar manter listas de endereços IP / netblocks manualmente.

O que funciona bastante bem para nós é que o modsecurity bloqueia 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 retardar as aranhas dos mecanismos de busca, também tem a vantagem de diminuir os zumbis tentando adivinhar as senhas nos CMSs.

A parte relevante do 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 o 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 lidar com a China ou estiver executando o seu servidor doméstico, apenas bloqueie todo o país. O nível de ataques e malware que vem deles justificou muitos profissionais para fazer isso.

link

Eu também esqueci de acrescentar a esta longa resposta uma nota de rodapé. Muitas vezes, as pessoas me sugerem no trabalho para usar o robots.txt para esse tipo de problema. O ponto é que o robots.txt é apenas uma sugestão para programas remotos. Atores de renome certamente os ignoram, e não é garantido que outros rastreadores da Web os honrem hoje em dia. De nossos testes, por exemplo, o Baidu parece não honrá-los. (robots.txt equivale a perguntar a um gangster, por favor, me agrade em vez de me socar)

    
por 17.11.2015 / 06:10