Istnieje wiele możliwych ryzyk wynikających z ekspozycji systemów informatycznych  w sieci Internet. Do najlepiej znanych zaliczy można  kradzież bądź manipulację przechowywanymi w nich danymi przeprowadzoną w wyniku ataku w warstw aplikacyjnej. Jednakże również groźna a często nawet generująca większe straty niedostępność systemów będąca konsekwencją udanego ataku typu DOS. 

Czym jest atak DOS? 
Z definicji ataki typu DOS czyli Denial of Service (Odmowa usługi) to ataki polegające na wygenerowaniu przez atakującego tak dużego wolumenu zapytań w stronę atakowanego systemu, że w konsekwencji doprowadza on do jego przeciążenia lub zapchania wykorzystywanego przez niego łącza internetowego i tym samym niedostępności serwowanej usługi.

Ze względu na stosunkowo znaczący przyrost mocy obecnie wykorzystywanych serwerów w wielu przypadkach pojedynczy atakujący nie jest w stanie wygenerować tak dużego wolumenu zapytań aby doprowadzić do przeciążenia jednakże ataki DOS są obecnie rzadko spotykane. Często mamy natomiast do czynienia z  ich pochodną tzw. atakami DDOS czyli Distributed Denial of Serivice.

Klasyczna różnica polega na multiplikacji atakujących. Podczas gdy w przypadku DOS mamy do czynienia z pojedynczym atakującym generującym w zależności od wybranej formy ataku znaczną liczbę zapytań o tyle w przypadku DDOS ta sam liczba zapytań jest zwielokrotniania przez ogromną liczbę atakujących.

Początkowo ataki DDOS przeprowadzane były przez zorganizowane grupy hakerskie starające się pokazać swoją dominację lub też zaprotestować przeciwko konkretnym działaniami atakowanej organizacji. Obecnie jednak atakujący stali się dużo bardziej wirtualnii. W znakomitej większości przypadków hakerzy przed przeprowadzeniem ataku doprowadzają do zainfekowania tysięcy lub nawet milionów nieświadomych niczego użytkowników Internetu (np. wykorzystując do tego specjalnie przygotowanego wirusa). Tak spreparowane komputery staja się atakującymi i w zadanym czasie rozpoczynają bombardowanie celu ogromną liczbą spreparowanych zapytań.

O ważności problematyki ataków DOS we współczesnym świecie znakomicie świadczą wydarzenia z ostatnich lat/miesięcy kiedy to kluczowe serwisy internetowe instytucji polskiej administracji publicznej na kilka tygodniu stały się celem takich ataków. Przez ten okres mogliśmy obserwować powtarzające się okresy dostępności i niedostępności takich stron jak sejm.gov.pl, premier.gov.pl, prezydent.gov.pl i wielu innych. Ze względu na masowy charakter ww. wydarzeń wydaje się właściwym ich dokładniejsze omówienie aby lepiej przybliżyć problematykę tego typu zagrożeń.

Rodzaje ataków DOS
Możliwe do zrealizowania ataki DOS można generalnie podzielić na dwie kategorie tj. ataki w warstwie sieciowej oraz ataki w warstwie aplikacyjnej.  W ramach każdej kategorii istnieje wiele dostępnych form przeprowadzenia samego ataku. Formy bazują na różnych protokołach i ich szczególnych właściwościach. Jednakże każda z nich ma celu albo doprowadzanie do przeciążenia atakowanego urządzenia albo do wyczerpania dostępnego dla niego łącza internetowego. Drugi cel jest niezwykle groźny ze względu na fakt że wyczerpanie dostępnej przepustowości łącza afektuje wszystkie posiadane przez ofiarę system.

Poniżej postaram się w skrócie omówić najczęściej spotykane formy ataków w każdym z dostępnych rodzajów.

Ataki w warstwie sieciowej

TCP SynFlood
Bazujący na strukturze protokołu TCP i wykorzystywanej przez niego formule trój-etapowego nawiązywania połączenia Syn Flood jest jednym z najczęściej spotykanych rodzajów ataków.

Przebiega on w następujący sposób. W pierwszej kolejności atakujący rozpoczyna rozsyłanie w stronę ofiary znaczącej ilości pakietów TCP z ustawioną flagą SYN. Ofiara rozpoznaje ww. pakiety jako próbę chęć nawiązania połączenia w związku z tym zapisuje je do bufora (zwanego backlog i posiadającego ograniczoną pojemność) oznaczając jako SYN-Received i odsyła pakiet z ustawioną flagą SYN-ACK oczekując tym samy na odpowiedź z flagą ACK. Niestety odpowiedź nie jest nigdy odsyłana a każdy nowy pakiet z flaga SYN coraz bardziej zapełnia wspomniany wcześniej backlog.

W momencie gdy brakuje już miejsca na zapis nowych sesji TCP są one odrzucane a dostęp do atakowanego systemu staje się mocno ograniczony.

Ataki typu SynFlood mogą być realizowane na klika sposobów. Przede wszystkim atakujący może rozsyłać pakiety ze swoim prawdziwym źródłowym adresem IP lub też może posługiwać się spoofingiem wstawiając jako źródło wiele różnych nieprawdziwych adresów.

Dodatkowo oba z wymienionych sposobów realizacji SynFlood mogą być wykorzystywane zarówno przez pojedynczego atakującego jako i w strukturze rozproszonej w postaci ataku DDOS.

W sytuacji wykrycia ewentualnego ataku  fakt czy adresy źródłowe są fałszywe czy prawdziwe ma kluczowe znaczenie. W przypadku prawdziwych adresów (zwłaszcza w sytuacji gdy mamy do czynienia z pojedynczym lub kilkoma atakującymi ) możemy łatwo zablokować cały ruch z nich przychodzący i tym samym ostatecznie zablokować dany atak.

Niestety w większości przypadków spotykamy się z bardzo dużą liczbą atakujących posługujących się fałszywymi adresami. W związku z tym aby obronić się przed atakami SynFlood należy podjąć kilka działań zapobiegawczych.

Możliwe jest przeciwdziałania w oparciu o kilka metod. Przede wszystkim można próbować zwiększać pojemność backloga oraz zmniejszać czasy wygasania sesji Syn-Received. Jednakże praktyka pokazuje, że takie działania są nieefektywne a w wielu przypadkach mogą prowadzić do nieprzewidzianych problem.

Najskuteczniejszą metodą obrony jest zastosowanie wyspecjalizowanych mechanizmów dostępnych we współczesnych routerach i zaporach sieciowych.  Urządzenia tego typu wykorzystują funkcjonalność TCP proxy i są wstanie aktywnie i niezwykle skutecznie przeciwdziałać SynFlood. Mechanizm TCP proxy może działać w dwóch trybach.

Najskuteczniejszą metodą obrony jest zastosowanie wyspecjalizowanych mechanizmów dostępnych we współczesnych routerach i zaporach sieciowych. Urządzenia tego typu wykorzystują funkcjonalność TCP proxy i są wstanie aktywnie i niezwykle skutecznie przeciwdziałać SynFlood. Mechanizm TCP proxy może działać w dwóch trybach.

W pierwszym każda sesja TCP kierowana w stronę chronionego serwera jest przechwytywana przez firewall który w imieniu serwera wysyła pakiet z flagą SYN-ACK. Jeżeli firewall otrzyma pakiet odpowiedzi z flagą ACK przesyła on w imieniu inicjującego połączenie pakiet SYN do chronionego serwera po czym odpowiada pakietem ACK.

W ten sposób nawiązana zostaje sesje TCP pomiędzy inicjatorem a chronionym serwerem która od tego momentu traktowana jest przez firewall jako bezpieczna.
Jeżeli natomiast inicjator nie odpowie na odesłany przez firewall pakiet z flagą SYN-ACK po upływie określonego okresu połowicznie nawiązana sesja zostanie usunięta.

W drugim trybie firewall działa jako aktywny monitor nawiązywanych sesji TCP. Każdy nowy pakiet TCP SYN jest przesyłany do chronionego serwera a sesja jest monitorowana pod kątem otrzymania odpowiedzi inicjatora na pakiet SYN-ACK odesłany przez serwer.
Jeżeli firewall wykryje pakiet ACK sesja uznawana jest za bezpieczną jeżeli natomiast po upływie określonego okresu odpowiedź nie nadejdzie firewall w imieniu inicjatora wyśle do chronionego serwera pakiet TCP RST aby zamknąć półotwarta sesję.

UDP/ICMP Flood
Innymi często stosowanymi i ciekawymi przykładami ataków DOS w warstwie sieciowej są ataki wykorzystujące protokół UDP oraz protokół ICMP. Oba typy ataków najczęściej wykorzystywane są jako ataki DDOS ze względu na fakt, że ich skuteczność warunkowane jest sytuacją w której suma przepustowości łącza atakującego/-ych jest wyższa niż wartość przepustowości łącza ofiary. Oczywiście ataki zmierzają do zapełnienia łączą wykosztowanego przez atakowany system.

Mechanizm działania ICMP Flood jest niezwykle prosty lecz  w wielu przypadkach bardzo skuteczny.
W jednym czasie grupa atakujących komputerów zaczyna wysyłać w stronę ofiary ogromną liczną zapytań typu ICMP Echo-Request (popularny ping). Odpowiedzi generowane przez ofiarę zajmują jej zasoby lecz w szczególności ze względu na swój duży wolumen angażują przepustowość łącza.

Ataki wykorzystujące protokół UDP mają podobna strukturę. Atakujący generują w kierunku ofiary dużą liczbę pakietów UDP skierowanych na losowo wybrane numery portów. Ofiara sprawdza czy na zadanych portach są dostępne usługi i jeżeli nie odsyła komunikat ICMP z informacja Service unavaiable.
Ponownie znaczny wolumen zapytań doprowadza do przeciążenia ofiary i zajęcia wykorzystywanego przez nią łącza internetowego.

Obrona przed ww. typami ataków jest zasadniczo niezwykle prosta. Wystarczy na wykorzystywanych firewall (o ile na to pozwalają) limitować liczbę pakietów ICMP/UDP przesyłanych w kierunku chronionego serwera w zadanym interwale czasowym. Limit powinien być ustawiony na podstawie diagnozy jaka wartość jest akceptowalna dla wykorzystywanego przez nas środowiska.
Dodatkowo najprostszym z dostępnych rozwiązań jest całkowite ograniczenie ruchu ICMP oraz UDP (na wybranych portach) pochodzącego z Internetu.

Ataki DOS w warstwie aplikacyjnej
Znacznie groźniejszymi i trudniejszymi w przeciwdziałaniu są ataki DOS wykorzystujące protokoły warstwy aplikacyjnej tj. np. HTTP, FTP etc.

Najprostszym i najczęściej spotykanym atakiem (ten typ ataku wykorzystywany był w opisywanych wcześniej atakach na strony polskiej administracji) jest DDOS polegający na próbie nawiązania bardzo dużej liczny sesji HTTP z atakowanym serwerem WWW np. poprzez wielokrotne pobieranie jednej z serwowanych przez niego stron (np. index.php choć lepiej jeżeli jest to strona i większej wadze (w KB)).

W sytuacji zmasowanego ataku wykorzystującego ogromna liczbę przykładowo zawirusowanych wcześniej komputerów ofiara będzie odpowiadać do momentu osiągnięcia liczby możliwych obsługiwanych sesji lub też do czasu całkowitej utylizacji wykorzystywanego przez nią łącza.

Podczas wspominanych ataków hakerzy umieścili na kilku serwerach (botach) wcześniej spreparowany skrypt (plik index.php), który wywołany (najprawdopodobniej przez zawirusowane komputery lecz również przez fizycznych atakujących) rozpoczynał w pętli znaczną ilość pobrań strony tytułowej atakowanego serwisu w wielu przypadkach skutecznie doprowadzając do jego niedostępności.

Problem z ochroną przez atakami w warstwie aplikacji wynika z dużej trudności odróżnienia czy generowane zapytania pochodzą od normalnych użytkowników serwisu  czy też od atakujących. W bardzo wielu przypadkach zapytania pochodzą z klas adresowych ISP w ramach których znajdują się zarówno właściwi użytkownicy jak i hakerzy.

Obrona za pomocą urządzenia typu firewall
Najprostszym mechanizmem obrony jest limitowanie na firewallu liczby możliwych sesji TCP/http etc. skierowanych w stronę chronionego serwera lub też pochodzących z jednego adresu IP.  Tego typu działania może jednak w przypadku znacznie obciążonych serwisów generować wiele zdarzeń o charakterze fałszywie-pozytywnym, zwłaszcza przy limitowaniu adresów źródłowych (zapytania pochodzące z sieci z NAT).

Multiplikacja serwerów
Innymi w miarę skutecznym mechanizmem jest multiplikacja chronionych serwerów i wykorzystywanie sprzętowych/chmurowych rozwiązań rozkładających ruch pomiędzy tak stworzoną farmę. W takiej architekturze należy jednak zapewnić również właściwą przepustowość wykorzystywanego łącza internetowego.

Urządzenia dedykowane do ochrony przed atakiem DOS
Ciekawym mechanizmem ochrony są wprowadzane od niedawne wyspecjalizowane urządzenia przeznaczone tylko i wyłącznie do ochrony przez atakami DOS. Urządzenia tego typu wykorzystują szereg mechanizmów począwszy od cache-ownia i optymalizacji ruchu przez load-balancing i blokowanie ruchu w oparciu o listy reputacyjne i geolokalizacje aż do wykorzystania specjalnych algorytmów heurystycznych analizujących sesje pod katem wykrycia czy zastały rozpoczęte przez człowieka czy też przez skrytp hakerski.

Takie sprzętowe podejście jest dość skuteczne lecz jednocześnie niezwykle drogie i nie chroni w pełni przed każdym atakiem zwłaszcza takim który charakteryzuje się dużą wolumetrią.

Systemy chmurowe
Bardzo skutecznym jest skorzystanie z rozwiązań chmury obliczeniowej i systemów WAF/CDN dostawców ja Akamaii czy Cloudflare. Rozwiązania ze względu na ogromną skalę często dają możliwość skutecznego odparcia ataku lub jego rozłożenia na wiele punktów wejścia.

Czy można się obronić?
Kompleksowa analiza posiadanej infrastruktury wraz z implementacją rekomendowanych rozwiązań i świadomym monitoringiem może pozwolić na znacznie zniwelowanie ryzyka skutecznego ataku DOS. Jednakże, ze względu na mnogość możliwości oraz charakter ataków (zwłaszcza w warstwie aplikacyjnej) nigdy nie będziemy w stanie całkowicie wyeliminować ryzyka, a każdy dostatecznie szeroko zakrojony i rozbudowany atak odniesie skutek.

Michał Kaźmierczyk

CTO w Grupie Enteo/ Certyfikowany instruktor w Arrow ESC/ Dziennikarz w IT Professional/ Autor projektu cloudpoint.pl 

Praktyk, trener i pasjonat wysokiej klasy rozwiązań informatycznych związanych z szeroko rozumianym obszarem bezpieczeństwa sieci i infrastruktury IT, technologii wirtualizacji i przetwarzania w chmurze.
Jako lider techniczny nadzoruje, projektuje i bierze udział w procesie integracji projektów z różnych dziedzin, takich jak cyberbezpieczeństwo, chmura, wirtualizacja i sieci.  

Jako certyfikowany instruktor Vmware prowadzi profesjonalne kursy Vmware z NSX i Data Center Virtualization Tracks.  


To również może Cię zainteresować: 


ERP | CRM | DMS | Enova365 | Aplikacje Dedykowane | Analiza Systemowa | Projektowanie Procesów | Zarządzanie Projektami.

Systemy ERP, CRM, DMS, System Enova365, Aplikacje Dedykowane, Analiza Systemowa, Projektowanie Procesów, Zarządzanie Projektami.

NG Firewall | WAF | Antyspam | NG Endpoint | SIEM | Wirtualizacja | Przechowywanie Danych Sieci LAN Data Center, WLAN | Kopie zapasowe i DR | Audyt Bezpieczeństwa

NG Firewall, Waf, Antyspam, NG Endpoint Siem, Wirtualizacja, Przechowywanie Danych, Sieci LAN, Data Center, WLAN, Audyt Bezpieczeństwa

Chmura prywata | Chmura publiczna
IaaS | PaaS | SaaS | BaaS | DRaaS | Systemy bezpieczeństwa dedykowane dla chmury obliczeniowej

Infrastruktura w modelu Cloud.
IAAS, PAAS, SAAS, BAAS i DRAAS, Systemy bezpieczeństwa dedykowane dla chmury obliczeniowej