2009 01 Firewall w Linuksie [Poczatkujacy]


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 1238
Sprzęt specjalistyczny w służbie PP 2009 01 03
egzamin 2009 01 (X 91) arkusz
2006 02 Dokumenty PDF w Linuksie [Poczatkujacy]
2009 01 Analiza powłamaniowa
NF 2005 01 kurs dla początkujących
2009 01 The Naked Wiki id 20616 Nieznany
SIMR ALG1 EGZ 2009 01 30a rozw
138 142 linuks dla poczatkujacych
Crocker Zbyt szybkie wycofanie oddziałów z Iraku to błąd (24 01 2009)
Pisemny 01 2009 Y
Rabini do żołnierzy w Gazie Badzcie bezlitosci (26 01 2009)

więcej podobnych podstron