Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Sieci komputerowe.
Kompendium
Autor: Karol Krysiak
ISBN: 83-7197-942-8
Format: B5, stron: okoo 448
Spis treci
Wstp ............................................................................................. 11
Rozdzia 1. Sieci komputerowe .......................................................................... 23
1.1. Podzia sieci komputerowych w zalenoci od rozmiaru.......................................23
1.2. Topologie sieci komputerowych ........................................................................24
Topologia sieci.................................................................................................24
Topologia fizyczna ...........................................................................................24
Topologia logiczna ...........................................................................................25
1.3. Model ISO/OSI ................................................................................................26
1.4. Model protokou TCP/IP...................................................................................28
Spis treci
Spis treci
10
Skorowidz...................................................................................... 425
Rozdzia 10.
Firewall
W tym rozdziale zajm si sposobami kompleksowego zabezpieczenia sieci komputerowej za pomoc techniki filtrowania datagramw (firewall) oraz tumaczenia adresw
sieciowych NAT (Network Address Translation). Nie przedstawi tutaj gotowego rozwizania, ale postaram si, aby zrozumia, w jaki sposb moesz stworzy co takiego dla
swojej sieci. Uwaam, e absurdem jest cignicie z sieci gotowego skryptu i uruchomienie go. Musisz rozumie, co robi twj firewall i jak dziaa lepiej, aby by prosty,
ale eby rozumia dokadnie jego dziaanie.
Kady firewall jest inny, tak jak kada sie jest inaczej zbudowana i rne s charaktery
i poziomy wiedzy ich administratorw. Twj firewall rozwija si wraz z tob, wraz ze
zwikszaniem si twojej wiedzy o zagroeniach i metodach przeciwdziaania im.
Zmienia si te wraz z wykrywaniem coraz nowszych zagroe. Jest to ywy organizm
stanowicy pierwsz lini ochrony dla twojej sieci, powi wic mu troch czasu i zaangaowania.
400
miamy jest na nim program zwany proxy, ktry tego dokonuje. Dla kadej usugi, ktra
ma by dostpna z Internetu, na firewallu musi by uruchomiony osobny program poredniczcy w jej wiadczeniu.
Komputery w sieci wewntrznej musz by specjalnie skonfigurowane w celu uzyskania dostpu do wybranych usug. Przykadowo, aby cign stron WWW, musz
poczy si z firewallem na port 8080, zalogowa si i zada potrzebnej strony. W tym
momencie uruchamia si odpowiedni program poredniczcy, ciga potrzebne dane
i przekazuje do odpowiedniego komputera w sieci lokalnej.
Filtrowanie pakietw
W tym przypadku nasza sie jest czci Internetu, pakiety mog porusza si bez zmian
poprzez obie sieci. Firewall na podstawie nagwkw protokow podejmuje decyzj,
czy przepuci dany pakiet, czy nie. Filtrowanie pakietw zastosowano, aby ograniczy
dostp z Internetu tylko do naszych wewntrznych serwerw i uniemoliwi dostp
do komputerw uytkownikw. Jeeli firewall ma moliwo ledzenia sesji protokow warstwy transportowej, nazywamy go firewallem z inspekcj stanu (statefull
instpection); czasami spotyka si w literaturze rwnie pojcie firewalla obwodw.
401
Ten typ firewalla ma najmniejsze moliwoci kontroli i autoryzacji dostpu, ale jest
rwnoczenie najbardziej elastyczny i wprowadza najmniej ogranicze dla uytkownikw z sieci wewntrznej. Nie ma potrzeby uruchamiania specjalnych programw poredniczcych.
Iptables
Adres rdowy IP
Adres docelowy IP
Protok (TCP,UDP) i port lub zakres portw
Protok ICMP i komunikat
Zaistnienie fragmentacji
Wartoci bitw TOS
Pakiety z flag SYN
Moliwo okrelania regu
symetrycznych (odwrotnych)
Adres sprztowy interfejsu MAC
Dowolna kombinacja flag TCP
Kryterium czstotliwoci nadchodzcych
pakietw (zabezpieczenie przeciwko DoS)
Waciciel pakietu w systemie
Funkcjonalno
402
Aby stwierdzi, czy jdro ma prawidowo wkompilowan obsug filtrowania datagramw, naley sprawdzi, czy w katalogu /proc/net/ istnieje plik ip_fwchains, zawierajcy
konfiguracj regu firewalla.
Przy konfigurowaniu firewalla za pomoc polecenia , podstawowym pojciem
jest acuch (chain). acuch jest to zbir regu filtrujcych, na podstawie ktrych podejmowana jest decyzja, czy pakiet zostanie przepuszczony, czy te usunity. Istniej
trzy standardowe acuchy: input, forward i output, ponadto uytkownik moe tworzy wasne acuchy.
Rysunek 10.1.
Obieg pakietw
w Linuksie 2.2
Droga datagramw IP poprzez firewall jest bardzo skomplikowana. Na samym pocztku drogi pakietu sprawdzana jest suma kontrolna datagramw (checksum), nastpnie
testowane s one pod ktem deformacji (sanity). Pniej pakiety przechodz przez
acuch wejciowy (input chain) i jeli trzeba, podlegaj odwrotnemu procesowi NAT
403
(demasquerade), czyli adres routera usuwany jest z pola adres docelowy i zastpowany adresem IP docelowego komputera w sieci prywatnej. Dalej na podstawie tablicy
routingu (routing decision) lub protokou routujcego podejmowana jest decyzja o dalszym losie pakietu. Procesy lokalne (local process) mog odbiera pakiety po etapie routowania i wysya pakiety poprzez etap routowania i bezporednio acuch wyjciowy
(output chain). Jeli pakiet nie zosta utworzony przez proces lokalny, jest dodatkowo
sprawdzany w acuchu przejciowym (forward chain). Jeli proces lokalny bdzie si
komunikowa z innym procesem lokalnym, kieruje pakiet przez acuch wyjciowy (output chains) do interfejsu lo (lo interface - loopback). Kady z pakietw opuszczajcych
komputer musi zosta sprawdzony przez reguy zawarte w acuchu wyjciowym (output chain).
Adresy mog by podawane jako nr IP lub nazwa oraz jako zakresy, np.
adres rdowy rwny 192.168.23.24,
adres rdowy pochodzcy z sieci 192.168.23.0
o 24-bitowej masce,
!!!!!! zapis rwnowany poprzedniemu,
dowolny adres.
404
23 (telnet).
Moemy definowa rwnie zakresy portw:
%&'( ruch protokoem TCP z adresu 192.168.1.6
o nieosigalnoci celu,
+123 stosuje uproszczon odmian NAT, nazywan czasem maskarad
Ustalamy polityk dla acucha. Polityka okrela, co naley zrobi z pakietem nie pasujcym do adnej z zawartych w nim regu:
405
406
Rysunek 10.2.
Obieg pakietw
w Linuksie 2.4
Jeli porwnasz ten schemat z algorytmem dla ipchains, zuwaysz, jak bardzo zosta on
uproszczony i logicznie przemylany. Pakiet sprawdzany jest najpierw w acuchu PREROUTING. Nastpnie podejmowana jest decyzja Routing decision, czy pakiet skierowany jest do komputera lokalnego. Przechodzi wtedy przez acuch INPUT i dociera
do procesw lokalnych Local process. Drug moliwoci jest, e pakiet jest skierowany do jednej z sieci, do ktrych dany komputer jest routerem. W takim przypadku
podejmowana jest decyzja o routingu danego pakietu (w uproszczeniu definiowana
karta sieciowa, przez ktr naley dany pakiet dalej przesa) i pakiet trafia do acucha
FORWARD. Pakiety wygenerowane przez procesy lokalne (np. przegldark WWW
wysyajc zapytanie o stron) przechodz przez acuch OUTPUT. Nastpnie wszystkie
pakiety przechodz przez acuch POSTROUTING i s wysyane na karty sieciowe.
Przedstawione powyej acuchy s dodatkowo rozdzielone pomidzy tablice. zawierajce niektre z nich. Pierwsz jest tabela mangle, suca do zmieniania zawartoci
pakietw przechodzcych przez nasz firewall. Nastpnie pakiety przechodz przez tabel nat, w ktrej definiujemy rne rodzaje translacji adresw NAT. Ostatni jest
najczciej uywana tabela filter. Definiujemy w niej reguy filtrowania pakietw, czyli
podstawowy kod naszego firewalla. Nie wszystkie acuchy istniej w poszczeglnych tabelach.
Do tabeli mangle (polecenie:
6 ) nale acuchy:
PREROUTING,
OUTPUT.
pakietw,
POSTROUTING - SNAT (source nat) podmieniany jest adres rdowy
pakietw,
OUTPUT - DNAT dla pakietw generowanych przez procesy lokalne.
Domyln tabel jest filter (polecenie:
nie trzeba uywa przecznika ),
nale do niej acuchy:
INPUT,
OUTPUT,
FORWARD.
407
Nie bd omawia skadni
, jest ona bardzo rozbudowana i zajaby zbyt duo
miejsca. Ponadto zostao to bardzo dobrze zrobione w wymienionym wczeniej dokumencie HOWTO (z polskim tumaczeniem). Podczas tworzenia firewalla postaram si
omwi uywane przeze mnie konstrukcje. Jeli co wyda ci si niejasne, zajrzyj do
HOWTO lub na stron manuala (
).
Jednak wtedy najpewniej nie bdziesz mg skorzysta z konfiguracji opisanej poniej wersje jednodyskietkowe Linuksw s wykonywane najczciej na jdrach serii 2.2. Moesz wtedy korzysta jedynie z polecenia . Jeli chodzi o wybr dystrybucji, to nie jest to zbyt wany element, wybierz najbardziej wygodn dla siebie. Jeli
408
Podstawy
Router (i firewall), ktry konfigurujemy, ma dwie karty sieciowe; jedn eth0 na
zewntrz z numerem IP przydzielonym przez naszego dostawc usug i drug eth1
do naszej sieci lokalnej, ktrej IP sami sobie konfigurujemy. Jeli masz cze SDI,
to najprawdopodobniej musisz wymieni wpis eth0 na ppp0. Cay opis przedstawi dla
dystrybucji Slackware, jednak jak ju napisaem, nie jest wane, jakiej dystrybucji uyjesz, ale jak j skonfigurujesz. Nigdy nie naley pozostawia konfiguracji domylnej.
Rysunek 10.3.
Sie, dla ktrej
napiszemy firewall
eth0
przydzielony numer IP: 10.20.30.40
z mask 8 bitw czyli: 255.0.0.0
gateway (router): 10.20.30.1
eth1
przyjmujemy numer IP: 192.168.1.1
z mask 24 bity 255.255.255.0
Przykadowy komputer w sieci wewntrznej konfigurujemy:
numer IP: 192.168.1.2
z mask 255.255.255.0
409
Dalej musimy wczy NAT dla pakietw z sieci lokalnej wychodzcych na zewntrz.
#
#
##
$%&'(%)'*+,
-.&+$'
/
-
001
23#
-
'##
4#
wczamy moduy do irca (jeli bd nam potrzebne).
uruchamia SNAT pakietw, ktry podmienia adres rdowy pakietw z naszej sieci wewntrznej na adres 10.20.30.40. Oczywicie odbywa si to w acuchu POSTROUTING
w tabeli nat, co wida w strukturze tego polecenia. W tym momencie pakiety z naszego
przykadowego komputera o adresie 192.168.1.2, wychodzc w Internet (z karty eth0)
wydaj si pochodzi z adresu 10.20.30.40. Aby to zadziaao, musimy jeszcze uruchomi proces routingu dzieje si to w nastpnym wierszu, gdzie zmieniamy odpowiedni warto w katalogu /proc. Nastpnie uruchamiamy nasz skrypt firewall.start. Na
koniec uruchamiamy demona ssh (najlepiej w wersji 2), abymy mogli administrowa
naszym routerem z zewntrz. Jest to koniec naszego skryptu /etc/rc.d/rc.inet1, uruchamiajcego podstawowe funkcje sieciowe. W tym momencie zaczynamy pisanie skryptu
firewalla /etc/rc.d/firewall.start.
Konfiguracja
Podstawow zasad przy pisaniu regu firewalla jest:
najpierw stawiamy barier nie do przebycia dla wszystkich pakietw, a nastpnie
wybijamy w niej przejcia tylko dla takiego ruchu, ktry chcemy przepuci.
410
W skrcie: co nie jest dozwolone jest zabronione, czyli po pierwsze wybieramy poczenia do naszego routera z Internetu, ktre bd moliwe. Poza tym tak naprawd
powinnimy rwnie cile zdefiniowa rodzaje usug w Internecie, z ktrych mog
korzysta komputery znajdujce si w sieci lokalnej, oraz poczenia, ktre komputery
z sieci lokalnej mog wykonywa do routera. Poniewa omawiamy najprostszy przypadek, nie bd na razie komplikowa sytuacji i zao, e kierownictwo firmy nie wykazao zrozumienia i uytkownicy maj mie dostp do wszystkich usug udostpnianych
w Internecie.
Zagroenia wynikajce z takiego postpowania opisywaem w poprzednich rozdziaach.
Aby przypomnie, podam przykad, gdy na komputerze w sieci lokalnej pojawi si jaki
trojan. Przy silnie restrykcyjnym firewallu, gdyby trojan prbowa nawiza poczenie
na zewntrz, zostaoby ono uniemoliwione przez firewall i mielibymy o tym informacj w logach systemowych. Oczywicie istniej trojany wykorzystujce np. port 80
(http), ktry raczej musimy przepuci. Oznacza to, e na komputerach lokalnych nie
moemy zaniedba podstawowych zasad bezpieczestwa i musimy zainstalowa jakie
(czsto uaktualniane) oprogramowanie antywirusowe.
Tak wic zaczynamy. W katalogu /etc/rc.d/ tworzymy sobie skrypt firewall.start, ktry
jest uruchamiany z pliku rc.inet1. Dla wikszoci dystrybucji Linuksa moemy uruchamianie firewalla umieci w pliku /etc/rc.d/rc.local. Moja konfiguracja zostaa oparta
na opisie ze strony: http://www.sns.ias.edu/~jns/security/iptables oczywicie dokonaem w niej duych zmian. Nie bd tworzy skryptu sparametryzowanego jest on
zbyt mao przejrzysty dla celw demonstracji, a ponadto gdy zagldamy do niego po
kilku miesicach, jest trudniejszy w analizie. Przed poleceniami
wystpujcymi
w skrypcie powiniene dopisa pen bezwzgldn ciek dostpu, np. $4 #
E)%)
$.
.,
)),5-)+,"##5,
;$-,$%
%#
;$-,$%
$,.
;$-,$%
$,.+
%#
*
:9
%#
*
:9:9
%#
*
Najpierw prbujemy adowa moduy, ktre mog si nam przyda. Bardzo wanym moduem jest conntrack, umoliwiajcy ledzenie pocze. Dziki niemu moemy stwierdzi, ktre pakiety nie s poprawnymi pakietami danego poczenia. Modu conntrack
potrafi ledzi, poza oczywistym protokoem TCP, ktry jest protokoem poczeniowym, rwnie protokoy UDP i ICMP. Lista aktualnie ledzonych pocze znajduje si
w pliku /proc/net/ip_conntrack. W ostatnich 3 wierszach ustawilimy polityk podstawowych acuchw na DROP w tym momencie nasz router nie odbiera i nie przepuszcza adnych pakietw, moesz to sprawdzi. Teraz wykonamy wstpn konfiguracj parametrw jdra wpywajcych na dziaanie stosu TCP/IP w Linuksie. Jeli z uwag
przeczytae wczeniejsze rozdziay, a zwaszcza ten dotyczcy bezpieczestwa, bdziesz rozumia, co robi te parametry i przeciwko jakim atakom s zabezpieczeniem.
F2G
A;
$-$"-
0
)%)$
H2H
I
),$)))J7);$0$,##
411
412
Standardowym mechanizmem jest ignorowanie pakietw pochodzcych z sieci nie znajdujcych si w naszej tablicy routingu, co odbywa si w wierszu 7. Oznacza to, e jeli na karcie eth1 jest zdefiniowana sie 192.168.1.0/24, to nie przyjmie ona pakietw
z adresu 10.1.23.32. Oczywicie karta eth0 bdzie przyjmowaa pakiety ze wszystkich adresw, poniewa jest poprzez ni dostp do naszej domylnej trasy (routera) rwnie pakiety z adresem rdowym naszej karty eth1. Musimy wic zadba za pomoc
filtrowania na firewallu, aby nie istniaa taka moliwo. Piszemy zatem dalszy cig
skryptu:
%#
*
:9
*
#$
*'
9
%#
*
:9:9
*$
#$
*'
9
Pierwsze co umoliwiamy, to ruch na urzdzeniu lo (lopback), ktre jest wykorzystywane przez rne procesy lokalne. Temu ruchowi nie stawiamy adnych ogranicze.
Poniej tworzymy nowy acuch o nazwie syn-flood, ktry bdzie zabezpiecza nasz
router przed atakami typu DoS. Oczywicie jest bardzo prawdopodobne, e bdziesz
musia dobra (najczciej eksperymentalnie) czuo dziaania moduu limit.
%#
*
*+#$$%#
*
:9
*
6
*
**
*'
*+#$$%#
*
*+#$$-
*;
#;
**#;
2)
**#;*%,
7
*'
9:
%#
*
*+#$$-
*'
**#$0*#J#
-%0
**#$0*,+1
H=*?
H
%#
*
*+#$$-
*'
413
Powysze wiersze wynikaj z pewnej niekonsekwencji w implementacji moduu conntrack sucego do ledzenia pocze w pakiecie netfilter. Modu ten pakiety TCP bez
flagi syn, a z ustawion flag ack uznaje za pakiety NEW, czyli nawizujce poczenie. W pierwszym z powyszych wierszy logujemy (zapisujemy do logw) pakiety
uznane za NEW (-,7), nie posiadajce ustawionej flagi SYN ("). W kolejnym wierszu odrzucamy takie pakiety.
%#
*
:9
*
6
*+
*'
**#$0*#J#
-%0
**#$0*,+1
H> 9=?
H
%#
*
:9
*
6
*+
*'
Powysze reguy nie powinny nastrcza wtpliwoci. Na karcie eth0 nie powinny si
pojawi pakiety z pochodzce z:
wiersz 2 naszego wasnego adresu, charakterystyczne dla ataku Land,
wiersze 4 9 adresw zarezerwowanych; wyremowany zosta zakres 10.0.0.0/8,
Niestety, najczciej komputery w naszej sieci lokalnej bd uyway protokou NetBIOS enkapsulowanego w TCP/IP. Protok ten silnie mieci wysya wiele broadcastw IP protokou UDP na porty 137 i 138. Abymy nie mieli logw systemowych
414
zarzuconych informacjami o dziaalnoci tego protokou, wpisujemy ostatni z powyszych regu. Oczywicie moemy (a nawet powinnimy) doda podobne reguy dotyczce
karty eth1. W kocu dochodzimy do regu okrelajcych, jakie poczenia mog by
nawizane bezporednio z naszym routerem.
:9
%#
*
:9
*
**$,
2647?
**-$,
44
*;
**
*'
9
%#
*
:9
*
**$,
2647?
**-$,
22K
*;
**
*'
S 9
**,'*"
;*$,*,%#
%#
*
:9
*;
**
=9Q=C L 9
*'
9
%#
*
:9
*'
**#$0*#J#
-%0
**#$0*,+1
H:9?
H
%#
*
:9
*'
Moesz rwnie wykorzysta moliwo definiowania adresu MAC komputera uprawnionego do poczenia; po dokadniejszy opis zajrzyj do manuala lub HOWTO. Do
wytumaczenia pozostaje regua nr 3. Bardzo czsto rne serwery usug (np. ftp) pytaj
hosta, z ktrego si czymy, o nasze dane, za pomoc usugi ident dziaajcej na porcie 113. Jeeli nie byoby reguy 3, przykadowy serwer FTP wysaby pakiet na port 113
naszego routera i czeka na odpowied. Poniewa pakiet ten zostaby usunity przez
firewalla, nie otrzymaby adnej odpowiedzi. W kocu otrzymalibymy zgod na poczenie z serwerem FTP, ale czas oczekiwania byby dosy dugi. W wierszu 3 powodujemy, e na zapytania na port 113 protokou TCP generowany jest pakiet protokou ICMP z komunikatem: icmp-port-unreachable. Serwer FTP jest poinformowany,
415
e na naszym hocie usuga ident nie dziaa i ju bez dalszej zwoki pozwala nam si
zalogowa. Zwr rwnie uwag, e dla protokou UDP nie zostay zdefiniowane adne reguy, poniewa nie udostpniamy adnych usug z niego korzystajcych. Tak naprawd to udostpniamy jedynie ssh.
#
:9:9
%#
*
:9:9
*;
**
E
U
*'
9
%#
*
:9:9
*'
**#$0*#J#
-%0
**#$0*,+1
H:9:9?
H
%#
*
:9:9
*'
416
przykad, ktry mia ci pokaza zasady tworzenia firewalla. Moesz si na nim oprze
jak na szkielecie, ale musisz go obudowa wasnymi reguami. Powiniene przeczyta
ponownie rozdzia dotyczcy bezpieczestwa, wypisujc sobie zagroenia, przed ktrymi powinien obroni twoj sie firewall, a nastpnie zaimplementowa t ochron
w formie polece w skrypcie. Warto zajrze na stron domow projektu netfilter i poprzeglda dokumentacj w poszukiwaniu przykadw, rnych nietypowych rozwiza itp. Kilka ciekawych zagadnie porusz w nastpnym podrozdziale.
Logi systemowe
Po uruchomieniu skryptu /etc/rc.d/firewall.start mamy dziaajcy poprawnie firewall.
Przydaoby si, abymy informacje o dziaaniu firewalla mieli w logach. W tym celu
wpisujemy na koniec pliku /etc/syslog.conf nastpujcy kod:
V5V
)-J)24
V5V
)J,)#$0)".$
od tego momentu w pliku /var/log/wszystko (oraz na konsoli 12 Alt+F12) bdziemy mieli wszystkie logi systemowe. Naley uwaa, aby logi nam nie przepeniy partycji, czyli naley poprawnie skonfigurowa logrotate, ale to oczywicie znajdziecie
ju na stronach dotyczcych konfiguracji Linuksa.
Wyczanie firewalla
Czasem istnieje potrzeba szybkiego wyczenia firewalla. Poniej zamieszczam zawarto skryptu czyszczcego ustawienia naszego firewalla. Pamitaj, e po uyciu tego
skryptu nadal dziaa NAT uruchomiony w skrypcie /etc/rc.d/rc.inet1, czyli komputery
z sieci lokalnej maj cigle dostp do Internetu. Dziki temu uytkownicy nie powinni
zauway tej operacji.
417
)),5-)+,"##5$
%#
*
%#
*
;0#
*
%#
*
9
%#
*
:9
9
%#
*
:9:9
9
%#
*W
*+#$$)%)$
H6H
I
),$)))J7);$0$,##
)%)$
H6H
I
),$)))J7);$0$,%,$-
)%)$
H2H
I
),$)))J7)$+)##)$,,$
)%)$
H2H
I
),$)))J7)$+)##),-,
)%)$
H6H
I
),$)))J7);0$,%$0,,$,,$
)%)$
H6H
I
),$)))J7)$+)##),+#,X
)%)$
H6H
I
),$)))J7)$+)##)#$0;,
ICMP Echo
Nie naley uniemoliwia ruchu tych pakietw. Oczywicie decyzja i tak zawsze naley
do ciebie. Dobrym pomysem jest filtrowanie pakietw tego typu skierowanych na adres rozgoszeniowy. Mona wprowadzi bardziej restrykcyjn polityk i zezwoli na
uywanie tego komunikatu jedynie pracownikom technicznym pionu utrzymania sieci.
Ciekawym pomysem jest ustawienie niestandardowego i dosy niskiego maksymalnego
rozmiaru pakietw przepuszczanych przez firewall i przeszkolenie pracownikw w uywaniu polecenia 6w celu generowania pakietw o takich wanie rozmiarach.
418
ICMP Timestamp
Moe zosta wykorzystany do wykrywania komputerw. Naley zupenie blokowa.
ICMP Redirect
Tego typu komunikaty, jeli ju mog si pojawi, to jedynie pomidzy routerami. Moe si zdarzy, e zmienimy router w naszej sieci (zadziaa jaki system awaryjny). Jeli
zmieni si rwnie tablica routingu poprzedniego routera, to bdzie on informowa za
pomoc takich komunikatw komputery prbujce nadal wysya swoje pakiety przez
niego o zmianie domylnej bramy. Najczciej moesz zupenie zablokowa takie komunikaty bez szkody dla swojej sieci.
419
Okazuje si, e nasz firewall nie powinien ogranicza takich pocze. Niestety, okazao
si, e nadal s problemy z prac aplikacji. Sprawdmy wic, co jest usuwane przez
firewall. Po obserwacji logw okazuje si, e naley doda reguy przepuszczajce
rwnie poczenia korzystajce z UDP.
%#
*
*
2
*
-
*
23452O85256)K6
**$,
722?72K
*;
**
L =9Q=C L 9
*'
9
%#
*
*$
2
*
-
*-
23452O85256)K6
**$,
722?72K
*;
**
=9Q=C L 9
*'
9
Jest to przykad rozwizywania problemw tego typu; myl, e nie raz bdziesz zmuszony do rekonfiguracji swojego firewalla, choby w celu przepuszczania komunikacji popularnych czatw z portali internetowych, opartych na komunikacji nawizywanej na wysokie porty. Podam jeszcze jeden bardzo przydatny przykad:
:,#
9$,;
%#
*
*
2
*
-
*
23452O85256)47
**$,
2647?
**-$,
PPPP
*;
**
L =9Q=C L 9
*'
9
420
Pierwsze trzy bity pola TOS (bity pierwszestwa) s obecnie nie uywane. Najwaniejsze s nastpne cztery bity tego pola, ostatni nie jest uywany. Poprawny pakiet powinien mie ustawiony (o wartoci 1) jedynie jeden z tych bitw. Propozycja ustawie dla
poszczeglnych aplikacji zostaa zawarta w RFC 1340.
Tabela 10.2. Zalecane wartoci pola TOS
Aplikacja
000
Telnet,
Rlogin, Ssh
FTP
kontrola
dane
Minimalizacja opnie
Maksymalizacja
szybkoci
Maksymalizacja
poprawnoci
Minimalizacja kosztw
Warto
szesnastkowa
Minimize
Delay
Maximize
Throughput
Maximize
Reliability
Minimize
Cost
000
0x10
000
000
1
0
0
1
0
0
0
0
0
0
0x10
0x08
Dane masowe
000
0x08
TFTP
000
0x10
SMTP
faza komend
faza danych
000
000
1
0
0
1
0
0
0
0
0
0
0x10
0x08
DNS
pytanie UDP
pytanie TCP
transfer strefy
000
000
000
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0x10
0x00
0x08
ICMP
bd
zapytanie
000
000
0
0
0
0
0
0
0
0
0
0
0x00
0x00
ICMP
odpowied
SNMP
000
0x04
BOOTP
000
0x00
NNTP
000
0x02
421
Ostatnie dwa wiersze dotycz transmisji Direct Connect i s dobrane eksperymentalnie. Aby podejrze zawarto tabeli mangle, wpisujemy:
69. Dla
pocze z komputera lokalnego rwnie moemy poustawia TOS.
%#
*
;0#
*
:9:9
*
**-$,
46
*'
9=
***$
8
%#
*
;0#
*
:9:9
*
**-$,
42
*'
9=
***$
2O
%#
*
;0#
*
:9:9
*
**-$,
44
*'
9=
***$
2O
%#
*
;0#
*
:9:9
*
**-$,
4K
*'
9=
***$
2O
%#
*
;0#
*
:9:9
*
**-$,
4N
*'
9=
***$
2O
%#
*
;0#
*
:9:9
*
**-$,
NK
*'
9=
***$
2O
%#
*
;0#
*
:9:9
*
-
**-$,
NK
*'
9=
***$
2O
%#
*
;0#
*
:9:9
*
**-$,
86
*'
9=
***$
8
Skan SYN zostanie wykryty przez acuch syn-flood. Ostatnia regua zapewnia nam
logowanie wszystkich innych podejrzanych pakietw. Aby nie spowodowa zapchania
logw systemowych, zostay dodane parametry =, dziki ktrym zapisywana bdzie tylko cz skanujcych nas pakietw. Oczywicie, jeli agresor ustawi polityk
422
skanowania w programie nmap np. na Paranoid, to zostanie wykryty jedynie pierwszy pakiet, a pozostae nie przekrocz czstotliwoci ustawionej w module limit. Z tego
powodu powiniene zwraca uwag na kady wpis w logach, jednak pamitaj, e dosy
czsto zdarzaj si pakiety nalece do uszkodzonych pocze, ktre mog powodowa
faszywy alarm. Uwzgldnij rwnie, e uywanie zaawansowanych moduw typu
limit powoduje wiksze zuywanie zasobw systemowych.
Wykrywanie NAT
Postanowiem opisa metody wykrywania, czy kto w naszej sieci nie udostpnia cza,
stosujc NAT. Postaram si poda metod, ktra w przypadku wstpienia na drog prawn moe stanowi dowd. Przedstawi rwnie metody zapobiegania wykryciu, ktre
moe zastosowa uytkownik cza.
Teraz nastpi krtkie omwienie metod wykrywania uruchomionej translacji adresw
NAT. Teoretycznie proces NAT jest nie do wykrycia, w rzeczywistoci jest wiele metod, ktrymi mona si posuy, aby go wykry. Mona podejrze zawarto pakietw
TCP i stwierdzi na przykad, e wewntrz nich adres rdowy (np. przy protokole ICQ)
komputera jest ustawiony na inny ni adres rdowy datagramu IP. Cho takie dziaanie ley oczywicie w zakresie moliwoci administratora sieci, jednak z punktu widzenia prawa jest nielegalne (nienaruszalno korespondencji, zachowanie prywatnoci)
i nie moe by uyte jako dowd. Oglnym wnioskiem z rnych dyskusji jest, e
administrator moe podglda jedynie nagwki protokow IP i TCP, UDP, ICMP.
Mona oczywicie na ich podstawie wnioskowa o dokonywanej maskaradzie, jednak nie
bdzie to stuprocentowy dowd. Przykadowo maskarada wykonywana przez jdro
Linuksa serii 2.2 dokonuje pocze z pewnego cile okrelonego zakresu portw zdefiniowanych w pliku /usr/src/linux/include/net/ip_masq.h (dla jdra rozpakowanego
w katalogu /usr/src/linux) w wierszach o treci:
-+
9>=BQ
O2666
-+
9>=B
F9>=BQ Y763OG
Oczywicie wystarczy zmieni te wartoci i przekompilowa jdro, aby zakres by zupenie inny. W nowym jdrze 2.4 moesz teraz uywa portw 61000 65095, nawet
jeli dziaa NAT. Kod maskarady zakada do tej pory, e ten zakres portw jest zarezerwowany do jego uytku, wic programy nie mogy go uywa. Z moich obserwacji
wynika, e w jdrach 2.4 NAT zosta rozwizany poprawnie i alokuje porty od 1024
wzwy czyli tak, jak powinien to robi normalny, pojedynczy komputer. Dla procesw lokalnych rwnie alokuje kolejne porty powyej 1024 i nie powoduje to konfliktw z portami zajtymi dla NAT-u.
Maskarada zmienia wartoci nagwka IP (adres) i protokow niszych TCP/UDP (port),
co powoduje zmian sum kontrolnych obu protokow. Niektre rodzaje oprogramowania NAT nie zmieniay tej sumy. Oczywicie aby to wykry, rwnie musisz przeczyta cay pakiet, do czego nie masz prawa. Czyli ponownie posiadasz informacj
o uywaniu NAT, ale nie moe ona by penoprawnym dowodem. Ponadto s rne
metody oparte na wykrywaniu systemu operacyjnego (fingerprinting) i porwnaniu z np.
rodzajem przegldarki WWW raportowanej przez protok HTTP. Przykadowo jeli
host zachowuje si jak Linux, a przegldark podan w nagwkach HTTP jest MS
423
IE, to sprawa jest prosta. Ta metoda rwnie jest bezprawna, poniewa musiaby odczytywa prywatn transmisj. Myl, e na podstawie analizy dziaania protokow
TCP/IP i protokow warstw wyszych mona wymyli jeszcze wiele metod na wykrywanie NAT.
Ciekaw metod jest sprawdzanie, czy badany host ma uruchomiony proces routingu,
ktry jest potrzebny do poprawnego dziaania NAT. Zamy, e adres podejrzanego
komputera to 192.168.1.100. Na swoim routerze konfigurujesz jak sie, do ktrej
testowany komputer rzekomo bdzie routerem.
,$
--
*
2545K56)47
0"
23452O8525266
2
0
2545K57
Rwnoczenie (na drugiej konsoli) uruchamiasz sniffer. Jeli okae si, e testowany
komputer odpowiedzia na ping do ciebie, bdzie to oznaczao, e ma uruchomiony
routing. Jeli nie miaby routingu, nie powinien reagowa w aden sposb na pakiety
nie przeznaczone dla niego.
Jest jeszcze jeden, niemal pewny sposb na wykrycie NAT. Po prostu nasz firewall
jest oczywicie routerem, a kady router ma obowizek zmniejsza pole TTL w nagwku IP o 1. Uwzgldniajc, e komputery z systemem Windows wysyaj pakiety
z TTL = 128, to pakiety te, wychodzc z karty eth0 routera, bd miay ju ustawiony
TTL = 127. Mona to prosto sprawdzi:
-;
*J
*
*
6
Pakiety generowane lokalnie przez nasz router maj ustawion charakterystyczn dla
Linuksa warto TTL = 64. Aby zwikszy warto pola TTL o jeden, czyli ukry fakt
przechodzenia pakietw przez router, na kocu naszego skryptu konfigurujcego firewalla dodajemy wiersz:
<"&.;
$
2
$#
99
.!"
,$-A
,
9
%#
*
;0#
*
:9
*
23452O85256)47
*'
99
**#*
2
Z miana wartoci TTL odbywa si w tabeli mangle (6) w acuchu PREROUTING. Nie moemy wykorzysta acucha OUTPUT tej tabeli (innych acuchw ona nie posiada), poniewa zmieniaby on tylko pakiety wychodzce bezporednio z routera, a nie przechodzce przez niego. Ograniczamy pakiety zmieniane przez
regu do pochodzcych z komputerw w sieci lokalnej 192.168.1.0/24, na ktrych
dokonujemy procesu NAT. Niestety, najprawdopodobniej nie sprowadzi si to do wpisania dodatkowej reguy do pliku konfigurujcego firewalla. Najczciej w dystrybucjach Linuksa pakiet iptables jest bez aty (patch) udostpniajcej opcj +%%9. Aby j
wczy, bdziemy musieli pobra rda pakietu iptables, zainstalowa aty na jdro
Linuksa zawarte w pakiecie, skompilowa i zainstalowa nowe jdro oraz skompilowa samo iptables. Oczywicie wczeniej najlepiej jest usun pakiet iptables, ktry
mielimy zainstalowany wraz z nasz dystrybucj Linuksa.
Pakiet iptables cigamy ze strony domowej projektu netfilter http://www.netfilter.org.
Naley zajrze do FAQ i z podanych tam adresw cign iptables. Nastpnie przeczyta rozdzia dotyczcy patch-o-matic. Jest to system dodatkw do iptables; jednym z nich jest wanie ata TTL. Rozpakowujemy iptables i kompilujemy patche:
424
Otrzymamy list pyta, najpierw o pooenie rde jdra, na ktre chcemy zainstalowa dodatki, a nastpnie o to, czy chcemy uy kolejnych patchy zawartych w patch-o-matic. Powinnicie wybra te zwizane z TTL (moe rwnie inne, jeli spodobaj
si ci ich moliwoci), a nastpnie skompilowa i zainstalowa samo iptables:
;.
;.
##
Pniej czeka nas konfiguracja, kompilacja i instalacja nowego jdra, ale tego ju nie
bd omawia. Pamitaj jedynie, aby przy konfiguracji jdra zaznaczy (choby jako
moduy) elementy dotyczce iptables (a zwaszcza TTL). Oczywicie nie wszystkie musisz wkompilowywa bezporednio w jdro, ale to ju zaley od ciebie.