Obrona przed atakami DDoS w Linux.txt

(23 KB) Pobierz
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...
Zgłoś jeśli naruszono regulamin