Sono stato trollato dalla Cina e non so perché non posso “bloccare la loro richiesta al mio server .
//host.deny
ALL: item.taobao.com ALL: 117.25.128.*
Ma quando guardo il log degli errori sul mio server web tail -f /var/log/apache2/error.log
le richieste sono ancora consentite.
Domanda: Perché la mia configurazione /etc/hosts.deny non funziona?
Risposta
-
Il file si chiama
/etc/hosts.deny
, nonhost.deny
-
Non tutti i servizi utilizzano wrapper tcp.
sshd
, ad esempio, non funziona per impostazione predefinita. Nemmeno apache. -
Puoi utilizzare
iptables
per bloccare tutti i pacchetti da 117.25.128 / 24, ad esempio:iptables -I INPUT -s 117.25.128.0/24 -j DROP
-
Ancora meglio, puoi usare fail2ban per monitorare un file di registro (come access.log di apache e / o error.log) e blocca automaticamente gli indirizzi IP che tentano di attaccare il tuo server.
Dalla fail2ban
descrizione del pacchetto debian:
Fail2ban monitora i file di registro (ad esempio /var/log/auth.log, /var/log/apache/access.log) e vieta temporaneamente o permanentemente gli indirizzi a rischio di errore aggiornando le regole del firewall esistenti.
Fail2ban consente di specificare facilmente le diverse azioni da intraprendere come vietare un IP utilizzando le regole iptables o hosts.deny, o semplicemente inviare une-mail di notifica.
Per impostazione predefinita, viene fornito con espressioni di filtro per vari servizi (sshd, apache, qmail, proftpd, sasl ecc.) ma la configurazione può essere facilmente estesa per monitorare qualsiasi altro file di testo. Tutti i filtri e le azioni sono indicati nei file di configurazione, quindi fail2ban può essere adottato per essere utilizzato con una varietà di file e firewall.
Commenti
Risposta
Per quanto riguarda la tua domanda originale. Il mio Apache in Debian non è configurato con libwrap, quindi non consulta hosts.deny. [La risposta precedente lo menziona già – la realtà è che tcpwrappers non è lepitome della sicurezza come lo era negli anni 90, specialmente quando arriva alla blacklist]. Dovresti eseguirlo non come un demone, ma da (x) inetd, che lo rallenterebbe (considerevolmente).
Puoi bloccare / consentire laccesso a livello di Apache, e fare non ho bisogno di wrapper tcp per Apache [né iptables per quella materia]. Non hai menzionato ssh, tuttavia non ho mai lasciato i server ssh aperti direttamente allesterno. Tuttavia continua a leggere.
Abbiamo un vhost con 300 + domini e anche problemi simili, con taobao, baidu e spesso anche con gli spider di google. In particolare gli spider baidu possono essere piuttosto aggressivi e persistenti.
Come hai già capito, hanno fattorie di server, e anche se blocchi un IP, appariranno di nuovo a breve da altri indirizzi IP.
Non è affatto pratico provare a mantenere lis ts di indirizzi IP / netblock a mano.
Ciò che funziona piuttosto bene per noi è che modsecurity blocca permanentemente le stringhe dellagente utente mentre mod_evasive blocca temporaneamente gli IP che sono offensivi.
Questa configurazione , oltre a rallentare gli spider dei motori di ricerca, ha anche il vantaggio di limitare gli zombi che cercano di indovinare le password sui CMS.
La parte rilevante del nostro 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 il nostro 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
Ho anche dimenticato una possibilità molto reale. Se non hai a che fare con la Cina o stai utilizzando il tuo server di casa, blocca semplicemente lintero paese. Il livello di attacchi e malware che ne derivano ha giustificato molti professionisti a farlo.
http://www.cyberciti.biz/faq/block-entier-country-using-iptables/
Ho anche dimenticato di aggiungere a questa risposta piuttosto lunga una nota a piè di pagina.Spesso le persone mi suggeriscono al lavoro di utilizzare robots.txt per questo tipo di problemi. Il punto è che robots.txt è solo un suggerimento per i programmi remoti: gli attori canaglia certamente li ignorano e non è garantito che altri web crawler li onorino al giorno doggi. Dai nostri test, ad esempio, Baidu sembra non rispettarli. (robots.txt equivale a chiedere a un gangster, per favore solleticami invece di prendermi a pugni)
Commenti
- Grazie amico! sì, ‘ userò mod_evasive, quelle impostazioni del file di configurazione funzionano bene per te?
- Funzionano abbastanza bene, la maggior parte dei nostri vhost non ha molto visitatori. Altrimenti devi aumentare dospagecount (max visite a una singola pagina da un IP) e dossitecount (max visite di e IP) di conseguenza.
- Guarda ancora le mie prime righe per favore.
- Capito che abbia senso, ‘ leggerò le impostazioni. Grazie ancora per tutto il tuo aiuto!
- (non prenderlo male, suggerire solo di bloccare gli indirizzi nel server web o in Apache potrebbe essere un titolo migliore) … tuttavia, non è stato per questo commento che sono venuto qui di nuovo, leggi di nuovo la risposta per favore. Oltre ai commenti allinizio, troverai qualcosa di più interessante alla fine.
iptables -A INPUT -s 117.25.128.0/24 -j DROP
ma neanche ‘ lo ha bloccato.-I INPUT
inserisce la nuova regola allinizio della catena INPUT.-A INPUT
lo aggiunge in fondo alla catena. se-A INPUT
‘ non funzionava, doveva esserci stata qualche altra regola allinizio della catena che consentiva quei pacchetti.