Slowloris – cichy zabójca serwerów WWW
Slowloris to atak, który potrafi skutecznie zablokować działanie serwera WWW, zużywając przy tym zaskakująco mało zasobów. Poznaj mechanizm działania Slowlorisa i dowiedz się, jak chronić swoje serwery przed tym zagrożeniem.
Czym jest Slowloris?
Slowloris to atak DoS, który może także przybrać formę ataków DDoS (Distributed Denial of Service) na serwery WWW. Został odkryty przez Roberta “RSnake” Hansena w 2009 roku. Nazwa Slowloris pochodzi od zwierzęcia – leniwca, charakteryzującego się powolnymi, oszczędnymi ruchami. I rzeczywiście, atak Slowloris polega na powolnym, ale systematycznym wyczerpywaniu zasobów serwera, doprowadzając ostatecznie do jego przeciążenia i odmowy świadczenia usług (stąd Denial of Service).
Istotą ataku Slowloris jest nawiązanie wielu równoległych, niekompletnych połączeń HTTP z serwerem ofiary i podtrzymywanie ich jak najdłużej. Atakujący może wysyłać niepełne nagłówki HTTP, co sprawia, że serwer utrzymuje otwarte połączenia, oczekując na dokończenie żądań, co nigdy nie następuje. W ten sposób wątek serwera jest blokowany. Atakujący cyklicznie dosyła kolejne nagłówki, aby połączenia nie wygasły po przekroczeniu limitu czasu. Stopniowo coraz więcej wątków serwera jest blokowanych, aż w końcu nie jest on w stanie obsługiwać nowych, prawdziwych żądań od użytkowników – następuje odmowa usługi.
Kluczową cechą Slowlorisa jest to, że do przeprowadzenia skutecznego ataku DoS wystarcza przepustowość rzędu kilku kb/s. Atakujący nie musi więc dysponować potężną łączem internetowym ani armią zombie-komputerów, aby zablokować serwer. Co więcej, ruch generowany przez Slowlorisa jest na tyle niewielki, że może pozostać niezauważony, zwłaszcza gdy atakujący rozkłada go na wiele adresów IP.
Jak działa Slowloris?
Atak Slowloris przebiega w następujących krokach:
- Atakujący otwiera wiele równoległych połączeń TCP do serwera ofiary na port 80 (HTTP) lub 443 (HTTPS).
- Dla każdego połączenia atakujący wysyła niepełne żądanie HTTP – tylko część nagłówków, bez pustej linii oznaczającej koniec nagłówków. Przykładowo:
GET / HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 Content-Length: 42 X-a: b - Serwer alokuje wątek dla obsługi każdego z tych połączeń i czeka na dokończenie żądania HTTP – na kolejne nagłówki i pustą linię.
- Atakujący co jakiś czas (np. co 10 sekund) dosyła pojedyncze nagłówki HTTP do istniejących połączeń, aby serwer nie zamknął ich po przekroczeniu limitu czasu. Przykładowo:
X-c: d - Serwer utrzymuje połączenia otwarte, oczekując na zakończenie żądań. Stopniowo coraz więcej wątków serwera jest blokowanych.
- Gdy wszystkie wątki serwera zostaną zablokowane, nie jest on w stanie obsługiwać nowych żądań i następuje odmowa usługi.
Atakujący może podtrzymywać atak godzinami, cały czas blokując serwer minimalnym kosztem własnych zasobów. Co istotne, logi serwera nie będą zawierać żadnych podejrzanych wpisów, gdyż niedokończone żądania Slowloris nie są w nich rejestrowane.
Podatność serwerów na atak Slowloris
Pierwotnie Slowloris został zaprojektowany do atakowania serwerów Apache w wersjach 1.x i 2.x. Wynika to z tego, jak Apache zarządza pulą wątków i obsługuje żądania HTTP. Domyślna konfiguracja Apache jest podatna na atak Slowloris.
Z czasem okazało się jednak, że na Slowlorisa wrażliwe są także inne popularne serwery WWW:
- Apache 1.x, 2.x
- dhttpd
- GoAhead WebServer
- Tomcat 5.5.x, 6.0.x, 7.0.x
- Jetty 6.1.x
- Lighttpd
- Microsoft IIS 6.0
- Nginx (w niektórych konfiguracjach)
Natomiast serwery takie jak Microsoft IIS 7.0+, lighttpd, Cherokee czy Cisco CSS są odporne na Slowlorisa dzięki odmiennej architekturze obsługi żądań.
Jak bronić się przed atakiem Slowloris?
Istnieje kilka sposobów na zabezpieczenie serwera Apache i innych podatnych serwerów przed atakiem Slowloris:
Ograniczenie liczby połączeń z jednego adresu IP
Można skonfigurować serwer tak, aby akceptował tylko ograniczoną liczbę równoległych połączeń z jednego adresu IP. Wymaga to użycia odpowiedniego modułu, np. w Apache będzie to mod_limitipconn, mod_qos, mod_evasive lub mod_security. Wadą tego rozwiązania jest to, że atakujący może rozkładać atak na wiele adresów IP, omijając ten limit.
Zwiększenie minimalnej prędkości transferu
Innym sposobem jest wymuszenie, aby klient wysyłał dane z określoną minimalną prędkością, np. 1 kb/s. Jeśli klient nie dotrzyma tego wymogu, serwer zamknie połączenie. Takie zachowanie można uzyskać np. za pomocą modułu mod_reqtimeout w Apache 2.2.15+. To rozwiązanie utrudnia atak Slowloris, ale nie eliminuje go całkowicie.
Użycie reverse proxy lub firewalla aplikacji
Skuteczną ochronę przed Slowlorisem zapewniają wyspecjalizowane narzędzia, takie jak reverse proxy (np. HAProxy, Nginx) czy firewalle aplikacji webowych (WAF). Mogą one wykrywać i blokować niepełne żądania HTTP oraz podejrzane wolne połączenia. Stanowią dodatkową warstwę zabezpieczeń przed atakami DDoS.
Metoda ochrony | Zalety | Wady |
Ograniczenie liczby połączeń per IP | Proste w implementacji | Można ominąć atakiem z wielu adresów IP |
Minimalna prędkość transferu | Nie wymaga dodatkowych narzędzi | Nie eliminuje ataku całkowicie |
Reverse proxy / WAF | Skuteczne wykrywanie ataków | Dodatkowy komponent infrastruktury |
Warto pamiętać, że nie ma jednego niezawodnego sposobu na obronę przed Slowlorisem. Najlepsze rezultaty daje połączenie kilku technik dostosowanych do specyfiki danego serwisu WWW. Ważne jest regularne aktualizowanie oprogramowania serwera i jego modułów zabezpieczających oraz monitorowanie ruchu pod kątem anomalii, które mogą wskazywać na atak DDoS.
Podsumowanie
Atak Slowloris pokazuje, że do zablokowania serwera WWW wcale nie potrzeba ani botnetu, ani dużej przepustowości łącza. Wystarczy sprytnie wykorzystać podatności w implementacji protokołu HTTP przez serwery, aby niewielkim kosztem odciąć dostęp do usługi. Choć od publikacji Slowlorisa minęło już ponad 10 lat, wciąż wiele serwerów pozostaje podatnych na ten typ ataku.
Slowloris jest świetnym przykładem na to, jak ważna jest dogłębna znajomość działania używanych technologii i protokołów. Tylko rozumiejąc potencjalne wektory ataku, można skutecznie zabezpieczyć systemy przed cyber-zagrożeniami. Dlatego tak istotna jest ciągła edukacja w zakresie cyberbezpieczeństwa. Jeśli chcesz poszerzyć swoją wiedzę na ten temat, zachęcamy do skorzystania z kursów oferowanych przez HackerU – lidera w szkoleniach specjalistów ds. bezpieczeństwa IT.