Ataki DDoS (Distributed Denial of Service) wykorzystujące nieuczciwe taktyki komunikacji cyfrowej, powodują przeciążenie zasobów serwera. Tego typu ataki to zorganizowane naloty na świat komputerowy. Niezliczone akty paskudnego sprzeciwu tworzą zagrożenie na tyle potężne, że zmuszają serwer do zatrzymania.
Co najgorsze, istnieje wiele sposobów prowadzenia „wojen” w sieci partyzanckiej przeciwko takim gospodarzom. Na szczęście serwery można skonfigurować tak, aby były odporne na takie ataki.
Nginx, bardzo popularny system serwerowy dla maszyn Unix, ma wystarczającą liczbę wbudowanych funkcji, aby znacznie ograniczyć skuteczność ataków DDoS.
Oto kilka skutecznych opcji radzenia sobie z takimi zagrożeniami za pomocą Nginx.
Jak zapobiegać atakom DDoS za pomocą Nginx?
Kopia zapasowa plików konfiguracyjnych
Zanim zmienisz jakiekolwiek ustawienia, pamiętaj o wykonaniu szybkiej kopii zapasowej konfiguracji serwera. W tym celu działa następujące polecenie:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

Po zakończeniu możesz kontynuować.
Sprawdź ruch
Monitorowanie ruchu na serwerze ułatwia optymalizację bezpieczeństwa i wdrażanie dodatkowych strategii. Nginx posiada moduł stworzony specjalnie do tego celu.
Skonfiguruj stronę stanu
Nginx zwykle jest wyposażony w moduł o nazwie „status stub” (http_stub_status_module), który umożliwia dość łatwą integrację tego typu funkcjonalności ze środowiskiem serwerowym. Najpierw przetestuj go za pomocą następującego polecenia:
nginx -V
![Jak zapobiegać atakom DDoS za pomocą Nginx Jak zapobiegać atakom DDoS za pomocą Nginx]()
Lub użyj następującego polecenia, aby znaleźć go szybciej:
nginx -V 2>&1 | grep -o with-http_stub_status_module
![Jak zapobiegać atakom DDoS za pomocą Nginx Jak zapobiegać atakom DDoS za pomocą Nginx]()
Jeśli wynik wygląda tak jak powyżej, wszystko jest w porządku. W przeciwnym razie będziesz musiał zainstalować lub ponownie skompilować instalację Nginx za pomocą dołączonego modułu.
Konfigurowanie strony stanu, którą możesz sprawdzić, jest proste, ale musisz także ograniczyć dostęp do minimum (tylko komputer), aby zachować bezpieczeństwo. Zacznij od otwarcia głównego pliku konfiguracyjnego serwera znajdującego się w /etc/nginx/nginx.conf.
Otwórz go i dodaj następujący kod do „dyrektywy http” , aby włączyć moduł, zastępując własne informacje w „localhost”, „/status_page” i „127.0.0.1”.
server {
listen 80;
listen [::]:80;
server_name localhost;
##
# Status Page Settings
##
location /status_page {
stub_status on;
allow 127.0.0.1;
allow ::1;
deny all;
}
}
Uwaga : aby zmodyfikować ten plik, będziesz potrzebować uprawnień sudo.
![Jak zapobiegać atakom DDoS za pomocą Nginx Jak zapobiegać atakom DDoS za pomocą Nginx]()
Teraz przetestuj swoją konfigurację:
sudo nginx -t
![Jak zapobiegać atakom DDoS za pomocą Nginx Jak zapobiegać atakom DDoS za pomocą Nginx]()
Jeśli wszystko jest w porządku, wyślij serwerowi sygnał przeładowania:
sudo systemctl reload nginx
![Jak zapobiegać atakom DDoS za pomocą Nginx Jak zapobiegać atakom DDoS za pomocą Nginx]()
Aby uzyskać dostęp do strony statusu, odwiedź lokalizację nazwa_serwera , po której następuje „/strona_statusu” w przeglądarce internetowej lub za pomocą narzędzia wiersza poleceń, takiego jak curl. (Jest to przydatne, jeśli pamięć podręczna przeglądarki nie jest automatycznie aktualizowana). Oto polecenie curl umożliwiające dostęp do strony z przykładów:
curl localhost/status_page
![Jak zapobiegać atakom DDoS za pomocą Nginx Jak zapobiegać atakom DDoS za pomocą Nginx]()
W przeglądarce dane wyjściowe powyższego polecenia wyglądają jak na poniższym obrazku.
![Jak zapobiegać atakom DDoS za pomocą Nginx Jak zapobiegać atakom DDoS za pomocą Nginx]()
Sprawdź logi dostępu
Jeśli zauważysz nietypowy ruch podczas sprawdzania skonfigurowanej powyżej strony stanu, możesz sprawdzić dziennik dostępu serwera. Dziennik dostępu do serwera można znaleźć pod adresem „/var/log/nginx/access.log”. Dziennik zawiera listę używanych metod HTTP, datę/godzinę prób dostępu, agenta użytkownika i odwiedzone strony.
![Jak zapobiegać atakom DDoS za pomocą Nginx Jak zapobiegać atakom DDoS za pomocą Nginx]()
Limity połączeń
Wśród wielu przydatnych taktyk zapobiegania atakom DDoS, które warto wypróbować, jedną z najprostszych i najskuteczniejszych jest ograniczenie natężenia ruchu przychodzącego.
Idealnym rozwiązaniem byłoby ograniczenie dostępu na tyle, aby zapobiec przytłaczaniu serwera przez złośliwe boty, przy jednoczesnym zachowaniu rozsądnych stawek. W Nginx można to zrobić za pomocą dyrektyw limit_req_zone i limit_req . Poniższy kod ustawia ograniczenia pamięci i szybkości do użycia w dowolnej lokalizacji, w której serwer jest skonfigurowany do wyświetlania:
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
„Strefa” określa nazwę i pojemność (w tym przypadku w megabajtach) przestrzeni pamięci, w której przechowywane są żądania użytkownika. „Rate” określa całkowitą liczbę żądań, które Nginx zaakceptuje na sekundę (w tym przykładzie 10 żądań). Pomyśl o tym kodzie jako o zasadzie, a poniżej znajdziesz zastosowanie tej reguły:
limit_req zone=speedbump burst=20;
Powyższy kod w rzeczywistości robi trochę więcej niż tylko implementację reguły ograniczającej. Dodaje także małą kolejkę składającą się z maksymalnie 20 żądań, aby bezpiecznie obsługiwać legalne połączenia, które renderują się nieco szybciej niż normalnie, przekraczając zarówno reguły, jak i kolejkę, co skutkuje błędem 503 dla klienta. Obie dyrektywy wyglądają tak w pliku nginx.conf:
![Jak zapobiegać atakom DDoS za pomocą Nginx Jak zapobiegać atakom DDoS za pomocą Nginx]()
Utwórz czarną listę adresów IP
Jeśli zdobędziesz adres IP , który przeprowadza atak DDoS na Twój serwer, możesz po prostu umieścić go na czarnej liście i wyeliminować wszelkie połączenia pochodzące z tego adresu IP.
Dodaj następujący kod do dyrektywy serwera:
location / {
deny 123.123.123.0/28;
# ...
}
Blokuj żądania dotyczące niektórych plików
Jeśli celem ataku DDoS są określone pliki na serwerze - na przykład plik xmlrpc.php na WordPressie (jest to plik często atakowany na większości serwerów WordPress), możesz zablokować je wszystkie, spełniając wszystkie wymagania. Dodaj ten kod do dyrektywy serwera:
location /xmlrpc.php {
deny all;
}
Postępuj zgodnie z powyższym procesem, a będziesz w stanie ograniczyć większość ataków DDoS. Koniecznie zapoznaj się z dokumentacją Nginx , aby poznać dodatkowe opcje bezpieczeństwa, które możesz zastosować.
Mam nadzieję, że odniesiesz sukces.