Il mio server è sotto attacco DDOS e voglio bloccare l'IP che lo sta facendo, quali log dovrei cercare per determinare l'IP dell'attaccante?
Il mio server è sotto attacco DDOS e voglio bloccare l'IP che lo sta facendo, quali log dovrei cercare per determinare l'IP dell'attaccante?
Risposte:
tail -n 10000 yourweblog.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more
Dai un'occhiata ai migliori indirizzi IP. Se qualcuno si distingue dagli altri, quelli sarebbero i firewall.
netstat -n|grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more
Questo esaminerà le connessioni attualmente attive per vedere se ci sono IP che si collegano alla porta 80. Potrebbe essere necessario modificare il taglio -c 45- poiché l'indirizzo IP potrebbe non iniziare nella colonna 45. Se qualcuno stava eseguendo un flood UDP a il tuo server web, anche questo lo prenderebbe.
Nel caso in cui nessuno di questi mostri alcun IP che sia eccessivamente fuori norma, dovresti presumere che hai una botnet che ti sta attaccando e dovresti cercare particolari schemi nei log per vedere cosa stanno facendo. Un attacco comune contro i siti wordpress è:
GET /index.php? HTTP/1.0
Se guardi attraverso i log di accesso per il tuo sito Web, potresti essere in grado di fare qualcosa del tipo:
cut -f 2 -d '"' yourweblog.log|cut -f 2 -d ' '|sort|uniq -c|sort -nr|more
che ti mostrerebbe gli URL colpiti più comunemente. Potresti scoprire che stanno colpendo un particolare script anziché caricare l'intero sito.
cut -f 4 -d '"' yourweblog.log|sort|uniq -c|sort -nr|more
ti permetterebbe di vedere gli UserAgent comuni. È possibile che stiano utilizzando un singolo UserAgent nel loro attacco.
Il trucco è trovare qualcosa in comune con il traffico di attacco che non esiste nel tuo traffico normale e quindi filtrarlo attraverso iptables, mod_rewrite o upstream con il tuo webhost. Se vieni colpito da Slowloris, Apache 2.2.15 ora ha il modulo reqtimeout che ti consente di configurare alcune impostazioni per proteggere meglio da Slowloris.
Alcuni buoni consigli qui. Aggiungerei anche questo:
netstat -an | grep ESTABLISHED | awk '\''{print $5}'\'' | awk -F: '\''{print $1}'\'' | sort | uniq -c | awk '\''{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'\''
Metti questo sotto un alias (nn, per esempio). Questo ti darà una prospettiva "grafica" dell'ips con connessioni più stabilite.
Spero che sia di aiuto.
Per coloro che non sono riusciti a farlo funzionare, ho corretto la sintassi in modo che funzioni per me sotto Ubuntu:
netstat -an|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|awk '{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'
I miei file di log preferiti per verificare gli attacchi DOS sono / var / log / secure (sotto Redhat / Centos / Fedora ....) e /var/log/auth.log (sotto ubuntu, debian ...). Vedrai tentativi di accesso non riusciti effettuati dall'IP di origine dell'attaccante, la maggior parte delle volte attacchi basati su dizionario.
per proteggere il mio server uso Fail2Ban un semplice script
analizza i file di registro come / var / log / pwdfail o / var / log / apache / error_log e vieta l'IP che causa troppi errori di password. Aggiorna le regole del firewall per rifiutare l'indirizzo IP.
Quale distro?
Penso che il registro sia in /var/log/apache2/access.log con Ubuntu ... Forse anche Debian.
Esegui updateb come sudo quindi individua access.log dalla riga di comando.
EDIT: credo che questo accadrà solo se ti stanno colpendo o richiedendo pagine o direttamente attraverso la porta 80. Se stanno colpendo altre porte non vedrai le informazioni che ti servono lì dovrai controllare e vedere quale processo è in esecuzione su quella porta e dai un'occhiata ai log di connessione per quel processo.
Se sei sotto un DOS distribuito, c'è sicuramente molto più di un IP da bloccare e gli IP possono essere falsificati, è meglio chiedere al tuo ISP come ha detto mfinni . Inoltre, questo potrebbe essere più di un DOS contro il tuo server, ma un esca per nascondere il vero attacco dal rilevamento, quindi controlla che tutti i tuoi servizi esposti siano gestiti da software aggiornato. Potresti anche essere interessato a mod_dosevasive per apache.
Per prima cosa devi determinare il tipo di DOS. Alcuni attacchi sono molto furtivi ma efficaci (slowloris), alcuni sono così pesanti che potrebbero far crollare un ISP (inondazioni ICMP da una larghezza di banda maggiore rispetto alla tua fonte ISP).
Dopo aver determinato il tipo di DOS, chiama il tuo ISP e chiedi loro se possono filtrare il traffico.
Ho visto alluvioni dell'ICMP così pesanti che abbiamo dovuto chiedere all'ISP a monte di filtrare l'IP di destinazione tramite una comunità BGP.