Mój serwer jest pod atakami DDOS i chcę zablokować IP, który to robi, jakich dzienników powinienem szukać w celu ustalenia adresu IP atakującego?
Mój serwer jest pod atakami DDOS i chcę zablokować IP, który to robi, jakich dzienników powinienem szukać w celu ustalenia adresu IP atakującego?
Odpowiedzi:
tail -n 10000 yourweblog.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more
Spójrz na najlepsze adresy IP. Jeśli coś wyróżnia się spośród innych, to te zapory ogniowe.
netstat -n|grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more
Spowoduje to sprawdzenie aktualnie aktywnych połączeń, aby sprawdzić, czy są jakieś adresy IP łączące się z portem 80. Może być konieczna zmiana cut -c 45-, ponieważ adres IP może nie zaczynać się w kolumnie 45. Jeśli ktoś robił zalew UDP, aby twój serwer WWW, to też by to podniosło.
Przy małej szansie, że żaden z tych adresów IP nie będzie nadmiernie wykraczał poza normę, musisz założyć, że masz atakującego cię botnetu i musisz poszukać określonych wzorców w logach, aby zobaczyć, co robią. Typowy atak na witryny Wordpress to:
GET /index.php? HTTP/1.0
Jeśli przejrzysz dzienniki dostępu do swojej witryny, możesz zrobić coś takiego:
cut -f 2 -d '"' yourweblog.log|cut -f 2 -d ' '|sort|uniq -c|sort -nr|more
które pokażą Ci najczęściej trafiane adresy URL. Może się okazać, że uderzają w określony skrypt, a nie ładują całą witrynę.
cut -f 4 -d '"' yourweblog.log|sort|uniq -c|sort -nr|more
pozwoli ci zobaczyć wspólnych UserAgents. Możliwe, że używają jednego UserAgent w swoim ataku.
Sztuką jest znaleźć coś wspólnego z ruchem ataku, który nie istnieje w normalnym ruchu, a następnie filtrować to przez iptables, mod_rewrite lub upstream z twoim hostem. Jeśli trafia Cię Slowloris, Apache 2.2.15 ma teraz moduł reqtimeout, który pozwala skonfigurować niektóre ustawienia w celu lepszej ochrony przed Slowloris.
Kilka dobrych wskazówek tutaj. Dodałbym również:
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 ""}'\''
Umieść to pod aliasem (na przykład nn). To da ci „graficzną” perspektywę ips z bardziej ustanowionymi połączeniami.
Mam nadzieję że to pomoże.
Dla tych, którzy nie mogli tego uruchomić, poprawiłem składnię, więc działa ona dla mnie pod 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 ""}'
w celu ochrony mojego serwera używam prostego skryptu Fail2Ban
skanuje pliki dziennika, takie jak / var / log / pwdfail lub / var / log / apache / error_log i blokuje IP, co powoduje zbyt wiele błędów hasła. Aktualizuje reguły zapory, aby odrzucić adres IP.
Która dystrybucja?
Myślę, że dziennik znajduje się w katalogu /var/log/apache2/access.log w systemie Ubuntu ... Prawdopodobnie również w Debianie.
Uruchom updatedb as sudo, a następnie zlokalizuj access.log z wiersza poleceń.
EDYCJA: Uważam, że stanie się tak tylko wtedy, gdy uderzą cię albo przez strony, albo bezpośrednio przez port 80. Jeśli uderzają w inne porty, nie zobaczysz tam potrzebnych informacji, będziesz musiał sprawdzić, który proces jest działający na tym porcie i spójrz na dzienniki połączeń dla tego procesu.
Jeśli korzystasz z rozproszonego DOS, na pewno jest więcej niż jeden adres IP do zablokowania i adresy IP mogą zostać sfałszowane, lepiej zapytaj swojego dostawcę usług internetowych, jak powiedział mfinni . Może to być coś więcej niż DOS przeciwko serwerowi, ale wabik, aby ukryć prawdziwy atak przed wykryciem, więc sprawdź, czy wszystkie ujawnione usługi są uruchamiane przez aktualne oprogramowanie. Możesz być także zainteresowany mod_dosevasive dla apache.
Najpierw musisz określić typ DOS. Niektóre ataki są bardzo niewidzialne, ale skuteczne (slowlori), niektóre z nich są tak ciężkie, że mogą obniżyć ISP (powódź ICMP z większej przepustowości niż źródło ISP).
Po określeniu rodzaju DOS, zadzwoń do swojego usługodawcy internetowego i zapytaj go, czy mogą odfiltrować ruch.
Widziałem powodzie ICMP tak duże, że musieliśmy poprosić dostawcę usług internetowych o odfiltrowanie docelowego adresu IP za pośrednictwem społeczności BGP.