Obrona przed atakami DDoS w Linuksie Andrzej Nowak, Tomasz Pot�ga Nie ma w pe�ni skutecznych metod zapobiegania atakom Denial of Service. Gdy strumie� wrogich pakiet�w dotrze do celu, pozostaje tylko przeczeka� atak. Jedynym sposobem zminimalizowania zagro�e� jest zatrzymanie niechcianego ruchu jak najbli�ej miejsca, w kt�rym powstaje. ( --verbose ) spowoduje wy�wietlenie statystyk przep�ywu pakiet�w: $ iptables -L -v Chain INPUT (policy ACCEPT 14M packets, 6G bytes) ... Chain FORWARD (policy ACCEPT 178M packets, 210G bytes) ... Chain OUTPUT (policy ACCEPT 12M packets, 4G bytes) Zwr��my uwag�, �e otrzymane statystyki do- Z artyku�u nauczysz si�... � jak wykrywa� ataki DDoS, � jak broni� si� przed napa�ciami tego typu. Co powiniene� wiedzie�... � jak skonfigurowa�, skompilowa� i zainstalowa� j�dro Linuksa, � posiada� przynajmniej podstawow� wiedz� o linuksowym firewallu � iptables, � czym s� ataki Denial of Service. Page 2 www.hakin9.org 2 Hakin9 Nr 5/2004 O b r o n a www.hakin9.org 3 Hakin9 Nr 5/2004 Obrona przed atakami DDoS tycz� ca�o�ci ruchu sieciowego. Do wykrycia ataku DDoS potrzebne s� tylko informacje o dw�ch rodzajach pakiet�w � ICMP i TCP SYN. W tym celu trzeba za�o�y� nowy �a�cuch, na przyk�ad o nazwie ddos-stats: $ iptables -N ddos-stats W nim w�a�nie znajdowa� si� b�d� liczniki odpowiednich rodzaj�w pa- kiet�w. Najpierw nale�y doda� pu- st� regu�k� zliczaj�c� wszystkie pa- kiety: $ iptables -A ddos-stats Nast�pnie rozka�emy iptables, by osobno liczy� pakiety ICMP: $ iptables -A ddos-stats -p icmp Zaraz potem � pakiety TCP SYN: $ iptables -A ddos-stats -p tcp --syn Charakterystyczny dla ostatnich wy- wo�a� jest brak celu �a�cucha ( -j , -- jump ). Regu�y takie nie zmieniaj� te- go, co dzieje si� z pakietem � powo- duj� jedynie wzrost warto�ci liczni- k�w. Pozostaje wpi�� nowy �a�cuch na pocz�tek istniej�cego; tego, kt�- ry jest badany. W tym przypadku b�- dzie to �a�cuch FORWARD: $ iptables -I FORWARD -j ddos-stats Teraz, by zebra� interesuj�ce infor- macje, znowu trzeba wywo�a� list� regu� iptables. Jednak dane zapisa- ne w mega- lub gigabajtach utrud- nia�yby analiz� wynik�w. Dodatkowy prze��cznik -x ( --exact ) spowoduje wy�wietlenie statystyk nat�enia ru- chu w bajtach (patrz Listing 1): Wyci�gni�cie wniosk�w z wy- �wietlanych w ten spos�b statystyk mo�e sprawi� pewien k�opot � wy- maga samodzielnego obliczenia pro- porcji podejrzanych pakiet�w w sto- sunku do ca�o�ci ruchu sieciowego. Utrudni�oby to ci�g�e monitorowanie zagro�enia atakiem DDoS. Kontrol� mo�na jednak zautoma- tyzowa� za pomoc� prostego skryp- tu. Przyk�adowe narz�dzie zapre- zentowano na Listingu 2 (mo�na je te� znale�� na naszym CD). Wywo�a ono alarm, gdy stosunek badanych pakiet�w do ca�o�ci osi�gnie nie- bezpieczny poziom (w tym wypadku 30 proc.). Warto umie�ci� skrypt w crontabie, aby regularnie kontrolowa� ilo�� niebezpiecznych danych. Jak dzia�a iptables iptables to wbudowany w j�dro Linuksa (od serii 2.4) firewall. Umo�liwia pe�n� kontro- l� nad przychodz�cymi i wychodz�cymi z systemu lub sieci pakietami. Jest te� dosko- na�ym narz�dziem do budowy maskarady NAT (Network Address Translation), umo�- liwiaj�cej udost�pnianie po��czenia z internetem wi�kszej liczbie komputer�w. Firewallem steruje si� za pomoc� regu�, czyli zestaw�w polece�. Podstawowa sk�adnia iptables wygl�da nast�puj�co: iptables -A �a�cuch [opcje] -j decyzja Prze��cznik -A nakazuje firewallowi dodanie regu�y do ich obowi�zuj�cego zestawu. �a�cuch definiuje ruch sieciowy, kt�rego dotyczy regu�a. Mo�e on przyj�� nast�puj�- ce warto�ci: � INPUT � oznacza, �e regu�a dotyczy filtrowania pakiet�w przychodz�cych do kom- putera, na kt�rym dzia�a iptables, � OUTPUT � dotyczy filtrowania ruchu wychodz�cego z komputera, na kt�rym dzia�a iptables, � FORWARD � odpowiada za filtrowanie ruchu w sieci lokalnej, kt�rej udost�pniamy in- ternet poprzez NAT. Ten �a�cuch umo�liwia przekierowywanie lub blokowanie pa- kiet�w wychodz�cych z lokalnej sieci lub do niej trafiaj�cych. Pokazany w og�lnym poleceniu parametr opcje pozwala na doprecyzowanie kryteri�w, wed�ug kt�rych maj� by� filtrowane pakiety: � -p protok� � okre�la protok� sieciowy, kt�rego dotyczy regu�a (na przyk�ad TCP, UDP), � -s adres � okre�la adres �r�d�owy obj�tych regu�� pakiet�w, � --sport port [port:port] � nakazuje stosowanie regu�y dla pakiet�w o poda- nym porcie �r�d�owym; umo�liwia te� wskazanie zakresu port�w (np. --sport 6881:6889 ), � -d adres � okre�la filtrowanie na podstawie docelowego adresu pakietu, � --dport port [port:port] � nakazuje stosowanie regu�y dla pakiet�w o poda- nym docelowym porcie (portach), � -i interfejs � okre�la filtrowanie ruchu przychodz�cego do firewalla tylko na po- dany interfejs; tego parametru u�ywa si� wy��cznie z �a�cuchami INPUT i FOR- WARD, � -o interfejs � nakazuje filtrowanie wy��cznie pakiet�w wychodz�cych z kompu- tera przez podany interfejs sieciowy; ten parametr mo�e by� u�ywany tylko z �a�- cuchem OUTPUT. Ostatni argument -j instruuje firewall, jakie dzia�anie ma wykona� na zdefiniowanych wcze�niej pakietach. Argument ten najcz�ciej wyst�puje z parametrami ACCEPT i DROP . Jak mo�na si� domy�li�, parametr ACCEPT przepuszcza zdefiniowany pakiet, za� DROP � odrzuca. Jak to wygl�da w praktyce? Za��my, �e chcemy zablokowa� wszystkie po��cze- nia komputera o adresie 123.456.78.90 z komputerem, na kt�rym dzia�a iptables: iptables -A INPUT -p tcp -s 123.456.78.90 -j DROP Tak� regu�� najlepiej czyta� od ko�ca, czyli: odrzucamy wszystkie po��czenia z adre- su 123.456.78.90, u�ywaj�ce protoko�u TCP i przeznaczone dla komputera, na kt�rym dzia�a iptables. Linuksowy firewall ma ogromne mo�liwo�ci i brak tu miejsca, by je opisa�. Wi�cej szczeg��w mo�na znale�� w artykule Bezpieczna sie� � zapora ogniowa dla ka�de- go, zamieszczonym na naszym CD. Page 3 www.hakin9.org 4 Hakin9 Nr 5/2004 O b r o n a Istniej� te� oczywi�cie komer- cyjne systemy wykrywania te- go typu atak�w. Zapewne najbar- dziej znanym produktem jest Pe- akflow firmy Arbor Networks (http: //www.arbornetworks.com). DDoS jest jednak najcz�ciej na tyle agre- sywny, �e wykryje go nawet najprost- szy monitor ruchu sieciowego. Trudna ochrona Klasyczny atak DoS jest efektem celowych dzia�a� i cho� zwykle nie przeprowadza si� go z prawdziwe- go adresu nadawcy, ofiara ma du- �e szanse na wy�ledzenie agre- sora. Inaczej jest z atakami DDoS. Przynajmniej cz�� z nich wykonu- j� tak zwane zombie � komputery zainfekowane robakami dzia�aj�cy- mi w systemach Windows, nale��- ce do nie�wiadomych niczego u�yt- kownik�w. Dlatego nale�y pami�ta� o korzy- staniu z program�w typu IDS (Intru- sion Detection System), na przyk�ad popularnego narz�dzia snort. Syste- my te wykrywaj� przede wszystkim sygnatury dost�pnych powszechnie pakiet�w DDoS, a nie same ataki. Maszyny w lokalnej sieci winny te� by� sprawdzane pod k�tem agent�w tych pakiet�w � niewykluczone, ze intruz zd��y� ju� przekszta�ci� nasze komputery w pos�uszne zombie. Reverse Path Filtering Ochrona przed fa�szowaniem adre- s�w �r�d�owych jest najwa�niejsza przy odpieraniu atak�w DDoS. Naj- prostszy spos�b to wykorzystanie in- formacji o sieciach, do kt�rych bez- po�rednio podpi�ty jest komputer. Je�li interfejs eth1, b�d�cy bram� dla podsieci 192.168.0/16, otrzyma do przekazania pakiet o adresie spoza tego zakresu, mo�na przyj��, �e je- den z u�ytkownik�w ma nie do ko�ca czyste intencje. Filtrowanie na pod- stawie adres�w �r�d�owych prze- sy�anych pakiet�w nazwane zosta- �o Reverse Path Filtering (RPF). Nie jest to panaceum, ale w prostych sie- ciach sprawdza si� znakomicie. Oczywi�cie Linux umo�liwia ko- rzystanie z RPF. Wszystkich usta- wie� dokonuje si� przez interfejs Listing 1. Statystyki nat�enia ruchu zbadane za pomoc� iptables $ iptables -L -vx Chain ddos-stats (1 references) [...] pkts bytes target prot opt in out source destination 800386 354292438 all -- any any anywhere anywhere 36 2612 icmp -- any any anywhere anywhere 10070 549460 tcp -- any any anywhere anywhere Listing 2. Przyk�adowy skrypt wykrywaj�cy atak DdoS #!/bin/bash # Przykladowy skrypt badajacy ilosc pakietow # gdzie jest iptables? IPTABLES=/sbin/iptables # �a�cuch monitoruj�cy (pierwsza regu�a - ICMP, druga - SYN) STATUS_CHAIN=ddos-stats # niebezpieczny poziom pakiet�w danego typu w procentach HI_LEVEL=30 # co robi�, gdy poziomy zostan� przekroczone? ICMP_ACTION=/bin/true SYN_ACTION=/bin/true # czy jest STATUS_CHAIN? $IPTABLES -L $STATUS_CHAIN -n 2>&1 > /dev/null if [ $? -gt 0 ]; then echo "Nie ma �a�cucha $STATUS_CHAIN!" exit 1 fi # ��czna liczba pakiet�w w �a�uchu STATUS_CHAIN TOTAL=`$IPTABLES -L $STATUS_CHAIN -vx | head -3 | tail -1 | awk '{print $1}'` # ilo�� pakiet�w ICMP ICMP=`$IPTABLES -L $STATUS_CHAIN -vx | head -4 | tail -1 | awk '{print $1}'` # ilo�� pakiet�w SYN SYN=`$IPTABLES -L $STATUS_CHAIN -vx | head -5 | tail -1 | awk '{print $1}'` # co� jest, mo�na liczy�... if [ $TOTAL -gt 0 ]; then # policz warto�ci procentowe ICMP_PER=$(($ICMP * 100 / $TOTAL)) SYN_PER=$(($SYN * 100 / $TOTAL)) # podaj statystyki echo "Razem: $TOTAL" echo "ICMP: $ICMP, $ICMP_PER%" echo "SYN: $SYN, $SYN_PER%" # czy przekroczono poziom pakiet�w ICMP? if [ $ICMP_PER -gt $HI_LEVEL ]; then echo "Duzy udzia� pakiet�w ICMP!" # dodatkowa akcja $ICMP_ACTION fi # a mo�e SYN? if [ $SYN_PER -gt $HI_LEVEL ]; then echo "Duzy udzia� pakiet�w SYN!" # dodatkowa akcja $SYN_ACTION fi else echo "Brak pakiet�w." fi # czy�cimy liczniki pakiet�w $IPTABLES -Z $STATUS_CHAIN 2>&1 > /dev/null Page 4 www.hakin9.org 5 Hakin9 Nr 5/2004 Obrona przed atakami DDoS /proc. W ga��zi sys/net/ipv4/conf, dla komputera z dwiema kartami siecio- wymi, znajduj� si� nast�puj�ce ka- talogi...
Jajco039