Se qualcuno ha provato un attacco di forza nel mio sito Web, come posso bloccarli?
Idealmente, voglio bloccare un IP se ho molte richieste http / Apache in un secondo.
fail2ban può essere configurato per farlo. Puoi configurarlo per attivarsi su una corrispondenza regolare in un file di log e se accade troppe volte al minuto (non sono sicuro se va alla seconda risoluzione ma semplicemente moltiplica quello che stavi pensando al secondo per 60) e può rilasciare l'IP del client nel filtro del pacchetto iptables o qualsiasi altra azione che si desidera intraprendere. Oppure puoi usare il modulo di iptables recente e adattare quello che ho fatto qui per gli attacchi di forza bruta SIP da usare con il tuo server web:
fail2ban è una soluzione facile da implementare in questi casi.
Aggiungi un file block-all-dem-noobs.conf
alla tua directory filter.d
, qualcosa di simile a questo
[Definition]
failregex = ^<HOST> -.*"GET.*
Traduzione: un RegExp per trovare le richieste GET
Quindi crea una nuova voce in jail.conf
, qualcosa di simile a questo
[block-all-dem-noobs]
enabled = true
port = http,https
filter = block-all-dem-noobs
logpath = /var/log/httpd/access.log
maxretry = 100
findtime = 5
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]
Traduzione: guarda il mio file access.log
, quindi blocca per 600 secondi (10 minuti) gli indirizzi IP che hanno effettuato 100 richieste in 5 secondi
Uno dei principali svantaggi, tuttavia, è che questo potrebbe produrre falsi positivi per gli utenti NAT ed, poiché saranno tutti appare come un indirizzo IP.
È possibile configurare il modulo mod_evasive di Apache. Questo modulo fornisce una funzione di base mantenendo una tabella hash di IP e pagine richieste e quando un livello di soglia viene superato su una pagina o su un sito target "bloccherà" l'IP con un errore 403 "Proibito". Per i dettagli di configurazione leggi " Come fermare un attacco DDoS Apache con mod_evasive ".
Leggi altre domande sui tag http apache webserver denial-of-service