2009 01 Firewall w Linuksie [Poczatkujacy]

background image

Dla początkujących

Firewall w Linuksie

12

styczeń 2009

Dla początkujących

Firewall w Linuksie

13

www.lpmagazine.org

lin

ux

@

so

ftw

ar

e.

co

m

.p

l

Firewall w Linuksie

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.

Piotr Podusowski

K

ażda sieć komputerowa (w tym także In-
ternet) składa się, prócz części infrastruk-
tury jak routery czy kable, z hostów, które
w dużym uproszczniu możemy traktować

jak pojedyncze komputery. Hosty posiadają tzw. adres sie-
ciowy (adres IP) dzięki któremu są rozpoznawane i możli-
wa jest komunikacja między nimi poprzez protokół IP.

TCP i UDP pracują na wyższej warstwie i wzboga-

cają pakiety o tzw. numery portów (zwanych niekiedy
zakończeniami) dzięki którym pod jednym adresem IP
może pracować wiele usług. Oznacza to, że każdy pa-
kiet TCP lub UDP jest klasyfikowany, np. port 80 pro-
tokołu TCP używany jest do transferów HTTP, a portu
27960 protokołu UDP używa gra Quake 3 Arena. Nale-
ży zaznaczyć, że powyższe dwa protokoły mają oddziel-
ne zakresy portów, tj. port 323 w TCP nie koliduje z por-
tem 323 w UDP.

Istnieje zasadnicza różnica między TCP a UDP po-

legająca na tym, że ten pierwszy jest protokołem stru-
mieniowym, co znaczy, że po pierwsze - aby przesyłać
dane musi zostać ustanowione połączenie (czasami zwa-
ne też sesją TCP), po drugie – protokół gwarantuje do-

starczenie danych w kolejności w jakiej zostały wysłane,
a po trzecie – jeżeli pakiet zostanie utracony, zostaje on
w sposób automatyczny ponownie przesłany, a programi-
sta zostaje powiadomiony wyjątkiem o ewentualnym ze-
rwaniu połącznia. UDP jest przeciwieństwem wszystkich
tych cech, tzn. nie mamy pewności czy wysłane pakiety
dojdą w kolejności ich wysłania, a co więcej, nie wiemy
nawet czy pakiety zostaną dostarczone.

Każdy host w sieci może pełnić rolę klienta bądź ser-

wera, dla TCP znaczy to, że pewien host musi zacząć ak-
ceptować połączenia po to, aby inny host, lub grupa ho-
stów mogła ustanowić połączenie z nim, w UDP również
istnieje pojęcie nasłuchiwania i działa analogicznie z tą
różnicą, że hosty nie muszą czekać na ustanowienie po-
łączenia.

Rodzaje ataków sieciowych

Ataki można podzielić na kilka grup:

• Oprogramowanie typu trojan – atak tego typu jest

najprostszy do zrealizowania i jednocześnie najpro-
ściej jest się przed nim ochronić, polega on na za-

background image

Dla początkujących

Firewall w Linuksie

12

styczeń 2009

Dla początkujących

Firewall w Linuksie

13

www.lpmagazine.org

aplikowaniu dedykowanego oprogra-
mowania na komputerze-ofierze, które
pozwala hakerowi/krakerowi na zdal-
ną kontrolę. Z reguły takie konie tro-
jańskie po uruchomieniu nasłuchują
połączeń przychodzących od agresora,
aczkolwiek nic nie stoi na przeszko-
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-

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-
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
pozwalają na wstrzyknięcie i urucho-
mienie obcego kodu. Ataki tego typu
należą do najniebezpieczniejszych, bo-
wiem teoretycznie narażone są aplika-
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-
stem usługi do której atakowany komp-
ter chce uzyskać dostęp;

• Sniffing – polega na przechwyceniu

pakietów sieciowych przez agresora.
W przypadku nieszyfrowanych protoków
może to oznaczać np. przechwycenie ha-
sła lub innych poufnych informacji.

Czym jest zapora sieciowa?

Najczęstszym rodzajem zapory sieciowej
jest program filtrujący niepożądane pakie-
ty, analizując je na podstawie wprowadzo-
nych reguł. Podstawowe zapory działają już

na warstwie TCP i UDP wykrywając nie-
autoryzowane próby komunikacji z danym
komputerem. Taka zapora może być w po-
staci dedykowanego sprzętu (niezależnego
od jednego bądź kilku komputerów, któ-
re chroni) lub oprogramowania oraz zesta-
wu reguł.

Wprowadzenie do iptables

Jądro linuksa już od wersji 2.4 posiada mecha-
nizm o nazwie iptables (w wersji 2.2 podob-
ny mechanizm nosił nazwę ipchains a w wer-
sji 2.0 - ipfwadm), jest to program działający
pomiędzy stosem sieciowym, a tzn. warstwą
gniazdek której bezpośrednio używają progra-

Rysunek 1.

Wizualizacja komunikacji protokołem UDP i TCP

������

������

������

������

����������

������������������������

������

���

�������

���

����������

����������

Listing 1.

Przykład przechwytywania pakietów PING

[wolverine@piotrek:~] sudo iptables -A INPUT -p icmp -j LOG
[wolverine@piotrek:~] ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.055 ms
[wolverine@piotrek:~] dmesg | tail -n 1

IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1
DST=127.0.0.1 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=11000 PROTO=ICMP TYPE=0
CODE=0 ID=30731 SEQ=1

Rysunek 2.

Program netstat pokazujący aktywne połączenia typu TCP (przełącznik -t). W przykładzie uru-

chomiona jest przeglądarka WWW z dwiema kartami

background image

14

Firewall w Linuksie

styczeń 2009

Dla początkujących

15

www.lpmagazine.org

Firewall w Linuksie

Dla początkujących

my użytkowe. Pozwala on na modyfikowanie
i filtrowanie pakietów wychodzących i przy-
chodzących na danej maszynie.

Aby używać iptables potrzebne są dwie rze-

czy, pierwsza to odpowiednio skonfigurowane
jądro linuksa, a druga to narzędzia userspace.

Infrastruktura jądra nazywa się netfilter

i większość popularnych dystrybucji ją posia-
da, narzędzia userspace zazwyczaj znajdują się
w paczce o nazwie iptables. Dla Debiana polece-
nie ich instalacji będzie wyglądało:

aptitude install iptables

Struktura iptables zorientowana jest wokół tzw.
łańcuchów, przy czym istnieją trzy wbudowane
łańcuchy – INPUT, OUTPUT oraz FORWARD,
dwa pierwsze zawierają reguły dotyczące filtro-
wania pakietów przychodzących (czyli tych któ-

re wpływają do serwera, np. próby nawiązywania
połączenia TCP) i wychodzących, a na podstawie
ostatniej filtrowane są pakiety, które nie są prze-
znaczone dla danego komputera i zostaną prze-
słane do innej podsieci (jeśli jądro ma ustawioną
opcje routowania).

Narzędzie do operacji na regułach nosi od-

krywczą nazwę iptables i jest konsolowym pro-
gramem pracującym w trybie niewymagającym
standardowego wejścia, co oznacza, że wszelkie
modyfikacje łańcuchów iptables można przepro-
wadzić za pomocą odpowiednich parametrów
programu w linii komend.

Jako przykład, ustawimy regułę zabrania-

jącą dostępu do danego komputera z kompute-
ra lokalnego:

[wolverine@piotrek:~] sudo iptables
-A OUTPUT -d 207.46.197.32 -j DROP

[wolverine@piotrek:~] ping
microsoft.com
PING microsoft.com (207.46.197.32)
56(84) bytes of data
ping: sendmsg: Operation not
permitted

Oprócz usuwania pakietów możemy naka-
zać, aby były one logowane, służy do tego
cel o nazwie LOG (Listing 1). Należy tutaj
zauważyć, że nie możemy podać dwóch ce-
lów (np. LOG i DROP), aby tego dokonać
musimy stworzyć dwie reguły – pierwszą,
wysyłającą pakiet do sysloga i drugą – usu-
wającą go.

Dodatkowe moduły

Oprócz rozpoznawania pakietów poprzez ją-
dro iptables, istnieje możliwość uruchomie-
nia dodatkowych modułów, schemat używa-
nia modułów wygląda tak:

iptables ... -m moduł –moduł-
parametry_modułu ...

Liczba modułów jest za duża, aby opisać wszyst-
kie w tym artykule, dlatego przedstawię tylko te
najczęściej używane, pełną listę można znaleźć
w podręczniku systemowym pod hasłem

man iptables

:

addrtype

Pozwala na ropoznawanie pakietów po typie
adresu. Typem adresu może być np. BRO-
ADCAST, UNICAST, LOCAL itp.

connbytes

Udostępnia możliwość rozpoznawania pa-
kietów za pomocą ilości przesłanych bajtów
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

Tabela 1.

Podstawowe parametry programu iptables

-L nazwa_łańcucha

Wylistowanie reguł z łancucha

-A nazwa_łańcucha reguła opcje

Dodawanie reguły na końcu łancucha

-D nazwa_łańcucha reguła opcje
-D nazwa_łańcucha numer_reguły

Usuwanie istniejącej reguły

-F nazwa_łańcucha

Usuwanie wszystkich reguł w łańcuchu

-s ! xx.xx.xx.xx / -d ! xx.xx.xx.xx

Odpowiednio adres IP komputera źródłowego i docelowego.
Znak „!” oznacza wszystkie adresy oprócz wpisanego.

-j cel

Oznacza cel do którego powinien wpadać pasujący do regu-
ły pakiet. Celem może być zdefiniowany przez użytkownika
łańcuch bądź jeden z celów wbudowanych, jak DROP (usu-
wa pakiet) czy ACCEPT (pozostawia pakiet w nienaruszo-
nym stanie pozwalając mu na dotarcie do odbiorcy)

-p ! port

Oznacza port pod jaki skierowany jest pakiet który chce-
my wyłapać. Znak „!” działa analogicznie jak przy przełącz-
niku „-s” i „-d”.

-m moduł

Pozwala na użycie przy rozpoznawaniu pakietów dodatko-
wego modułu.

-h

Krótka pomoc

background image

14

Firewall w Linuksie

styczeń 2009

Dla początkujących

15

www.lpmagazine.org

Firewall w Linuksie

Dla początkujących

connlimit

Pozwala na rozpoznanie ilości równocze-
snych połączeń danego typu. Zastosowa-
niem tego modułu może być serwer klastro-
wy – jeśli serwer nie jest w stanie obsłużyć
pewnej ilości połączeń, może je przekiero-
wać na inny np. używając NAT.

hashlimit

Moduł pozwala na rozpoznanie liczby pa-
kietów, których parametry określiliśmy
wcześniej, przychodzących do naszej ma-
szyny:

[wolverine@piotrek:~] sudo iptables
-A INPUT -p icmp -m hashlimit
--hashlimit-name ping_flood --
hashlimit-above 2/second -j DROP

length

Dostarcza możliwość rozpoznawania pakie-
tów po ich rozmiarze.

owner

Udostępnia możliwość rozpoznawania pa-
kietów po lokalnym użytkowniku do które-
go należy proces korzystający z sieci.

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
$EXTIF -j ACCEPT

iptables -t nat -A POSTROUTING -o
$EXTIF -j MASQUERADE

Netstat i Tcpdump

Narzędzia te nie są częścią firewalla, jednak
umożliwiają zdiagnozowanie ruchu w sie-
ci dzięki czemu w razie ewentualnego ata-
ku będziemy mogli uzyskać garść informa-
cji na temat jego techniki i przy odrobinie
szczęścia poznamy jego źródło.

Netstat jest programem służącym do

wyświetlenia aktywnych połączeń TCP na

lokalnym komputerze. Po wydaniu polece-
nia, na ekranie konsoli pojawia się lista z ta-
kimi informacjami jak adres hosta do któ-
rego nasz komputer jest podłączony, numer
portu czy nazwa lub identyfikator procesu
który ustanowił połączenie oraz użytkowni-
ka, który ten proces uruchomił.

Tcpdump służy do monitorowania prze-

pływu pakietów na komputerze, na któ-
rym jest uruchomiony. W programie mamy
możliwość ustawienia interfejsu, na którym
chcemy nasłuchiwać sposobu prezentacji
ruchu i co najważniejsze, możemy ustawić
filtr składający się z warunków, które mo-
gą być wiązane ze sobą za pomocą warun-
ków logicznych.

Przykładowo chcąc prześledzić ruch ge-

nerowany przez przeglądanie stron WWW
możemy użyć polecenia:

tcpdump -i eth0 tcp port 80

gdzie

eth0

oznacza interfejs z którego łą-

czymy się z Internetem.

Wysokopoziomowe narzędzia

Prócz podstawowego narzędzia konsolowe-
go iptables, istnieją również wysokopoziomo-

we konfiguratory, dzięki którym konfiguracja
firewalla jest prostsza i zorientowana na kon-
kretne rodzaje ataków. Większość dystrybu-
cji linuksa posiada własny konfigurator ipta-
bles dedykowany do wersji jądra i iptables, nic
jednak nie stoi na przeszkodzie, aby wypróbo-
wać tzw. zewnętrzne rozwiązania, należy jed-
nak pamiętać, że większość tego typu aplikacji
działa schematycznie umożliwiając tworzenie
własnych reguł do mechanizmu netfilter.

Gufw

Aplikacja jest domyślnym konfiguratorem li-
nuksowego firewalla w systemie Ubuntu.
Dzięki Gufw możemy w prosty sposób zablo-
kować ruch na wybranych przez nas portach
czy aktywować predefiniowane reguły dla po-
pularnych programów sieciowych.

Arno's iptables firewall

Aplikacja jest skryptem konfiguracyjnym do ip-
tables, po zainstalowaniu na systemie Debian,
użytkownik jest proszony o udzielenie odpowie-
dzi na kilka pytań dotyczących sposobu łączenia
się z Internetem oraz dostępu do lokalnej sieci, po
czym tworzone są domyślne reguły dla iptables,
które w późniejszym czasie można edytować
w pliku konfiguracyjnym.

Rysunek 5.

Plik konfiguracyjny Arno's iptables firewall

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-
rze osobistym oraz serwerze grupy.
Kontakt z autorem: podusowski@gmail.com

O autorze

http://www.netfilter.org/ – projekt iptables;
http://gufw.tuxfamily.org – Gufw.

W Sieci


Wyszukiwarka

Podobne podstrony:
2009 01 Vim – konkurent prawie doskonały! [Poczatkujacy]
2009 01 Vim – konkurent prawie doskonały! [Poczatkujacy]
choroby trzustki i watroby 2008 2009 (01 12 2008)
2009 01 Analiza powłamaniowa
2009 01 testy odpowiedzi
[2009-01-20] MIKROEKONOMIA - Kolokwium 2 v2, mikro, Mikroekonomia, Ćwiczenia, Ściągi na kolokwia, [2
2009 01 rozszODP (2)
.SIMR-ALG1-EGZ-2009-01-30b-rozw
[2009-01-20] MIKROEKONOMIA - Kolokwium 2, mikro, Mikroekonomia, Ćwiczenia, Ściągi na kolokwia, [2009
2009 01 07
bik 04 2009 01 art
2009 01 podstODP POZNAN
2009 01 The Naked Wiki

więcej podobnych podstron