Dla początkujących
Firewall w Linuksie
Firewall w Linuksie
Piotr Podusowski
Aby zrozumieć pojęcie firewalla należy poznać podstawy działania sieci, jako, że najpopularniejszym
transportem w Internecie jest dzisiaj protokół IPv4 (jednakże większość informacji tu zawartych jest
analogicza do IPv6), zajmę się właśnie nim i warstwami zbudowanymi na nim, czyli TCP i UDP.
ażda sieć komputerowa (w tym także In- starczenie danych w kolejności w jakiej zostały wysłane,
ternet) składa się, prócz części infrastruk- a po trzecie jeżeli pakiet zostanie utracony, zostaje on
tury jak routery czy kable, z hostów, które w sposób automatyczny ponownie przesłany, a programi-
Kw dużym uproszczniu możemy traktować sta zostaje powiadomiony wyjątkiem o ewentualnym ze-
jak pojedyncze komputery. Hosty posiadają tzw. adres sie- rwaniu połącznia. UDP jest przeciwieństwem wszystkich
ciowy (adres IP) dzięki któremu są rozpoznawane i możli- tych cech, tzn. nie mamy pewności czy wysłane pakiety
wa jest komunikacja między nimi poprzez protokół IP. dojdą w kolejności ich wysłania, a co więcej, nie wiemy
TCP i UDP pracują na wyższej warstwie i wzboga- nawet czy pakiety zostaną dostarczone.
cają pakiety o tzw. numery portów (zwanych niekiedy Każdy host w sieci może pełnić rolę klienta bądz ser-
zakończeniami) dzięki którym pod jednym adresem IP wera, dla TCP znaczy to, że pewien host musi zacząć ak-
może pracować wiele usług. Oznacza to, że każdy pa- ceptować połączenia po to, aby inny host, lub grupa ho-
kiet TCP lub UDP jest klasyfikowany, np. port 80 pro- stów mogła ustanowić połączenie z nim, w UDP również
tokołu TCP używany jest do transferów HTTP, a portu istnieje pojęcie nasłuchiwania i działa analogicznie z tą
27960 protokołu UDP używa gra Quake 3 Arena. Nale- różnicą, że hosty nie muszą czekać na ustanowienie po-
ży zaznaczyć, że powyższe dwa protokoły mają oddziel- łączenia.
ne zakresy portów, tj. port 323 w TCP nie koliduje z por-
tem 323 w UDP. Rodzaje ataków sieciowych
Istnieje zasadnicza różnica między TCP a UDP po- Ataki można podzielić na kilka grup:
legająca na tym, że ten pierwszy jest protokołem stru-
mieniowym, co znaczy, że po pierwsze - aby przesyłać " Oprogramowanie typu trojan atak tego typu jest
dane musi zostać ustanowione połączenie (czasami zwa- najprostszy do zrealizowania i jednocześnie najpro-
ne też sesją TCP), po drugie protokół gwarantuje do- ściej jest się przed nim ochronić, polega on na za-
12 styczeń 2009
linux@software.com.pl
Dla początkujących
Firewall w Linuksie
aplikowaniu dedykowanego oprogra- na warstwie TCP i UDP wykrywając nie- Wprowadzenie do iptables
mowania na komputerze-ofierze, które autoryzowane próby komunikacji z danym Jądro linuksa już od wersji 2.4 posiada mecha-
pozwala hakerowi/krakerowi na zdal- komputerem. Taka zapora może być w po- nizm o nazwie iptables (w wersji 2.2 podob-
ną kontrolę. Z reguły takie konie tro- staci dedykowanego sprzętu (niezależnego ny mechanizm nosił nazwę ipchains a w wer-
jańskie po uruchomieniu nasłuchują od jednego bądz kilku komputerów, któ- sji 2.0 - ipfwadm), jest to program działający
połączeń przychodzących od agresora, re chroni) lub oprogramowania oraz zesta- pomiędzy stosem sieciowym, a tzn. warstwą
aczkolwiek nic nie stoi na przeszko- wu reguł. gniazdek której bezpośrednio używają progra-
dzie, aby komunikowały się one w inny
sposób choćby przez IRCa czy Gadu-
Gadu wtedy są onę klientami w rozu-
mowaniu sieciowym;
" Ataki typu DoS jest to rodzaj zapy-
host 2
host 1
chania łącza w przypadku użycia kil-
ku maszyn agresorów (często są to tzw
komputery zombie np. zdalnie stero-
wane przez oprogramowanie typu tro-
jan) lub samych zasobów komputera
(przez ciągły dostęp np. do skompli-
Infrastruktura Internetu
kowanego skryptu preparującego stro-
nę WWW) poprzez zalewanie kompu-
tera-ofiary dużą ilością pakietów sie-
ciowych;
" Exploity są to metody wykorzystujące
dziury w oprogramowaniu, które często
host 4
pozwalają na wstrzyknięcie i urucho-
host 5
mienie obcego kodu. Ataki tego typu
należą do najniebezpieczniejszych, bo-
wiem teoretycznie narażone są aplika- Rysunek 1. Wizualizacja komunikacji protokołem UDP i TCP
cje uruchomione z konta roota, z regu-
ły jednak serwisy działają pod ograni-
czonymi uprawnieniami, co więcej zna-
lezienie takiej luki jest trudne, a jeśli
do tego dojdzie, to wadliwe oprogra-
mowanie jest szybko łatane, zwłaszcza
w świecie open source;
" Phishing atak ten w odróżnieniu od
poprzednich nie polega na wywołaniu
bezpośredniej szkody w komputerze-
ofiary, lecz na podszyciu się pod nią,
polega on na preparowaniu pakietów
sieciowych w ten sposób, aby wyglą-
dały one jak wysłane z innego, konkret-
nego hosta. Host pod którego podszy-
wa się agresor może być hostem atako-
wanym (np. gdy ten posiada dostęp do
jakiejś usługi na podstawie IP) lub ho- Rysunek 2. Program netstat pokazujący aktywne połączenia typu TCP (przełącznik -t). W przykładzie uru-
stem usługi do której atakowany komp- chomiona jest przeglądarka WWW z dwiema kartami
ter chce uzyskać dostęp;
" Sniffing polega na przechwyceniu Listing 1. Przykład przechwytywania pakietów PING
pakietów sieciowych przez agresora. [wolverine@piotrek:~] sudo iptables -A INPUT -p icmp -j LOG
W przypadku nieszyfrowanych protoków [wolverine@piotrek:~] ping 127.0.0.1
może to oznaczać np. przechwycenie ha- PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
sła lub innych poufnych informacji. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.055 ms
[wolverine@piotrek:~] dmesg | tail -n 1
Czym jest zapora sieciowa?
Najczęstszym rodzajem zapory sieciowej IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1
jest program filtrujący niepożądane pakie- DST=127.0.0.1 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=11000 PROTO=ICMP TYPE=0
ty, analizując je na podstawie wprowadzo- CODE=0 ID=30731 SEQ=1
nych reguł. Podstawowe zapory działają już
www.lpmagazine.org 13
Pakiet UDP
TCP
Pakiet
Pakiet UDP
Pakiet UDP
TCP
Sesja
Dla początkujących
Firewall w Linuksie
my użytkowe. Pozwala on na modyfikowanie re wpływają do serwera, np. próby nawiązywania [wolverine@piotrek:~] ping
i filtrowanie pakietów wychodzących i przy- połączenia TCP) i wychodzących, a na podstawie microsoft.com
chodzących na danej maszynie. ostatniej filtrowane są pakiety, które nie są prze- PING microsoft.com (207.46.197.32)
Aby używać iptables potrzebne są dwie rze- znaczone dla danego komputera i zostaną prze- 56(84) bytes of data
czy, pierwsza to odpowiednio skonfigurowane słane do innej podsieci (jeśli jądro ma ustawioną ping: sendmsg: Operation not
jądro linuksa, a druga to narzędzia userspace. opcje routowania). permitted
Infrastruktura jądra nazywa się netfilter Narzędzie do operacji na regułach nosi od-
i większość popularnych dystrybucji ją posia- krywczą nazwę iptables i jest konsolowym pro- Oprócz usuwania pakietów możemy naka-
da, narzędzia userspace zazwyczaj znajdują się gramem pracującym w trybie niewymagającym zać, aby były one logowane, służy do tego
w paczce o nazwie iptables. Dla Debiana polece- standardowego wejścia, co oznacza, że wszelkie cel o nazwie LOG (Listing 1). Należy tutaj
nie ich instalacji będzie wyglądało: modyfikacje łańcuchów iptables można przepro- zauważyć, że nie możemy podać dwóch ce-
wadzić za pomocą odpowiednich parametrów lów (np. LOG i DROP), aby tego dokonać
aptitude install iptables programu w linii komend. musimy stworzyć dwie reguły pierwszą,
Jako przykład, ustawimy regułę zabrania- wysyłającą pakiet do sysloga i drugą usu-
Struktura iptables zorientowana jest wokół tzw. jącą dostępu do danego komputera z kompute- wającą go.
łańcuchów, przy czym istnieją trzy wbudowane ra lokalnego:
łańcuchy INPUT, OUTPUT oraz FORWARD, Dodatkowe moduły
dwa pierwsze zawierają reguły dotyczące filtro- [wolverine@piotrek:~] sudo iptables Oprócz rozpoznawania pakietów poprzez ją-
wania pakietów przychodzących (czyli tych któ- -A OUTPUT -d 207.46.197.32 -j DROP dro iptables, istnieje możliwość uruchomie-
nia dodatkowych modułów, schemat używa-
nia modułów wygląda tak:
Tabela 1. Podstawowe parametry programu iptables
-L nazwa_łańcucha Wylistowanie reguł z łancucha
iptables ... -m moduł moduł-
-A nazwa_łańcucha reguła opcje Dodawanie reguły na końcu łancucha
parametry_modułu ...
-D nazwa_łańcucha reguła opcje Usuwanie istniejącej reguły
-D nazwa_łańcucha numer_reguły
Liczba modułów jest za duża, aby opisać wszyst-
-F nazwa_łańcucha Usuwanie wszystkich reguł w łańcuchu
kie w tym artykule, dlatego przedstawię tylko te
-s ! xx.xx.xx.xx / -d ! xx.xx.xx.xx Odpowiednio adres IP komputera zródłowego i docelowego. najczęściej używane, pełną listę można znalezć
Znak ! oznacza wszystkie adresy oprócz wpisanego. w podręczniku systemowym pod hasłem
-j cel Oznacza cel do którego powinien wpadać pasujący do regu-
man iptables:
ły pakiet. Celem może być zdefiniowany przez użytkownika
łańcuch bądz jeden z celów wbudowanych, jak DROP (usu-
addrtype
wa pakiet) czy ACCEPT (pozostawia pakiet w nienaruszo-
Pozwala na ropoznawanie pakietów po typie
nym stanie pozwalając mu na dotarcie do odbiorcy)
adresu. Typem adresu może być np. BRO-
-p ! port Oznacza port pod jaki skierowany jest pakiet który chce-
ADCAST, UNICAST, LOCAL itp.
my wyłapać. Znak ! działa analogicznie jak przy przełącz-
niku -s i -d .
connbytes
-m moduł Pozwala na użycie przy rozpoznawaniu pakietów dodatko-
Udostępnia możliwość rozpoznawania pa-
wego modułu.
kietów za pomocą ilości przesłanych bajtów
-h Krótka pomoc
w jednej sesji TCP. Pozwala to np. na rozpo-
znanie pobierania dużych plików i ustaleniu
dla nich niższego priorytetu.
Rysunek 3. Program tcpdump Rysunek 4. Gufw
14 styczeń 2009
Dla początkujących
Firewall w Linuksie
connlimit lokalnym komputerze. Po wydaniu polece- we konfiguratory, dzięki którym konfiguracja
Pozwala na rozpoznanie ilości równocze- nia, na ekranie konsoli pojawia się lista z ta- firewalla jest prostsza i zorientowana na kon-
snych połączeń danego typu. Zastosowa- kimi informacjami jak adres hosta do któ- kretne rodzaje ataków. Większość dystrybu-
niem tego modułu może być serwer klastro- rego nasz komputer jest podłączony, numer cji linuksa posiada własny konfigurator ipta-
wy jeśli serwer nie jest w stanie obsłużyć portu czy nazwa lub identyfikator procesu bles dedykowany do wersji jądra i iptables, nic
pewnej ilości połączeń, może je przekiero- który ustanowił połączenie oraz użytkowni- jednak nie stoi na przeszkodzie, aby wypróbo-
wać na inny np. używając NAT. ka, który ten proces uruchomił. wać tzw. zewnętrzne rozwiązania, należy jed-
Tcpdump służy do monitorowania prze- nak pamiętać, że większość tego typu aplikacji
hashlimit pływu pakietów na komputerze, na któ- działa schematycznie umożliwiając tworzenie
Moduł pozwala na rozpoznanie liczby pa- rym jest uruchomiony. W programie mamy własnych reguł do mechanizmu netfilter.
kietów, których parametry określiliśmy możliwość ustawienia interfejsu, na którym
wcześniej, przychodzących do naszej ma- chcemy nasłuchiwać sposobu prezentacji Gufw
szyny: ruchu i co najważniejsze, możemy ustawić Aplikacja jest domyślnym konfiguratorem li-
filtr składający się z warunków, które mo- nuksowego firewalla w systemie Ubuntu.
[wolverine@piotrek:~] sudo iptables gą być wiązane ze sobą za pomocą warun- Dzięki Gufw możemy w prosty sposób zablo-
-A INPUT -p icmp -m hashlimit ków logicznych. kować ruch na wybranych przez nas portach
--hashlimit-name ping_flood -- Przykładowo chcąc prześledzić ruch ge- czy aktywować predefiniowane reguły dla po-
hashlimit-above 2/second -j DROP nerowany przez przeglądanie stron WWW pularnych programów sieciowych.
możemy użyć polecenia:
length Arno's iptables firewall
Dostarcza możliwość rozpoznawania pakie- tcpdump -i eth0 tcp port 80 Aplikacja jest skryptem konfiguracyjnym do ip-
tów po ich rozmiarze. tables, po zainstalowaniu na systemie Debian,
gdzie eth0 oznacza interfejs z którego łą- użytkownik jest proszony o udzielenie odpowie-
owner czymy się z Internetem. dzi na kilka pytań dotyczących sposobu łączenia
Udostępnia możliwość rozpoznawania pa- się z Internetem oraz dostępu do lokalnej sieci, po
kietów po lokalnym użytkowniku do które- Wysokopoziomowe narzędzia czym tworzone są domyślne reguły dla iptables,
go należy proces korzystający z sieci. Prócz podstawowego narzędzia konsolowe- które w pózniejszym czasie można edytować
go iptables, istnieją również wysokopoziomo- w pliku konfiguracyjnym.
Network Address Translation
Istnieją dwa powody dla których technologia
NAT jest powszechnie używana. Pierwszy to
brak możliwości połączenia się z komputerem,
który jest w wewnętrznej sieci (oczywiście kom-
puter ten może pełnić rolę klienta łącząc się z ho-
stami z zewnątrz), drugi, w tej chwili mniej dla
nas ważny, ograniczenie kończącej się liczby
adresów sieciowych IPv4. Aby zbudować bra-
mę NAT można użyć oczywiście iptables. Po-
niżej przedstawiam prosty skrypt realizujący to
zadanie:
iptables -A FORWARD -i $EXTIF
-o $INTIF -m state --state
ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o Rysunek 5. Plik konfiguracyjny Arno's iptables firewall
$EXTIF -j ACCEPT
O autorze
iptables -t nat -A POSTROUTING -o
$EXTIF -j MASQUERADE
Student informatyki na Politechnice Wrocławskiej, programista grupy ContriV.eu specjali-
zującej się w tworzeniu aplikacji webowych. Linux od kilku lat towarzyszy mu na kompute-
Netstat i Tcpdump
rze osobistym oraz serwerze grupy.
Narzędzia te nie są częścią firewalla, jednak
Kontakt z autorem: podusowski@gmail.com
umożliwiają zdiagnozowanie ruchu w sie-
ci dzięki czemu w razie ewentualnego ata-
ku będziemy mogli uzyskać garść informa-
W Sieci
cji na temat jego techniki i przy odrobinie
szczęścia poznamy jego zródło.
" http://www.netfilter.org/ projekt iptables;
Netstat jest programem służącym do
" http://gufw.tuxfamily.org Gufw.
wyświetlenia aktywnych połączeń TCP na
www.lpmagazine.org 15
Wyszukiwarka
Podobne podstrony:
2009 01 Vim – konkurent prawie doskonały! [Poczatkujacy]2009 02 Podstawy MySQL [Poczatkujacy]Warunki techniczne zmiana 2009 01 01 Dz U 2008 201 1238Sprzęt specjalistyczny w służbie PP 2009 01 03egzamin 2009 01 (X 91) arkusz2006 02 Dokumenty PDF w Linuksie [Poczatkujacy]2009 01 Analiza powłamaniowaNF 2005 01 kurs dla początkujących2009 01 The Naked Wiki id 20616 NieznanySIMR ALG1 EGZ 2009 01 30a rozw138 142 linuks dla poczatkujacychCrocker Zbyt szybkie wycofanie oddziałów z Iraku to błąd (24 01 2009)Pisemny 01 2009 YRabini do żołnierzy w Gazie Badzcie bezlitosci (26 01 2009)więcej podobnych podstron