39
Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: [email protected] PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ IDZ DO IDZ DO ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG KATALOG KSI¥¯EK KATALOG KSI¥¯EK TWÓJ KOSZYK TWÓJ KOSZYK CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW CENNIK ZAMÓW CENNI K CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE SPIS TRECI SPIS TRECI DODAJ DO KOSZYKA DODAJ DO KOSZYKA KATALOG ONLINE KATALOG ONLINE Bezpieczeñstwo w Linuksie. Podrêcznik administratora Twój Linux zostanie zaatakowany — mo¿esz byæ tego pewien. Mo¿e to nast¹piæ za kilka miesiêcy, ale mo¿e dzieje siê to w³anie teraz. B¹d wiêc przygotowany. Niniejsza ksi¹¿ka omawia zarówno rozwi¹zania, jak i wyj¹tkowe oprogramowanie s³u¿¹ce do ochrony systemu Linux lub sieci komputerowej. Autor powiêci³ wiele czasu, aby ostateczna wersja ksi¹¿ki opisywa³a najgroniejsze ataki w internecie. Dziêki niej uzyskasz wszystkie informacje potrzebne do skutecznej obrony. W ksi¹¿ce omówiono: • Nowe funkcje IP tables • Nowe techniki oraz oprogramowanie s³u¿¹ce do wykrywania oraz blokowania ataków ARP oraz ataków na prze³¹czniki • Usprawnienia zapór sieciowych opartych na systemie Linux filtruj¹cych zawartoæ pakietów • Opis bezpieczeñstwa us³ugi Samba dla klientów systemu Windows. • Bezpieczeñstwo w sieciach bezprzewodowych (standard 802.11b) • Sposób wykorzystania programów Logcheck, Portsentry oraz innych, nowych narzêdzi monitoruj¹cych sieæ komputerow¹ • Bezpieczeñstwo sieci VPN oraz komunikatorów internetowych; program GPG; funkcje j¹dra 2.4 i wiele innych zagadnieñ • Zabezpieczenia fizyczne Do³¹czona do ksi¹¿ki p³yta CD-ROM zawiera w³asne oprogramowanie autora, s³u¿¹ce do natychmiastowego zablokowania poczynañ hakerów oraz powiadomienia administratorów systemu. P³yta zawiera równie¿ niepublikowane wczeniej skrypty IP Tables oraz IP Chains oraz nowe narzêdzia s³u¿¹ce do monitorowania stanu sieci komputerowej, wykrywania podejrzanych dzia³añ oraz raportowania o nich, zabezpieczania kopii i uproszczenia odtwarzania systemu. O autorze: Bob Toxen ma ponad 28 lat dowiadczenia w zakresie systemów UNIX (Linux). Jest jednym ze 162 twórców systemu Berkeley UNIX. O zabezpieczeniach dowiedzia³ siê na uniwersytecie w Berkeley, gdzie z³ama³ kilka oryginalnych systemów UNIX. Obecnie jest prezesem firmy Fly-By-Day Consulting specjalizuj¹cej siê w zabezpieczeniach systemu Linux oraz sieci komputerowych, sieci VPN, monitorowaniu w trybie 24/7 oraz wykonywaniu czynnoci administracyjnych dla wielu klientów na ca³ym wiecie. W roku 2002 jego zalecenia zosta³y do³¹czone do raportu na temat udoskonalania wywiadu Stanów Zjednoczonych przedstawionego prezydentowi Bushowi. Autor: Bob Toxen T³umaczenie: Marcin Jêdrysiak (rozdz. 6-11), Marek Pêtlicki (rozdz. 12-14), Piotr Pilch (rozdz. 17-19), Rafa³ Szpoton (rozdz. 1-5,dod. F), Grzegorz Werner (rozdz. 15-16, 20, dod. A, C-D) ISBN: 83-7361-333-1 Tytu³ orygina³u: Real World Linux Security Format: B5, stron: 888

Bezpieczeństwo w Linuksie. Podręcznik administratora

Embed Size (px)

DESCRIPTION

Twój Linux zostanie zaatakowany -- możesz być tego pewien. Może to nastąpić za kilka miesięcy, ale może dzieje się to właśnie teraz. Bądź więc przygotowany. Niniejsza książka omawia zarówno rozwiązania, jak i wyjątkowe oprogramowanie służące do ochrony systemu Linux lub sieci komputerowej. Autor poświęcił wiele czasu, aby ostateczna wersja książki opisywała najgroźniejsze ataki w internecie. Dzięki niej uzyskasz wszystkie informacje potrzebne do skutecznej obrony.W książce omówiono:* Nowe funkcje IP tables* Nowe techniki oraz oprogramowanie służące do wykrywania oraz blokowania ataków ARP oraz ataków na przełączniki* Usprawnienia zapór sieciowych opartych na systemie Linux filtrujących zawartość pakietów* Opis bezpieczeństwa usługi Samba dla klientów systemu Windows.* Bezpieczeństwo w sieciach bezprzewodowych (standard 802.11b)* Sposób wykorzystania programów Logcheck, Portsentry oraz innych, nowych narzędzi monitorujących sieć komputerową* Bezpieczeństwo sieci VPN oraz komunikatorów internetowych; program GPG; funkcje jądra 2.4 i wiele innych zagadnień* Zabezpieczenia fizyczneDołączona do książki płyta CD-ROM zawiera własne oprogramowanie autora, służące do natychmiastowego zablokowania poczynań hakerów oraz powiadomienia administratorów systemu. Płyta zawiera również niepublikowane wcześniej skrypty IP Tables oraz IP Chains oraz nowe narzędzia służące do monitorowania stanu sieci komputerowej, wykrywania podejrzanych działań oraz raportowania o nich, zabezpieczania kopii i uproszczenia odtwarzania systemu."Kompletny przewodnik po bezpieczeństwie systemów -- obejmuje wszystkie niezbędne zagadnienia, począwszy od wzmacniania systemu aż po przywracanie go do działania po ataku"Steve Bourne, twórca powłoki Bourne.O autorze: Bob Toxen ma ponad 29 lat doświadczenia w zakresie systemów UNIX (Linux). Jest jednym ze 162 twórców systemu Berkeley UNIX. [więcej...]

Citation preview

Page 1: Bezpieczeństwo w Linuksie. Podręcznik administratora

Wydawnictwo Helion

ul. Chopina 6

44-100 Gliwice

tel. (32)230-98-63

e-mail: [email protected]

PRZYK£ADOWY ROZDZIA£PRZYK£ADOWY ROZDZIA£

IDZ DOIDZ DO

ZAMÓW DRUKOWANY KATALOGZAMÓW DRUKOWANY KATALOG

KATALOG KSI¥¯EKKATALOG KSI¥¯EK

TWÓJ KOSZYKTWÓJ KOSZYK

CENNIK I INFORMACJECENNIK I INFORMACJE

ZAMÓW INFORMACJEO NOWO�CIACH

ZAMÓW INFORMACJEO NOWO�CIACH

ZAMÓW CENNIKZAMÓW CENNIK

CZYTELNIACZYTELNIA

FRAGMENTY KSI¥¯EK ONLINEFRAGMENTY KSI¥¯EK ONLINE

SPIS TRE�CISPIS TRE�CI

DODAJ DO KOSZYKADODAJ DO KOSZYKA

KATALOG ONLINEKATALOG ONLINE

Bezpieczeñstwo w Linuksie.Podrêcznik administratora

Twój Linux zostanie zaatakowany — mo¿esz byæ tego pewien. Mo¿e to nast¹piæ

za kilka miesiêcy, ale mo¿e dzieje siê to w³a�nie teraz. B¹d� wiêc przygotowany.

Niniejsza ksi¹¿ka omawia zarówno rozwi¹zania, jak i wyj¹tkowe oprogramowanie

s³u¿¹ce do ochrony systemu Linux lub sieci komputerowej. Autor po�wiêci³ wiele

czasu, aby ostateczna wersja ksi¹¿ki opisywa³a najgro�niejsze ataki w internecie.

Dziêki niej uzyskasz wszystkie informacje potrzebne do skutecznej obrony.

W ksi¹¿ce omówiono:

• Nowe funkcje IP tables

• Nowe techniki oraz oprogramowanie s³u¿¹ce do wykrywania

oraz blokowania ataków ARP oraz ataków na prze³¹czniki

• Usprawnienia zapór sieciowych opartych na systemie Linux

filtruj¹cych zawarto�æ pakietów

• Opis bezpieczeñstwa us³ugi Samba dla klientów systemu Windows.

• Bezpieczeñstwo w sieciach bezprzewodowych (standard 802.11b)

• Sposób wykorzystania programów Logcheck, Portsentry oraz innych,

nowych narzêdzi monitoruj¹cych sieæ komputerow¹

• Bezpieczeñstwo sieci VPN oraz komunikatorów internetowych;

program GPG; funkcje j¹dra 2.4 i wiele innych zagadnieñ

• Zabezpieczenia fizyczne

Do³¹czona do ksi¹¿ki p³yta CD-ROM zawiera w³asne oprogramowanie autora, s³u¿¹ce

do natychmiastowego zablokowania poczynañ hakerów oraz powiadomienia

administratorów systemu. P³yta zawiera równie¿ niepublikowane wcze�niej skrypty IP

Tables oraz IP Chains oraz nowe narzêdzia s³u¿¹ce do monitorowania stanu sieci

komputerowej, wykrywania podejrzanych dzia³añ oraz raportowania o nich,

zabezpieczania kopii i uproszczenia odtwarzania systemu.

O autorze:

Bob Toxen ma ponad 28 lat do�wiadczenia w zakresie systemów UNIX (Linux).

Jest jednym ze 162 twórców systemu Berkeley UNIX. O zabezpieczeniach dowiedzia³ siê

na uniwersytecie w Berkeley, gdzie z³ama³ kilka oryginalnych systemów UNIX. Obecnie

jest prezesem firmy Fly-By-Day Consulting specjalizuj¹cej siê w zabezpieczeniach

systemu Linux oraz sieci komputerowych, sieci VPN, monitorowaniu w trybie 24/7

oraz wykonywaniu czynno�ci administracyjnych dla wielu klientów na ca³ym �wiecie.

W roku 2002 jego zalecenia zosta³y do³¹czone do raportu na temat udoskonalania

wywiadu Stanów Zjednoczonych przedstawionego prezydentowi Bushowi.

Autor: Bob Toxen

T³umaczenie: Marcin Jêdrysiak (rozdz. 6-11), Marek Pêtlicki

(rozdz. 12-14), Piotr Pilch (rozdz. 17-19), Rafa³ Szpoton (rozdz.

1-5,dod. F), Grzegorz Werner (rozdz. 15-16, 20, dod. A, C-D)

ISBN: 83-7361-333-1

Tytu³ orygina³u: Real World Linux Security

Format: B5, stron: 888

Page 2: Bezpieczeństwo w Linuksie. Podręcznik administratora

Spis treści

O Autorze ........................................................................................ 19

Przedmowa...................................................................................... 21

Rozdział 1. Wprowadzenie ................................................................................. 231.1. Kto powinien przeczytać tę książkę?.......................................................................231.2. Sposób organizacji książki ......................................................................................24

1.2.1. Konwencje zastosowane w książce ...............................................................271.2.2. Podstawy........................................................................................................28

1.3. Przed czym się bronimy?.........................................................................................301.4. Kim są wrogowie? ...................................................................................................311.5. Cele działania...........................................................................................................341.6. Koszty: Ochrona kontra włamania ..........................................................................351.7. Zabezpieczanie sprzętu ............................................................................................351.8. Zabezpieczanie sieci oraz dostępu modemowego ...................................................351.9. Zabezpieczanie dostępu do systemu........................................................................361.10. Zabezpieczanie plików ............................................................................................371.11. Przygotowanie do wykrywania włamania...............................................................371.12. Przywracanie działania systemu po włamaniu ........................................................38

Część I Zabezpieczanie systemu.................................................39

Rozdział 2. Szybkie rozwiązania najczęstszych problemów .................................. 432.1. Podstawy zabezpieczeń systemu Linux...................................................................44

2.1.1. Labirynt krętych korytarzy ............................................................................442.1.2 Drogi przeprowadzania ataku .........................................................................492.1.3. Pierścienie zabezpieczeń................................................................................52

2.2. Siedem grzechów głównych ....................................................................................542.2.1. Słabe oraz domyślne hasła (grzech 1)............................................................542.2.2. Otwarte porty sieciowe (grzech 2).................................................................562.2.3. Stare wersje oprogramowania (grzech 3) ......................................................592.2.4. Niebezpieczne oraz źle skonfigurowane programy (grzech 4)......................602.2.5. Niewystarczające zasoby oraz niewłaściwie zdefiniowane

priorytety (grzech 5) ...................................................................................672.2.6. Przedawnione oraz niepotrzebne konta (grzech 6) ........................................702.2.7. Zwłoka w działaniu (grzech 7) ......................................................................71

2.3. Hasła — kluczowa kwestia dobrego zabezpieczenia ..............................................712.3.1. Zapobieganie słabym i domyślnym hasłom...................................................72

Page 3: Bezpieczeństwo w Linuksie. Podręcznik administratora

8 Bezpieczeństwo w Linuksie. Podręcznik administratora

2.4. Zaawansowane techniki dotyczące haseł.................................................................772.4.1. Ukrywanie haseł przy użyciu pliku shadow w celu zapewnienia

odpowiednich zabezpieczeń .......................................................................782.4.2. Prośba o ponowne wprowadzenie hasła ........................................................792.4.3. Czy hasła powinny mieć określony okres ważności?....................................812.4.4. Nazwy kont ....................................................................................................82

2.5. Zabezpieczanie systemu przed pomyłkami użytkowników ....................................832.5.1. Zagrożenia spowodowane przez oprogramowanie importowane..................872.5.2. Edukacja użytkowników................................................................................88

2.6. Przebaczenie jest lepsze niż zezwolenie..................................................................892.6.1. Katalogi oraz sticky bit ..................................................................................912.6.2. Wyszukiwanie problemów z prawami dostępu .............................................922.6.3. Wykorzystanie umask w skryptach startowych.............................................97

2.7. Zagrożenia oraz środki zaradcze podczas początkowej konfiguracji systemu........982.7.1. Sprawdzanie zabezpieczeń systemu Red Hat 7.3 ........................................100

2.8. Ograniczanie nierozsądnego dostępu ....................................................................1042.8.1. Ograniczenie terminali, z których mogą pochodzić

nadchodzące połączenia ...........................................................................1042.8.2. Dzwonienie z zewnątrz (wardialing) ...........................................................1062.8.3. Zabezpieczanie niekontrolowanego dostępu do danych..............................1072.8.4. Ograniczanie interfejsów serwera................................................................108

2.9. Zapory sieciowe oraz zabezpieczenia korporacyjne..............................................1082.9.1. Zabezpieczanie obejść zapór sieciowych ....................................................1092.9.2. Tunelowanie poprzez zapory sieciowe ........................................................1132.9.3. Opcje jądra dotyczące protokołów ..............................................................1162.9.4. Filtrowanie pakietów wychodzących...........................................................1172.9.5. Pułapki w lokalnej sieci komputerowej .......................................................1182.9.6. Wewnątrzfirmowe zapory sieciowe powstrzymujące atak..........................121

2.10. Wyłączanie niepotrzebnych usług .........................................................................1252.11. Silne zabezpieczenia wymagają minimalnej ilości usług......................................1322.12. Zamurowywanie luk w systemie ...........................................................................133

2.12.1. Nie używaj programu finger ......................................................................1332.12.2. Wyłączanie usługi rwhod...........................................................................1352.12.3. Wyłączanie usługi rwalld...........................................................................1362.12.4. Wyłączanie usługi SNMP..........................................................................1362.15.5. Wyłączanie usług NFS, mountd oraz portmap ..........................................1382.12.6. Przełączanie usługi NFS na używanie protokołu TCP ..............................1392.12.7. Wyłączanie usług rsh, rcp, rlogin oraz rexec.............................................1402.12.8. Wyłączanie usług echo oraz chargen.........................................................1412.12.9. Wyłączanie usług talk oraz ntalk ...............................................................1422.12.10. Wyłączanie usługi TFTP ...........................................................................1422.12.11. Wyłączanie usług systat oraz netstat .........................................................1422.12.12. Wyłączanie wewnętrznych usług xinetd ...................................................143

2.13. Nowe lampy zamiast starych.................................................................................1432.13.1. Uaktualnianie jądra w wersji 2.4 ...............................................................1472.13.2. Uaktualnianie jądra w wersji 2.2 ...............................................................1482.13.3. Uaktualnianie programu sendmail .............................................................1482.13.4. Wzmacnianie programu sendmail w celu odparcia ataków DoS ..............1512.13.5. Uaktualnianie programu SSH ....................................................................1542.13.6. Uaktualnianie usługi WU-FTPD ...............................................................1542.13.7. Uaktualnianie programu Netscape.............................................................1552.13.8. Blokowanie reklam internetowych ............................................................156

2.14. Zjednoczeni zginiemy, podzieleni przetrwamy.....................................................157

Page 4: Bezpieczeństwo w Linuksie. Podręcznik administratora

Spis treści 9

Rozdział 3. Szybkie oraz proste sposoby włamania. Sposoby ich unikania.......... 1593.1. X oznacza lukę w zabezpieczeniach......................................................................1603.2. Prawo dżungli — zabezpieczenia fizyczne ...........................................................1643.3. Działania fizyczne .................................................................................................169

3.3.1. Uruchamianie systemu przy użyciu dyskietki lub płyty CD włamywacza ... 1703.3.2. Ponowna konfiguracja pamięci CMOS .......................................................1713.3.3. Dodawanie hasła CMOS..............................................................................1723.3.4. Obrona przed trybem pojedynczego użytkownika ......................................1733.3.5. Obrona przed kradzieżą przy użyciu dyskietki............................................1753.3.6. Zapobieganie atakom przy użyciu kombinacji Ctrl-Alt-Del .......................175

3.4. Wybrane krótkie zagadnienia ................................................................................1763.4.1. Modemy kablowe ........................................................................................1763.4.2. $PATH: Katalog . grozi nieszczęściem .......................................................1773.4.3. Blokowanie routingu źródłowego w IP .......................................................1783.4.4. Blokowanie fałszowania adresów IP ...........................................................1803.4.5. Automatyczne blokowanie ekranu...............................................................1813.4.6. /etc/mailcap..................................................................................................1823.4.7. Program chattr oraz bit niezmienności ........................................................1833.4.8. Bezpieczne usuwanie danych ......................................................................1843.4.9. Synchroniczne operacje wejścia-wyjścia.....................................................1853.4.10. Znaczniki montowania służące do zwiększenia zabezpieczeń....................1863.4.11. Ukrywanie UDP w TCP oraz SSH ..............................................................1873.4.12. Problem z programem man..........................................................................1883.4.13. Ustawianie ograniczeń przy użyciu poleceń *limit .....................................1903.4.14. Dostępna publicznie historia poleceń powłoki ............................................1913.4.15. Podstawy protokołu rozwiązywania adresów (ARP) ..................................1923.4.16. Zapobieganie modyfikacjom pamięci podręcznej ARP ..............................1933.4.17. Atakowanie przełączników..........................................................................1953.4.18. Odpieranie ataków ARP na systemy oraz przełączniki ...............................1983.4.19. Technologia WEP........................................................................................2003.4.20. Przechwytywanie danych z diod LED.........................................................2033.4.21. Powrót do powłoki.......................................................................................2043.4.22. Zabezpieczenia dostawcy ISP......................................................................2053.4.23. Podsłuchiwanie terminali (ttysnoop) ...........................................................2083.4.24. Program Star Office.....................................................................................2083.4.25. Programy VMware, Wine, DOSemu oraz podobne ....................................209

3.5. Ataki za pomocą urządzeń terminalowych............................................................2093.5.1. Przechwytywanie klawisza funkcyjnego .....................................................2103.5.2. Podatność na przeprogramowanie klawiszy złożonych...............................2113.5.3. Zmiana pliku z logiem w programie xterm .................................................211

3.6. Podglądanie zawartości dysku...............................................................................2123.6.1. Prawdziwe usuwanie plików .......................................................................2133.6.2. Usuwania starych poufnych danych umieszczonych w wolnych blokach ..2163.6.3. Usuwanie całej zawartości dysku ................................................................2193.6.4. Zniszczenie twardego dysku........................................................................220

Rozdział 4. Powszechne włamania przy wykorzystaniu podsystemów................. 2214.1. Usługi NFS, mountd oraz portmap........................................................................2224.2. Program Sendmail .................................................................................................224

4.2.1. Wykorzystywanie oddzielnych lub wielu serwerów pocztowychw celu dodatkowego zabezpieczenia........................................................226

4.2.2. Podstawowe zabezpieczenia programu Sendmail .......................................2274.2.3. Opcje bezpieczeństwa programu Sendmail .................................................2304.2.4. Fałszowanie adresu nadawcy wiadomości pocztowych ..............................234

Page 5: Bezpieczeństwo w Linuksie. Podręcznik administratora

10 Bezpieczeństwo w Linuksie. Podręcznik administratora

4.2.5. Skąd pochodzą te wszystkie niechciane wiadomości? ................................2344.2.6. Wyłączanie przesyłania niechcianych wiadomości .....................................2374.2.7. Blokowanie niechcianych wiadomości........................................................2374.2.8. Oszukiwanie robotów poszukujących adresów ...........................................2384.2.9. Umożliwianie ograniczonego zaufania........................................................2384.2.10. Zezwalanie klientom POP oraz IMAP na wysyłanie poczty.......................2404.2.11. Uniemożliwianie użycia otwartych list dystrybucyjnych............................2414.2.12. Atak DoS na program Sendmail, polegający na zapełnieniu dysku............241

4.3. Program Telnet ......................................................................................................2424.4. Usługa FTP ............................................................................................................243

4.4.1. Konfiguracja anonimowej usługi FTP.........................................................2464.4.2. Zagrożenia spowodowane przez serwery pośredniczące FTP.....................252

4.5. Usługi rsh, rcp, rexec oraz rlogin...........................................................................2534.5.1. Bezpieczeństwo programów R* ..................................................................2544.5.2. Niebezpieczeństwo programów R* .............................................................255

4.6. Usługa DNS (named).............................................................................................2564.6.1. Ograniczanie konsekwencji nadużycia usługi named .................................2574.6.2. Służyć człowiekowi .....................................................................................258

4.7. Serwery POP oraz IMAP.......................................................................................2604.7.1. Hasła w wierszu poleceń..............................................................................262

4.8. Konfiguracja Samby ..............................................................................................2644.8.1. Czym jest Samba?........................................................................................2654.8.2. Wersje ..........................................................................................................2654.8.3. Czy Samba jest zainstalowana? ...................................................................2654.8.4. Jaką wersję Samby posiadam?.....................................................................2664.8.5. Plik smb.conf ...............................................................................................2664.8.6. Plik smbpasswd............................................................................................2684.8.7. Plik odwzorowań użytkowników.................................................................2694.8.8. Pliki z logami ...............................................................................................2704.8.9. Dynamiczne pliki danych ............................................................................2714.8.10. Bezpieczna konfiguracja Samby..................................................................2714.8.11. Bezpieczeństwo sieciowe usługi Samba......................................................2724.8.12. Bezpieczeństwo plików Samby ...................................................................2754.8.13. Bezpieczeństwo użytkownika......................................................................2804.8.14. Bezpieczeństwo zarządzania Sambą............................................................2844.8.15. Wykorzystywanie SSL z Sambą..................................................................286

4.9. Blokowanie odwołań do programu Squid .............................................................2864.10. Usługa syslogd.......................................................................................................2904.11. Usługa print (lpd)...................................................................................................2914.12. Usługa ident ...........................................................................................................2924.13. Usługi INND oraz News........................................................................................2934.14. Bezpieczeństwo twoich danych w firmie rejstrującej domeny .............................294

Rozdział 5. Ataki powszechnie stosowane przez włamywaczy ........................... 2975.1. Ataki przypuszczane przy użyciu predefiniowanych narzędzi..............................2985.2. Fałszowanie pakietów............................................................................................299

5.2.1. Dlaczego udaje się fałszowanie pakietów UDP ..........................................3025.2.2. Fałszowanie sekwencji TCP ........................................................................3045.2.3. Przechwytywanie sesji TCP.........................................................................305

5.3. Ataki typu SYN Flood ...........................................................................................3065.4. Obrona przed atakami typu SYN Flood ................................................................3075.5. Zapobieganie fałszowaniu sekwencji TCP............................................................3075.6. Sztormy pakietów, ataki smurfów oraz fraglesi ....................................................308

5.6.1. Zapobieganie wykorzystaniu systemu w charakterze wzmacniacza ...........3105.6.2. Obrona przed atakiem używającym sztormu pakietów ...............................312

Page 6: Bezpieczeństwo w Linuksie. Podręcznik administratora

Spis treści 11

5.6.3. Routery Cisco ..............................................................................................3135.6.4. Ataki DDoS: zasoby sieciowe z narzędziami do przeciwdziałania.............314

5.7. Przepełnianie buforów oraz niszczenie zawartości pamięci..................................3145.8. Techniki fałszowania .............................................................................................315

5.8.1. Fałszowanie wiadomości pocztowych.........................................................3165.8.2. Atak realizowany przy użyciu adresu MAC................................................3175.8.3. Zmiana pamięci podręcznej ARP ................................................................3185.8.4. Zmiana pamięci podręcznej DNS................................................................319

5.9. Atak typu Man-in-the-Middle................................................................................319

Rozdział 6. Zaawansowane problemy bezpieczeństwa....................................... 3236.1. Konfigurowanie zabezpieczeń w przeglądarce Netscape......................................324

6.1.1. Ważne preferencje przeglądarki Netscape...................................................3246.1.2. Przeglądanie własnych cookies ...................................................................3286.1.3. Preferencje użytkowników w przeglądarce Netscape .................................3286.1.4. Narzędzie Netscape Personal Security Manager .........................................3296.1.5. Bezpieczeństwo skryptów Java w przeglądarce Netscape ..........................329

6.2. Blokowanie dostępu do urządzeń wejścia-wyjścia................................................3316.2.1. Dlaczego urządzenie /dev/tty ma tryb 666?.................................................3376.2.2. Bezpieczeństwo bufora konsoli wirtualnej ..................................................3376.2.3. Szyfrujący sterownik dysku.........................................................................337

6.3. Usuwanie problemów z serwerem Apache (httpd)................................................3386.3.1. Prawa własności i uprawnienia serwera Apache .........................................3396.3.2. Server Side Includes (SSI)...........................................................................3406.3.3. Dyrektywa ScriptAlias.................................................................................3416.3.4. Zapobieganie zmianom ustawień ogólnosystemowych...............................3416.3.5. Kontrolowanie katalogów dostępnych dla Apache .....................................3426.3.6. Kontrolowanie rozszerzeń plików dostępnych dla Apache.........................3426.3.7. Inne ustawienia ............................................................................................3436.3.8. Opróżnianie bazy danych.............................................................................3446.3.9. Blokowanie niepożądanych osób.................................................................3476.3.10. Odsyłacze do witryny ..................................................................................347

6.4. Specjalne techniki dla serwerów WWW...............................................................3486.4.1. Zbuduj niezależne twierdze .........................................................................3496.4.2. Nie ufaj skryptom CGI ................................................................................3496.4.3. Ukryte zmienne formularzy i zatrute cookies..............................................3506.4.4. Proszę, weź sobie naszych pracowników ....................................................3506.4.5. Blokowanie robota przeszukującego strony internetowe ............................3516.4.6. Niebezpieczne programy CGI .....................................................................3526.4.7. Dziura w programie CGI query ...................................................................3536.4.8. Odszyfrowanie zakodowanych adresów URL.............................................3546.4.9. Dziura w programie CGI counterfiglet ........................................................3566.4.10. Dziura w programie CGI phf.......................................................................3566.4.11. Skrypty i programy CGI ..............................................................................3566.4.12. Wymuszenie blokowania adresów URL .....................................................3636.4.13. Wykrywanie zmodyfikowanych stron internetowych .................................365

6.5. Jednokierunkowa ścieżka danych karty kredytowej..............................................3666.6. Zapewnianie najwyższego poziomu bezpieczeństwa............................................3706.7. Ograniczanie miejsca i czasu logowania ...............................................................3796.8. Nietypowe, ale niebezpieczne problemy ...............................................................381

6.8.1. Zabezpieczanie przed atakami przepełnienia bufora ...................................3816.8.2. Usuwanie zagrożenia chroot() .....................................................................3836.8.3. Atak Symlink ...............................................................................................3856.8.4. Problem z katalogami lost+found................................................................3886.8.5. Wyścig rm –r ...............................................................................................389

Page 7: Bezpieczeństwo w Linuksie. Podręcznik administratora

12 Bezpieczeństwo w Linuksie. Podręcznik administratora

6.9. Usuwanie symulatorów logowania........................................................................3906.9.1. Aktualizacja pliku /etc/issue ........................................................................3926.9.2. Dostosowanie programu /bin/login..............................................................3946.9.3. Obsługa Secure Attention Key w jądrze......................................................394

6.10. Ochrona przed przepełnieniem bufora za pomocą Libsafe ...................................397

Rozdział 7. Ustanawianie zasad zabezpieczeń................................................... 3997.1. Ogólne zasady........................................................................................................4007.2. Zasady użytkowania komputerów .........................................................................4017.3. Zasady dotyczące kont użytkowników..................................................................4037.4. Zasady dotyczące poczty elektronicznej ...............................................................4047.5. Zasady dotyczące komunikacji za pomocą wiadomości błyskawicznych

(Instant Messaging) .............................................................................................4067.6. Zasady dotyczące serwera WWW.........................................................................4077.7. Zasady dotyczące serwera plików i baz danych ....................................................4087.8. Zasady dotyczące zapory sieciowej.......................................................................4097.9. Zasady dotyczące komputerów biurkowych .........................................................4097.10. Zasady dotyczące komputerów przenośnych ........................................................4107.11. Zasady usuwania komputerów i nośników............................................................4147.12. Zasady dotyczące topologii sieci ...........................................................................414

7.12.1. Zasady dotyczące topologii sieci wewnętrznej............................................4157.13. Zasady zgłaszania problemów...............................................................................4187.14. Zasady własności ...................................................................................................4187.15. Zasady dotyczące zasad.........................................................................................419

Rozdział 8. „Zaufanie” do innych komputerów.................................................. 4218.1. Bezpieczne i niebezpieczne systemy .....................................................................4228.2. Nie ufaj nikomu — najwyższy poziom bezpieczeństwa .......................................4238.3. Systemy Linux i UNIX pod kontrolą.....................................................................4248.4. Systemy mainframe pod kontrolą ..........................................................................4268.5. Jedno okno jest warte tysiąca dziur .......................................................................4268.6. Słabe punkty w zaporze sieciowej .........................................................................4288.7. Wirtualne sieci prywatne .......................................................................................4328.8. Linux i wirusy........................................................................................................433

Rozdział 9. Nietypowe metody włamania .......................................................... 4359.1. Techniki rodem z filmu Mission Impossible .........................................................4359.2. Szpiedzy.................................................................................................................438

9.2.1. Szpiegostwo przemysłowe...........................................................................4399.3. Fanatycy i ataki samobójcze ..................................................................................439

Rozdział 10. Analiza przypadków........................................................................ 44110.1. Wyznania kreta w systemie Berkeley..................................................................44210.2. Błędni rycerze ......................................................................................................44510.3. Ken Thompson włamuje się do marynarki ..........................................................44710.4. Koń trojański w maszynie wirtualnej ..................................................................44810.5. Wpadka ze zmianą wpisów DNS firmy AOL .....................................................44910.6. Ja naprawdę jestem niewinny, przysięgam! ........................................................45110.7. Włamania realizowane z wykorzystaniem laptopa i budki telefonicznej............45210.8. Kilka centów z każdego dolara............................................................................45310.9. Organizacja non-profit ma pecha.........................................................................45410.10. Upór czasami się opłaca ......................................................................................45510.11. Pakiet .Net z wirusem Nimda ..............................................................................456

Page 8: Bezpieczeństwo w Linuksie. Podręcznik administratora

Spis treści 13

Rozdział 11. Ostatnio zaobserwowane metody włamań ....................................... 45911.1. Ataki fragmentacji ...............................................................................................46011.2. Niepowodzenie maskarady IP dla ICMP.............................................................46111.3. Atak Ping of Death zatapia holenderskiego spedytora ........................................46211.4. Kapitanie, ktoś nas skanuje! (ukryte skanowanie) ..............................................46311.5. Modemy kablowe — marzenie krakera...............................................................46411.6. Użycie programu sendmail do blokowania ataków e-mailowych.......................46411.7. Odgadywanie adresów kont za pomocą programu sendmail ..............................46511.8. Tajemnicza blokada bazy danych Ingres .............................................................46611.9. Śledzenie użytkowników.....................................................................................466

11.9.1. Numer seryjny Pentium III ..........................................................................46711.9.2. Szpiegowanie poprzez identyfikator GUID.................................................467

11.10. Koordynowane ataki DDoS.................................................................................46811.11. Ukryte konie trojańskie .......................................................................................472

11.11.1. Do czego potrzebne są pakiety zwrotne echa ICMP? .................................47311.11.2. Przyszłe kierunki rozwoju koni trojańskich ................................................47411.11.3. Tryb promiscuous w komunikatach jądra ...................................................475

11.12. Narzędzie Linuxconf i port TCP 98 ....................................................................47611.13. Złośliwe znaczniki i skrypty HTML ...................................................................47611.14. Problemy z formatowaniem i procedura syslog()................................................477

Część II Przygotowanie do ataku ...............................................479

Rozdział 12. Zwiększanie bezpieczeństwa systemu ............................................ 48112.1. Zabezpieczanie sesji użytkownika za pomocą SSH ............................................481

12.1.1. Kompilacja SSH2 ......................................................................................48412.1.2. Konfiguracja SSH......................................................................................48612.1.3. Wykorzystanie SSH...................................................................................48912.1.4. Przekazywanie poleceń sesji X za pomocą SSH .......................................49112.1.5. Wykorzystanie sftp ....................................................................................49112.1.6. Wykorzystanie scp.....................................................................................49212.1.7. Obsługa innych serwisów TCP za pomocą SSH .......................................49312.1.8. Zagrożenia, przed którymi SSH nie uchroni .............................................495

12.2. Virtual Private Networks (VPN) .........................................................................49612.2.1. Zagrożenia w sieciach VPN.......................................................................49612.2.2. VPN z użyciem SSH, PPP oraz Perla ........................................................50012.2.3. CIPE (Crypto IP Encapsulation)................................................................50212.2.4. VPN z wykorzystaniem FreeS/WAN IPSec..............................................50212.2.5. PPTP (Point-to-Point Tunneling Protocol) ................................................50312.2.6. Zebedee......................................................................................................50312.2.7. Pomiary wydajności sieci VPN .................................................................503

12.3. Pretty Good Privacy (PGP)..................................................................................50412.4. Wykorzystanie GPG do łatwego szyfrowania plików.........................................505

12.4.1. Pobieranie GPG .........................................................................................50712.4.2. Kompilacja.................................................................................................50712.4.3. Wykorzystanie GPG ..................................................................................50812.4.4. Generowanie i zarządzanie własnym kluczem ..........................................51012.4.5. Wymiana kluczy ........................................................................................51212.4.6. Rozpowszechnianie własnego klucza publicznego ...................................51512.4.7. Pliki podpisów ...........................................................................................51612.4.8. Szyfrowanie i podpisywanie listów e-mail ................................................51812.4.9. Szyfrowanie kopii zapasowych oraz inne wykorzystania gpg ..................51912.4.10. Bezpieczeństwo GPG na bardzo wysokim poziomie ................................520

Page 9: Bezpieczeństwo w Linuksie. Podręcznik administratora

14 Bezpieczeństwo w Linuksie. Podręcznik administratora

12.5. Zapory sieciowe oraz DMZ z wykorzystaniem IP Tables...................................52212.5.1. Teoria w praktyce: zabezpieczanie niewielkiej sieci .................................52212.5.2. Zalety IP Tables w stosunku do IP Chains ................................................53812.5.3. Wady IP Tables w stosunku do IP Chains.................................................53912.5.4. Śledzenie połączeń w IP Tables — fakty i mity........................................54312.5.5. Zwalczanie przejęć połączeń oraz ataków ICMP......................................54512.5.6. Konfiguracja zapory sieciowej w dystrybucji Red Hat .............................54712.5.7. Konfiguracja zapory sieciowej w dystrybucji SuSE Linux .......................54912.5.8. Sztuczki i techniki związane z zaporami sieciowymi................................55112.5.9. Tworzenie zapory sieciowej oraz DMZ za pomocą IP Tables ..................57012.5.10. Czego nie można zrealizować za pomocą IP Tables .................................57112.5.11. Maskarada IP (NAT) — szczegóły............................................................57312.5.12. Funkcje IP Tables ......................................................................................57812.5.13. Uruchamianie skryptu konfigurującego zaporę.........................................58012.5.14. Budowanie DMZ .......................................................................................58312.5.15. Sekrety routowania ....................................................................................58812.5.16. Mniej popularne funkcje IP Tables............................................................59012.5.17. Zapory sieciowe z kontrolą stanu ..............................................................59112.5.18. Zagrożenia SSH.........................................................................................59212.5.19. Dostęp do poczty za pomocą połączeń szyfrowanych ..............................594

12.6. Zapora sieciowa oraz DMZ za pomocą IP Chains ..............................................59512.6.1. Czego nie można zrealizować za pomocą IP Chains.................................59712.6.2. Maskarada IP (NAT) w wersji IP Chains ..................................................59912.6.3. Polecenia IP Chains ...................................................................................60412.6.4. Uruchamianie skryptu konfigurującego zaporę.........................................60612.6.5. Podstawowe wykorzystanie zapory sieciowej

zbudowanej za pomocą IP Chains ..........................................................61012.6.6. Blokowanie zagrożeń z zewnątrz ..............................................................61112.6.7. Maskarada IP .............................................................................................61912.6.8. Konfiguracja DMZ ....................................................................................62112.6.9. Zapory sieciowe z kontrolą stanu ..............................................................62312.6.10. Zagrożenia SSH.........................................................................................62512.6.11. Dostęp do poczty za pomocą połączeń szyfrowanych ..............................627

Rozdział 13. Przygotowanie sprzętu ................................................................... 62913.1. Wyczucie czasu ...................................................................................................62913.2. Zaawansowane przygotowania ............................................................................63213.3. Przełączanie na system zapasowy .......................................................................634

13.3.1. Wybór systemów wymagających przygotowania systemu zapasowego...63413.3.2. Dwa typy systemów zapasowych ..............................................................63513.3.3. Projektowanie zapasowego systemu bezpieczeństwa................................63513.3.4. Utrzymanie systemu zapasowego w pogotowiu........................................63713.3.5. Sprawdzanie pamięci podręcznej...............................................................63913.3.6. Dysk zapasowy ..........................................................................................640

Rozdział 14. Przygotowanie konfiguracji............................................................. 64114.1. TCP Wrappers .....................................................................................................641

14.1.1. Wykorzystanie TCP Wrappers ..................................................................64314.1.2. Zaawansowane wykorzystanie TCP Wrappers..........................................644

14.2. Adaptacyjne zapory sieciowe: zakładanie pułapek na włamywaczyza pomocą Cracker Trap ..................................................................................646

14.2.1. Konfiguracja ..............................................................................................65414.2.2. Plik /etc/services ........................................................................................65514.2.3. Pliki /etc/xinetd.d/*....................................................................................657

Page 10: Bezpieczeństwo w Linuksie. Podręcznik administratora

Spis treści 15

14.2.4. Plik /etc/inetd.conf .....................................................................................65814.2.5. Plik /etc/hosts.allow...................................................................................66014.2.6. Plik /etc/hosts.deny ....................................................................................66114.2.7. Przechwytywanie ataków za pomocą przekierowania portów ..................66214.2.8. Wykorzystanie PortSentry w połączeniu z Cracker Trap..........................666

14.3. Blokowanie serwisów włamywaczy za pomocą modyfikacji jądra Linuksa ......66614.4. Ćwiczenia pożarowe............................................................................................668

14.4.1. Lądowanie awaryjne ..................................................................................66914.4.2. To tylko test ...............................................................................................67014.4.3. Zagrożenia i środki ostrożności .................................................................67014.4.4. Planowanie materii do ćwiczeń .................................................................67114.4.5. Systemy testowe ........................................................................................67114.4.6. Bezpieczne konie trojańskie ......................................................................67214.4.7. Rozmiar ma znaczenie ...............................................................................67314.4.8. Sprawiamy więcej kłopotu.........................................................................674

14.5. Włamania do własnego systemu przy pomocy brygad tygrysa...........................67514.5.1. Testy penetracyjne .....................................................................................677

Rozdział 15. Skanowanie własnego systemu ...................................................... 67915.1. Skaner zabezpieczeń Nessus................................................................................68015.2. Testery zabezpieczeń SARA i SAINT ................................................................68015.3. Maper sieci nmap.................................................................................................68115.4. Wykrywacz ataków Snort....................................................................................68615.5. Skanowanie i analizowanie za pomocą programu SHADOW ............................68715.6. John the Ripper ....................................................................................................68715.7. Zapisywanie sum kontrolnych bazy danych RPM ..............................................688

15.7.1. Niestandardowe dyskietki ratunkowe........................................................689

Część III Wykrywanie włamania ..................................................691

Rozdział 16. Monitorowanie aktywności............................................................. 69316.1. Pliki z logami.......................................................................................................69416.2. Pliki z logami: sposoby i kontrsposoby ...............................................................69516.3. Używanie programu Logcheck do sprawdzania logów,

których nigdy nie sprawdzasz ..........................................................................69616.4. Używanie programu PortSentry do blokowania hakerów ...................................70216.5. HostSentry ...........................................................................................................70816.6. Przywoływanie administratora systemu: włamanie w toku! ...............................70816.7. Przykład automatycznego przywoływania ..........................................................70916.8. Rozbudowywanie przykładu automatycznego przywoływania...........................71116.9. Informowanie o użyciu poleceń telnet i rsh.........................................................71316.10. Wykrywanie ataków ARP i MAC za pomocą programu Arpwatch ...................71516.11. Monitorowanie użycia portów.............................................................................71916.12. Monitorowanie ataków za pomocą programu Ethereal .......................................720

16.12.1. Budowanie programu Ethereal ..................................................................72016.12.2. Używanie programu Ethereal ....................................................................721

16.13. Monitorowanie sieci lokalnej za pomocą programu tcpdump.............................72216.13.1. Budowanie programu tcpdump..................................................................72216.13.2. Używanie programu tcpdump....................................................................723

16.14. Monitorowanie skanerów za pomocą programu Deception Tool Kit (DTK)......72616.15. Monitorowanie procesów ....................................................................................729

16.15.1. Monitorowanie obciążenia.........................................................................73116.16. Cron: śledzenie krakerów ....................................................................................73216.17. Identyfikacja dzwoniącego ..................................................................................732

Page 11: Bezpieczeństwo w Linuksie. Podręcznik administratora

16 Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 17. Wyszukiwanie w systemie anomalii ................................................ 73317.1. Wyszukiwanie podejrzanych plików...................................................................733

17.1.1. Analiza podejrzanych plików ....................................................................73617.1.2. Rutynowe porównywanie zawartości plików............................................736

17.2. Narzędzie Tripwire ..............................................................................................73817.2.1. Instalowanie programu Tripwire ...............................................................73917.2.2. Użycie programu Tripwire.........................................................................74017.2.3. Przed czym program Tripwire nie chroni? ................................................74217.2.4. Programy stanowiące alternatywę dla narzędzia Tripwire ........................743

17.3. Wykrywanie usuniętych plików wykonywalnych...............................................74317.4. Wykrywanie kart sieciowych działających w trybie promiscuous......................745

17.4.1. L0pht AntiSniff..........................................................................................74817.5. Wyszukiwanie procesów działających w trybie promiscuous.............................74917.6. Automatyczne wykrywanie włamań na strony internetowe................................750

Część IV Przywracanie systemu po włamaniu ..............................755

Rozdział 18. Przywracanie kontroli nad systemem.............................................. 75918.1. Wyszukiwanie aktywnych procesów uruchomionych przez włamywacza .........760

18.1.1. Obsługa usuniętych plików wykonywalnych ............................................76118.2. Obsługa aktywnych procesów uruchomionych przez włamywacza ...................762

18.2.1. Popularne konie trojańskie.........................................................................76818.3. Odcięcie modemów, sieci, drukarek i systemów.................................................770

Rozdział 19. Wykrywanie i usuwanie uszkodzeń ................................................. 77319.1. Sprawdzenie logów systemowych znajdujących się w katalogu /var/log ...........77419.2. Demony syslogd i klogd ......................................................................................77419.3. Zdalne logowanie.................................................................................................77519.4. Interpretowanie wpisów zawartych w logach systemowych...............................775

19.4.1. Program lastlog ..........................................................................................77619.4.2. Plik messages.............................................................................................77719.4.3. Plik syslog..................................................................................................78019.4.4. Plik kernlog................................................................................................78019.4.5. Plik cron.....................................................................................................78119.4.6. Plik xferlog ................................................................................................78119.4.7. Plik daemon ...............................................................................................78219.4.8. Plik mail.....................................................................................................782

19.5. Kontrola innych logów ........................................................................................78419.6. Sprawdzanie odpowiedzi narzędzia TCP Wrappers............................................78419.7. Sposoby uszkadzania systemu plików.................................................................78519.8. Umieszczanie sfałszowanych danych..................................................................78619.9. Modyfikowanie programów monitorujących ......................................................78619.10. W domu pełnym luster ........................................................................................78719.11. Przywracanie kontroli..........................................................................................78719.12. Wyszukiwanie plików zmienionych przez włamywaczy....................................788

19.12.1. Interpretacja wyniku działania polecenia tar -d.........................................79119.12.2. Przyspieszenie operacji sprawdzania plików przy użyciu programu rpm .. 79219.12.3. Naprawa pakietów RPM............................................................................79319.12.4. Przywracanie baz danych ..........................................................................79419.12.5. Uszkodzenie urządzeń peryferyjnych........................................................79519.12.6. Kradzież za pośrednictwem „diabelskich elektronów” .............................79519.12.7. Metody uszkadzania jądra .........................................................................796

Page 12: Bezpieczeństwo w Linuksie. Podręcznik administratora

Spis treści 17

19.13. Metody identyfikacji włamywacza......................................................................79619.13.1. Dowód modyfikacji danych.......................................................................797

19.14. Wyszukiwanie programów z ustawionym bitem set-UID...................................79819.15. Identyfikacja konia trojańskiego mstream...........................................................799

Rozdział 20. Namierzanie komputera włamywacza.............................................. 80120.1. Tłumaczenie liczbowego adresu IP za pomocą programu nslookup...................80220.2. Tłumaczenie liczbowego adresu IP za pomocą programu dig ............................80220.3. Wyszukiwanie właścicieli domen .com...............................................................80320.4. Wyszukiwanie organizacji na podstawie adresu IP.............................................80420.5. Sprawdzanie systemów .gov................................................................................80420.6. Korzystanie z programu ping...............................................................................80620.7. Korzystanie z programu traceroute......................................................................80720.8. Wyniki z sąsiednich systemów............................................................................80820.9. Przykład międzynarodowego tropienia crakera...................................................80820.10. Czy na pewno znalazłeś napastnika?...................................................................80920.11. Inni administratorzy: czy im zależy?...................................................................811

20.11.1. Przygotowanie dowodów na użytek administratora systemu....................812

Dodatki .......................................................................................813

Dodatek A Zasoby internetowe związane z najnowszymi sposobamiwłamań i ochrony........................................................................... 815A.1. Listy wysyłkowe — obowiązkowe......................................................................816

A.1.1. Centrum koordynacyjne CERT rządu Stanów Zjednoczonych .................817A.1.2. Komitet doradczy CIAC rządu Stanów Zjednoczonych ............................817A.1.3. Bugtraq .......................................................................................................817A.1.4. Lista X-Force firmy ISS.............................................................................818A.1.5. Witryna mail-abuse.org..............................................................................818

A.2. Listy wysyłkowe — opcjonalne ..........................................................................819A.2.1. Lista wysyłkowa SSH ................................................................................819A.2.2. Lista wysyłkowa Network World Fusion...................................................819

A.3. Grupy dyskusyjne ................................................................................................819A.4. Adresy URL witryn poświęconych bezpieczeństwu ...........................................820

A.4.1. Witryna Kurta Seifrieda .............................................................................820A.4.2. Security Focus ............................................................................................820A.4.3. Analiza sądowa ..........................................................................................820A.4.4. Witryna Hackerwhacker.............................................................................821A.4.5. Numery portów używanych przez krakerów .............................................821A.4.6. Opisy linuksowych wirusów ......................................................................821A.4.7. Centrum NIPC agencji FBI ........................................................................821A.4.8. FIRST.........................................................................................................821A.4.9. Strona Linux Weekly News .......................................................................822A.4.10. Linux Today ...............................................................................................822A.4.11. Instytut SANS ............................................................................................822

A.5. Adresy URL witryn z narzędziami zabezpieczającymi.......................................822A.5.1. Witryna autora książki ...............................................................................822A.5.2. Pobieranie programu Secure SHell (SSH) .................................................824A.5.3. Pobieranie skryptu Bastille Linux ..............................................................824A.5.4. Pobieranie skryptu wzmacniającego system SuSE ....................................825A.5.5. Pobieranie programu Linux Intrusion Detection System...........................825A.5.6. Pretty Good Privacy (PGP) ........................................................................825A.5.7. GNU Privacy Guard (GPG) .......................................................................826A.5.8. Narzędzie tcpdump.....................................................................................826

Page 13: Bezpieczeństwo w Linuksie. Podręcznik administratora

18 Bezpieczeństwo w Linuksie. Podręcznik administratora

A.5.9. Ethereal — sniffer z interfejsem graficznym .............................................826A.5.10. Narzędzie sniffit .........................................................................................827A.5.11. Pobieranie narzędzia Tripwire ...................................................................827A.5.12. Zamienniki programu Tripwire..................................................................827A.5.13. Pobieranie skanera zabezpieczeń Nessus...................................................828A.5.14. Pobieranie testera zabezpieczeń SARA .....................................................828A.5.15. Pobieranie programu nmap ........................................................................828A.5.16. Pobieranie wykrywacza ataków Snort .......................................................829A.5.17. Pobieranie programu SHADOW................................................................829A.5.18. Pobieranie testera zabezpieczeń SAINT ....................................................829A.5.19. Pobieranie narzędzia konfiguracyjnego IP Chains ....................................829A.5.20. Pobieranie pakietu SSL..............................................................................830A.5.21. Pobieranie programu sslwrap.....................................................................830A.5.22. Witryna WWW programu CVS z obsługą SSH ........................................830A.5.23. Pobieranie szyfrującego sterownika dysku ................................................831A.5.24. Sendmail bez przywilejów roota................................................................831A.5.25. Pobieranie programu postfix ......................................................................831A.5.26. Libsafe........................................................................................................831A.5.27. Zaobserwowane ataki.................................................................................832A.5.28. Analizowanie sieci napastnika z witryny Sam Spade ................................832

A.6. Adresy URL dokumentacji ..................................................................................832A.6.1. Dokumentacja Linuksa ...............................................................................832A.6.2. Pisanie bezpiecznych programów...............................................................833

A.7. Adresy URL narzędzi ogólnego zastosowania....................................................833A.7.1. Debugger ddd..............................................................................................834A.7.2. Obliczanie czasu w różnych strefach czasowych .......................................834

A.8. Adresy URL specyfikacji i definicji ....................................................................834A.8.1. Pomarańczowa księga.................................................................................834A.8.2. RFC 1813: NFS Version 3..........................................................................835A.8.3. Słownik NSA terminów związanych z bezpieczeństwem komputerowym...835

A.9. Aktualizacje dystrybucji Linuksa ........................................................................835A.9.1. Red Hat .......................................................................................................835A.9.2. Slackware....................................................................................................836A.9.3. SuSE............................................................................................................836A.9.4. Mandrake ....................................................................................................836A.9.5. Caldera ........................................................................................................836A.9.6. Debian .........................................................................................................836A.9.7. Yellow Dog.................................................................................................837

A.10. Inne aktualizacje oprogramowania......................................................................837A.10.1. Pobieranie programu Sendmail...................................................................837A.10.2. Baza danych PostgreSQL ...........................................................................837A.10.3. Repozytoria oprogramowania Open Source ...............................................838

Dodatek B Usługi i porty sieciowe................................................................... 839

Dodatek C Poziomy zagrożenia........................................................................ 845

Dodatek D Skróty ........................................................................................... 857

Skorowidz...................................................................................... 863

Page 14: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5.

Ataki powszechniestosowaneprzez włamywaczy

W niniejszym rozdziale przedstawione zostaną najczęściej wykonywane ataki, którychprzypuszczenia na nasz system wręcz należy oczekiwać i być zawsze przygotowanymna ich odparcie. O wielu z nich mogłeś już słyszeć, lecz być może nie rozumiałeś, naczym w rzeczywistości polegają. W tym miejscu zostaną one omówione ze wszystki-mi szczegółami; ponadto zostaną tu przedstawione specjalne techniki służące zabezpie-czaniu się przed nimi.

A oto wykaz tematów poruszanych w tym rozdziale:

� „Ataki przypuszczane przy użyciu predefiniowanych narzędzi” na stronie 298

� „Fałszowanie pakietów” na stronie 299

� „Ataki typu SYN Flood” na stronie 306

� „Obrona przed atakami typu SYN Flood” na stronie 307

� „Zapobieganie fałszowaniu sekwencji TCP” na stronie 307

� „Sztormy pakietów, ataki smurfów oraz fraglesi” na stronie 308

� „Przepełnianie buforów oraz niszczenie zawartości pamięci” na stronie 314

� „Techniki fałszowania” na stronie 315

� „Atak typu Man-in-the-Middle” na stronie 319

Page 15: Bezpieczeństwo w Linuksie. Podręcznik administratora

298 Część I ♦ Zabezpieczanie systemu

5.1. Ataki przypuszczane przy użyciupredefiniowanych narzędzi

Poziom zagrożenia:

Opracowany przez NSA słownik terminów związanych z zagadnieniami zabezpieczeńoraz wykrywania włamań w następujący sposób definiuje pojęcie Rootkit:

Rootkit — narzędzie służące do łamania zabezpieczeń (używane przez krakera), któreprzechwytuje hasła oraz dane w sieci komputerowej przekazywane do oraz z kompu-tera. Zestaw narzędzi, umożliwiający krakerowi utworzenie tylnego wejścia do sys-temu, pobieranie informacji z innych systemów w sieci komputerowej, maskowaniefaktu złamania zabezpieczeń systemu oraz wiele innych czynności. Rootkit jest kla-sycznym przykładem oprogramowania typu koń trojański.

Najczęściej używana jest druga definicja, określająca Rootkit jako zestaw narzędzi słu-żących do tworzenia tylnych wejść do systemu oraz zmniejszania jego bezpieczeń-stwa. Inaczej mówiąc, narzędzia te pozwalają krakerowi ukryć przed tobą fakt, że całyczas dysponuje on kontrolą nad systemem. Zainstalowanie zestawu Rootkit jest drugąfazą włamania. Pierwszą, rzecz jasna, jest samo złamanie zabezpieczeń. Bardzo częstojest to wynik działania „script kiddie”.

Mianem takim określa się osobę, która nie jest wystarczająco utalentowana lub zmo-tywowana, aby utworzyć swój własny program służący do przeprowadzenia ataku,wykorzystującego na przykład błąd powodujący przepełnienie bufora (lub inny), nie-poprawne ustawienia programu, łatwe do złamania hasło itp. „Script kiddie” używaraczej przygotowanego wcześniej programu, służącego do wykonania ataku; po pro-stu uruchamia go wielokrotnie, przypuszczając kolejne ataki na rózne systemy, aż dochwili odnalezienia takiego, który nie będzie dobrze zabezpieczony i dzięki temu mo-że zostać złamany. W środowisku krakerów status takich osób jest tylko jeden stopieńpowyżej najniższego, jaki posiadają osoby wykonujące najprostsze ataki DoS, pole-gające na zalaniu sieci fałszywymi pakietami.

Rootkit nie jest, sciśle mówiąc, atakiem, lecz większość tworzących go procesów toprocesy złożone, które nie mogą być w prosty sposób wykryte, chyba że programypodmienione na konie trojańskie oraz pliki konfiguracyjne zostaną porównane z ichpoprawnymi wersjami. Porównanie to jest zazwyczaj wykonywane przy użyciu sumykontrolnej MD5 (bardziej trafnie nazywanej skrótem), za pomocą programu ������lub ���. Ten ostatni wykonuje porównanie bajt po bajcie, co jest niezwykle czaso-chłonne. Należy również być przygotowanym na fałszywe alarmy. Sprawdzałem kiedyśsystem, który został złamany, w przypadku którego archiwum zawierające programyprzeznaczone do przywrócenia było jedynie przynętą. Prawdziwy koń trojański umiesz-czony był w prawie każdym programie wykonywalnym, zaś program ���� przesyłałgo do wszystkich plików wykonywalnych kopiowanych do systemu.

Również program Tripwire dysponuje możliwością porównywania sumy MD5, zaś jegoniewątpliwą zaletą jest to, że działa dwa razy szybciej od ���, ponieważ musi jedynie

Page 16: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 299

odczytać podejrzany plik i porównać ze znanym wcześniej jego poprawnym skrótem.Należy jeszcze wspomnieć, że program ��� nie jest godny zaufania, ponieważ niektó-re konie trojańskie są tak zaprojektowane, aby w rezultacie dawały tę samą wartośćskrótu co właściwe programy. Opis sposobu użycia programu Tripwire znajdzieszw podrozdziale zatytułowanym „Narzędzie Tripwire”, na stronie 738.

Jest bardzo ważne, by zdać sobie sprawę z tego, że w przypadku podejrzenia włamaniado systemu mamy do czynienia z sytuacją analogiczną do odkrycia szpiegów w firmie.W gruncie rzeczy w pierwszym przypadku jest jeszcze gorzej — nie wiadomo, komumożna ufać. Każdy program mógł zostać zmodyfikowany w taki sposób, że w efekciebędzie dawać fałszywe wyniki. Bardzo często w charakterze koni trojańskich wyko-rzystywane są programy �, ��, �� oraz � ���. Oczywiście, włamywaczowi mogąposłużyć także inne aplikacje, jak choćby ���, �� � lub umieszczona na dysku kopiaTripwire. Oznacza to, że nawet zamontowanie dyskietki z programem Tripwire w celusprawdzenia systemu nie jest całkowicie bezpieczne, ponieważ podmieniony mógłzostać również program �� �. W gruncie rzeczy przeprowadzana co noc procedurasprawdzania systemu przy użyciu programu Tripwire powinna umożliwić wykryciewszystkich problemów, a jeżeli sam program jest wywoływany z nośnika umożliwiają-cego jedynie odczyt danych, takiego jak zabezpieczona dyskietka lub płyta CD-R, ryzy-ko otrzymania w wyniku sprawdzenia systemu niewłaściwych danych jest niewielkie.

Jak częste są ataki przypuszczane przy użyciu narzędzi typu Rootkit? Trzeba powie-dzieć, że są one przeprowadzane bardzo często, szczególnie w celu umożliwienia kra-kerom pozostania w systemie, zaś od 20 do 70 procent włamań kończy się przejęciemuprawnień administratora. W jaki sposób uzyskać taki program? Krakerzy przeglądająwitryny typu www.rootkit.com/1. Oczywiście istnieje znacznie więcej witryn tego typu.

Olbrzymia liczba witryn wykorzystywanych przez krakerów oraz potężne możliwościstosowanych przez nich narzędzi są przerażające. Chociaż najczęściej wykorzystywa-nym sposobem walki z takimi programami jest przeinstalowanie systemu od podstaw,nie zawsze aż tak radykalne działanie jest rzeczywiście konieczne. W części III oraz IVniniejszej książki zostaną szczegółowo omówione zagadnienia wykrywania włamańoraz naprawiania systemów, które padły ich ofiarą; trzeba pamiętać, że każde z takichwłamań mogło spowodować spowodować pozostawienie w systemie koni trojańskich.

5.2. Fałszowanie pakietów

Poziom zagrożenia:

Prawie każdy słyszał o fałszowaniu pakietów, lecz niewielu administratorów naprawdędobrze rozumie tę technikę. Z fałszowaniem pakietów mamy do czynienia wtedy, gdykraker wysyła pakiet danych w sieci komputerowej, na przykład do systemu server.

1

Wydaje się, że ta witryna nie jest już dostępna. Co za szkoda! Być może jej sponsorzy pracują teraz

w kamieniołomach. Wciąż jednak istnieje wiele innych witryn tego typu, jak choćby

www.thenewbiesarea.com.

Page 17: Bezpieczeństwo w Linuksie. Podręcznik administratora

300 Część I ♦ Zabezpieczanie systemu

pentacorp.com z systemu cracker.com, twierdząc, że pochodzi on z systemu client.pentacorp.com. Takie działanie ma na celu uzyskanie uprawnień dostępu do serweraserver.pentacorp.com właściwych dla client.pentacorp.com.

Fałszowanie pakietów jest możliwe dzięki lukom w zabezpieczeniach wywodzącychsię z projektu (słabego) protokołów w rodzaju UDP, TCP, ICMP oraz protokołów i algo-rytmów routujących. Przyczyną występowania tej luki nie jest używanie jądra syste-mu Linux lub samego oprogramowania. Należy zrozumieć, że wspomniane protokołyzostały utworzone ponad 20 lat temu, kiedy sieć internet była mniejsza, bardziej przyja-zna oraz bezpieczniejsza niż obecnie.

Protokół TCP został zaprojektowany dla potrzeb projektu ARPA, prowadzonego w Mi-nisterstwie Obrony Stanów Zjednoczonych. Główny nacisk został położony na jegowłaściwości umożliwiające przetrwanie ataku nuklearnego i zniszczenia części sieci.Miał on umożliwić szybką i efektywną zmianę routowania pakietów poprzez ominię-cie zniszczonych miast, bez straty pakietów przesyłanych właśnie przez zaatakowanyobszar. Z drugiej strony, w przeciwieństwie do korzystających obecnie z protokołuTCP krakerów, przedstawiciele ministerstwa oraz naukowcy byli osobami zaufanymi.

Możliwość zmiany trasy przesyłania pakietów z pominięciem zniszczonych obszaróworaz brak wrażliwości na ewentualne przerwy w działaniu sieci w trakcie ataku zo-stały przetestowane z pozytywnym wynikiem. Podczas wojny w Zatoce Perskiej, po-mimo masowych bombardowań Iraku, na terenie tego państwa wciąż istniał dostęp dosieci internet.

Każdy pakiet zawiera adres źródłowy składający się z adresu IP oraz numeru portu,z którego wydaje się pochodzić pakiet, a także adres docelowy, określający miejscejego przeznaczenia. Problem stanowi to, że system nadawcy tworzy pakiet i możesfałszować informacje o swoim adresie źródłowym. Takie oszustwo może być trudnedo wykrycia. W jaki więc sposób można się przed nim ochronić?

Nowoczesne zapory sieciowe (włączając do nich mechanizmy wbudowane w jądrosystemu Linux) oraz niektóre routery mogą zostać skonfigurowane w ten sposób, abydysponowały informacją o tym, jaki zakres adresów powinien być traktowany jakozakres adresów „wewnętrznych”; wszystkie inne będą traktowane jako „zewnętrzne”.Kiedy zapora zarejestruje pakiet zawierający adres wewnętrzny przychodzący na in-terfejs zewnętrzny, rozpozna go jako pakiet sfałszowany i jako taki odrzuci. Właśniedo takiej konfiguracji służy parametr ��� ������� programu ������ . Umożliwia onadministratorowi określenie interfejsu (na przykład karty Ethernet, ppp lub T1), z któ-rego pakiety z określonym adresem źródłowym będą akceptowane.

Przed fałszowaniem pakietów można zabezpieczyć się w dużym stopniu poprzez uży-cie dobrego połączenia następujących reguł:

� Nie należy ufać adresom źródłowym UDP, z wyjątkiem bardzo bezpiecznych sieci.

� Należy upewnić się, czy wszystkie systemy w sieci używają nowych stosów IP,które nie wykorzystują możliwych do przewidzenia numerów sekwencji TCP(system Linux zawiera poprawkę tego błędu począwszy od jądra w wersji 2.0.36).

Page 18: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 301

� Należy używać zaszyfrowanego tunelu w sieciach niezaufanych, takichjak internet. Jest to niezbędne w celu uniknięcia podsłuchiwania lub nawetprzechwycenia sesji TCP. Możemy skorzystać np. z SSL oraz różnego rodzajuproduktów tworzących VPN, jak chociażby FreeS/WAN. Zostaną one omówionew podrozdziałach „Zabezpieczanie sesji użytkownika za pomocą SSH” na stronie481 oraz „VPN z wykorzystaniem FreeS/WAN IPSec” na stronie 502.Przechwytywanie sesji TCP zostanie omówione w podrozdziale„Przechwytywanie sesji TCP” na stronie 305.

Administratorzy systemów powinni również skonfigurować swoje zapory sieciowew ten sposób, aby poszukiwały fałszywych pakietów z adresami źródłowymi pocho-dzącymi spoza sieci komputerowej, przesyłanych na interfejsy „wewnętrzne” i odrzu-cały je przy jednoczesnym zapisaniu ich adresów MAC (adresów Ethernet). Pakietyte są tworzone przez źle skonfigurowany system w sieci lub przez użytkownika z sieciwewnętrznej, który ma niezbyt dobre zamiary. Włamywacze na zewnątrz firmy usi-łujący sfałszować pakiety tak, aby wydawały się pochodzić z adresów IP wewnątrzfirmy mogą zostać zablokowani w prosty sposób przy użyciu tylko jednego polecenia,co zostało omówione w podrozdziale zatytułowanym „Blokowanie fałszowania adre-sów IP” na stronie 180. Powinieneś również zapoznać się z podrozdziałem „Zaporasieciowa oraz DMZ za pomocą IP Chains”, który znajdziesz na stronie 595. Żadnaz omawianych dotychczas technik nie ochroni przed atakiem na sesje, których jedenuczestnik znajduje się poza siecią wewnętrzną firmy. Tego rodzaju problem rozwią-zuje wykorzystanie komunikacji szyfrowanej.

Na szczęście większość dostawców ISP oraz dużych organizacji dokonuje filtrowaniapakietów pochodzących z sieci wewnętrznych. Taka czynność zmniejsza znacznie ilośćsystemów, które mogą zostać wykorzystane przez krakerów chcących fałszować pakiety.Ochrona własnych systemów przed włamaniem, a tym samym możliwością ich wyko-rzystania w innych atakach, jest wręcz obowiązkiem każdego użytkownika komputera.Trzeba pamiętać, że złamanie zabezpieczeń systemowych może wiązać się z konieczno-ścią poniesienia konsekwencji natury prawnej. Firmy, które nie są w stanie ochronićswoich systemów przed ich wykorzystaniem do przeprowadzenia ataków przeciw in-nym systemom, są często pozywane do sądu. Aby uzupełnić poruszane tutaj zagadnienia,zapoznaj się również z podrozdziałami zatytułowanymi „Blokowanie routingu źródło-wego w IP” na stronie 178 oraz „Blokowanie fałszowania adresów IP” na stronie 180.

Dla podsumowania spróbuj naszkicować szkielet sieci komputerowej, zaznaczając połą-czenia z siecią internet. Narysuj okrąg dookoła każdego jej segmentu, który może byćochroniony za pomocą zapory sieciowej (włączając w to również wewnątrzfirmowefirewalle) lub routera, wykonujących filtrowanie pakietów pod kątem ich adresów. Dlakażdej z granic, na przykład dla każdej zapory sieciowej, określ zakresy dopuszczal-nych adresów pochodzących z obu jej stron. Rozważ również podsieci oraz serwerypośredniczące. Postaraj się być tak dokładnym, jak to tylko możliwe.

Czy na wszystkich zaporach sieciowych zostały wymuszone odpowiednie reguły? Zapo-znaj się z podrozdziałem zatytułowanym „Zasady dotyczące topologii sieci”, który znaj-dziesz na stronie 414. W charakterze zapory sieciowej oraz routera, chroniąc różne działyfirmy przed zagrożeniami z internetu oraz złamaniem zabezpieczeń wewnątrz sieci

Page 19: Bezpieczeństwo w Linuksie. Podręcznik administratora

302 Część I ♦ Zabezpieczanie systemu

firmowej, może służyć pojedynczy komputer z systemem Linux, dysponujący wielomakartami sieciowymi. Takie właśnie rozwiązanie zostało przedstawione na rysunku 5.1.

Rysunek 5.1.Zapora sieciowa

(router) z wieloma

podsieciami

Jak widać na rysunku 5.1, jeden serwer działający pod kontrolą systemu Linux, kosztu-jący około 500 dolarów lub mniej, może wykonać zadania innych, bardziej dedyko-wanych urządzeń. W przypadku większych firm może jednak wystąpić koniecznośćużywania wielu zapór sieciowych lub oddzielnego routera. Taka konfiguracja zostałaprzedstawiona na rysunku 5.2.

Rysunek 5.2.Wiele zapór

sieciowych

oraz router

Jak widać, zapory sieciowe utworzone na bazie systemu Linux mogą zostać umiesz-czone wszędzie tam, gdzie istnieje konieczność stosowania tego rodzaju systemów.

5.2.1. Dlaczego udaje się fałszowanie pakietów UDP

Poziom zagrożenia:

Możliwość wykrycia sfałszowanych pakietów UDP jest ograniczona do zapory siecio-wej sprawdzającej, czy pakiet z określonym adresem źródłowym powinien pochodzićz systemów wewnętrznych, czy też zewnętrznych, oraz odrzucającej wszystkie pakietyłamiące określone dla niej reguły.

Zastanów się przez chwilę nad taką sytuacją: dysponujesz zdalnym serwerem, któryłączy się głównym serwerem przy użyciu internetu. Załóżmy, że ten zdalny komputer

Page 20: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 303

zamierza używać do komunikacji UDP. Taka sytuacja może wystąpić w przypadkustosowania NFS2 lub własnej aplikacji użytkownika.

W jaki sposób zapora sieciowa lub aplikacja mogłaby określić, że pakiet został sfał-szowany? Otóż nie może tego wykryć, ponieważ wie, że zdalny serwer znajduje sięna zewnątrz sieci i zaakceptuje pakiet (jeżeli użytkownik pragnie uruchomić aplikacjęwykorzystującą pakiety tego rodzaju), lecz poprawny pakiet nie będzie się niczymróżnił od sfałszowanego.

Właśnie z tej przyczyny protokół UDP jest uznawany za niebezpieczny; ponadtogłównie z tego samego powodu za niebezpieczną jest uznawana również usługa NFS,ponieważ używa jedynie3 UDP. Wszystkie tak starannie skonfigurowane procedurykontroli dostępu, na przykład plik /etc/exports pozwalający utworzyć połączenie NFSjedynie niektórym serwerom (inne aplikacje mogą używać podobnych plików konfi-guracyjnych), zostaną pokonane, ponieważ wszystkie one bazują na polu adresu źró-dłowego pakietu, a właśnie ono zostało sfałszowane.

Oczywiście serwer (NFS lub inny) odeśle odpowiedź do komputera o adresie źródło-wym określonym w fałszywym pakiecie klienta i — co także jest oczywiste — rze-czywisty system klienta, którym jest system krakera, nie ujrzy odpowiedzi (chyba żekraker może podsłuchiwać sieć). Nie stanowi to zazwyczaj problemu, ponieważ więk-szość aplikacji działających na warstwie protokołu UDP implementuje prosty proto-kół, którego zazwyczaj używa klient do wysłania żądania, zaś serwer odpowiada zapomocą komunikatu �, komunikatu o wystąpieniu błędu lub danych stanowiącychodpowiedź na żądanie. Zazwyczaj kraker może dokonać wielu zniszczeń nawet niedysponując odpowiedzią. Jeśli używa NFS, jest w stanie wysłać żądanie ��������� ��,które spowoduje, że następnym razem system się nie uruchomi. Kraker w tym przy-padku nie martwi się tym, czy otrzyma odpowiedź �. Ponadto mógłby utworzyć nowyplik /etc/passwd, zawierający wybrane przez siebie hasło administratora, wykorzystaćNFS do umieszczenia go w systemie docelowym i przejąć dzięki temu kontrolę nadsystemem. Większości poważnych problemów zapobiegnie ustawienie poprawnychuprawnień (przy użyciu opcji ���������) w pliku /etc/exports.

Opcja ��������� powoduje, że zdalny użytkownik podający się za użytkownika o UID 0lub root będzie traktowany jako użytkownik ���. Jest to domyślne zachowanieserwera NFS. Opcja ��������� nie zabezpieczy jednak w pełni systemu NFS. Kra-ker musi jedynie wykorzystać lukę w systemie, która nie wymaga uprawnień admini-stratora. Jedna z takich „łatwych zdobyczy”, które mogą okazać się dlań pomocne,polega na tym, że wielu użytkowników systemu używa źle skonfigurowanej zmiennejśrodowiskowej �����, zawierającej (znak kropki) przed nazwą katalogów systemowych.

2

NFS jest skrótem od Network File System — nazwy protokołu utworzonego przez firmę Sun Microsystems

w celu umożliwienia programom działającym w systemach klientów uzyskanie dostępu do plików serwera,

tak jakby stanowiły one pliki lokalne w systemach klienta. Protokół ten wykorzystuje UDP, ponieważ

ten ma prawie dwukrotnie większą przepustowość niż TCP przy użyciu tego samego sprzętu dla potrzeb

aplikacji klient-serwer. Protokół ten nie jest również oparty na połączeniu, co sprawia, że serwer nie

natrafi na sytuację wyczerpania wszystkich gniazd plików, ponieważ potrzebuje tylko jednego dla całej

usługi, a nie osobnego dla każdego systemu klienta.3

NFS w wersji 3 może używać również TCP — przyp. red.

Page 21: Bezpieczeństwo w Linuksie. Podręcznik administratora

304 Część I ♦ Zabezpieczanie systemu

Zostało to omówione w podrozdziale zatytułowanym „$PATH: Katalog . grozi nie-szczęściem” na stronie 177.

Craker musi jedynie sfałszować adres źródłowy NFS i umieścić fałszywą wersję po-wszechnie używanego programu narzędziowego, takiego jak � lub �!�, w katalogu/tmp i czekać, aby administrator użył jednego z tych zmodyfikowanych poleceń w tymwłaśnie katalogu. Wykonanie przedstawionego tu polecenia spowoduje wyświetleniewszystkich usług sieciowych wykorzystujących UDP, które mogłyby działać na twoimkomputerze, z wyjątkiem tych, które nie posiadają nazw symbolicznych w pliku /etc/services:

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

Bardziej wydajny sposób polega na użyciu programu ���� lub ������; oba zostałyomówione w podrozdziale „Wyłączanie niepotrzebnych usług” na stronie 125. Pro-gramy te umożliwią określenie portów rzeczywiście używanych w systemie. Wszystkieosoby, które chciałyby napisać swoje własne programy analizujące otwarte porty, będąmusiały odczytywać pseudopliki /proc/net/udp oraz /proc/net/tcp. Pola o nazwach ����������� oraz ����������� są polami określającymi lokalny oraz zdalny adres kom-putera. Część pola umieszczona przez znakiem " określa adres IP, zaś część występu-jąca za nim jest numerem portu. Oba numery są podane w postaci szesnastkowej.

5.2.2. Fałszowanie sekwencji TCP

Poziom zagrożenia:

Jedna z różnic pomiędzy protokołami TCP a UDP polega na tym, że pierwszy z nichdysponuje algorytmem potwierdzenia (ponowienia) transmisji, dzięki któremu nadawcadysponuje informacją o tym, czy każdy z pakietów został odebrany, zaś wszystkieopuszczone pakiety są wykrywane wskutek określenia brakujących pakietów z po-twierdzeniami. W takim przypadku są one wysyłane ponownie (algorytm powtarzania).Częścią tego rodzaju algorytmu są numery sekwencji wbudowane w protokół w celuupewnienia się, że pakiet został dostarczony i czy w sekwencji nie ma brakującychpakietów.

Aby sfałszować pakiety TCP, osoba dokonująca tej operacji musi znać schemat nu-merowania sekwencji lub po prostu ją odgadnąć. Jeszcze nie tak dawno nikt w rzeczy-wistości nie przejmował się kwestią fałszowania i dlatego też numerowanie sekwencjibyło przewidywalne, chociaż jego sposób zależał od systemu operacyjnego (dlategowłaśnie niektóre z programów używanych przez krakerów na podstawie charakteru tejsekwencji potrafiły określić nawet rodzaj używanego systemu).

Sposób nawiązywania połączenia TCP polega na wysłaniu przez klienta komunikatuTCP postaci #$%; jest to pakiet TCP z ustawionym bitem #$% w nagłówku (wartość &).W komunikacie tym klient umieszcza swój „numer początkowy sekwencji”, używanydo śledzenia sekwencji pakietów.

Page 22: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 305

Serwer odpowiada za pomocą komunikatu #$%��'( (włączone bity #$% oraz �'(), za-wierającego początkowy numer sekwencji serwera. Stare systemy używały począt-kowego numeru sekwencji X dla N-tego połączenia, X+64000 dla połączenia N+1 itd.

Ostatecznie klient wysyła komunikat �'(. W tym momencie każda ze stron może roz-począć wysyłanie danych. Gdy każda wyśle Y bajtów swoich danych, musi zwiększyćnumer sekwencji o wartość Y. Należy zauważyć, że zostały wysłane trzy pakiety, i dla-tego to właśnie trójstopniowa wymiana komunikatów �'( inicjuje połączenie.

Jak przypominasz sobie z podrozdziału zatytułowanego „Dlaczego udaje się fałszo-wanie pakietów UDP”, sfałszowanie adresu źródłowego pakietu jest trywialne. Jedy-nym utrudnieniem podczas przeprowadzania takiej operacji w przypadku połączeniaTCP jest to, że klient musi znać numer początkowy sekwencji serwera lub spróbowaćgo odgadnąć. Jeżeli klient używa fałszywego adresu źródłowego, odpowiedź #$%��'(serwera, która będzie zawierać cenny początkowy numer sekwencji, wysyłana jest podfałszywy adres źródłowy i kraker nigdy jej nie zobaczy.

Najnowsze wersje systemu Linux używają trudnego do odgadnięcia schematu tworzenianumerów sekwencji; takie rozwiązanie ma zwiększyć ochronę przed fałszowaniem.Szczegółowe informacje zostaną podane w podrozdziale „Zapobieganie fałszowaniu se-kwencji TCP” na stronie 307. Ponieważ numer sekwencji jest liczbą 16-bitową, wła-mywacz musi odgadnąć 65536 liczb.

Jeśli jednak włamywacz mógł nie został wykryty przez dostatecznie długi okres czasu,mógł odgadnąć ten numer. Z tego powodu w sytuacji, w której wymagane jest stoso-wanie mocnych zabezpieczeń, nie polegać jedynie na adresach IP. Powinniśmy wyko-rzystać zaporę sieciową blokująca pakiety pochodzące z internetu (lub podsieci, doktórych mamy niewystarczająco duże zaufanie), które wydają się pochodzić z syste-mu umieszczonego w sieci wewnętrznej. Jedynie połączenia ��� pochodzące z siecizewnętrznej powinny być przepuszczane do Strefy Zdemilitaryzowanej (DMZ), w którejnależy umieścić serwery pocztowe oraz WWW. Więcej szczegółowych informacjiznaleźć można w podrozdziale „Zbuduj niezależne twierdze” na stronie 349. Wciąż jed-nak zapora sieciowa lub program TCP Wrappers będzie filtrować znaczną część próbwłamania się do sieci.

5.2.3. Przechwytywanie sesji TCP

Poziom zagrożenia:

Trzeba w tym miejscu wspomnieć o jednej bardzo istotnej rzeczy: otóż jeżeli krakermoże podsłuchać ruch w sieci komputerowej, może również określić kolejny numersekwencji w połączeniu wychodzącym, niezależnie od tego, po której stronie połą-czenia się znajdzie. Jeżeli ma dostęp do jednego z serwerów sieci serwera lub klienta,obserwowanie ruchu w tej sieci nie sprawi mu najmniejszego problemu. Następniekraker będzie w stanie wprowadzić do niej swój własny pakiet. Na przykład jeżeli ist-nieje otwarta oraz aktywna sesja �� ��, zapoczątkowana choćby przez administratora

Page 23: Bezpieczeństwo w Linuksie. Podręcznik administratora

306 Część I ♦ Zabezpieczanie systemu

logującego się ze swojego komputera domowego, kraker mógłby wprowadzić pakietużywający polecenia powłoki powodującego wprowadzenie do systemu konia trojań-skiego. Takie przechwycenie sesji nie będzie trwać długo — jedynie do czasu, gdy dwauprawnione systemy zostaną zdezorientowane i zamkną sesję. Z tego samego powodumożliwe jest wykorzystanie tej techniki do przeprowadzenia ataku DoS.

Ponieważ jednak pojedynczy pakiet może wprowadzić konia trojańskiego do sesjitelnet, jest ona bardzo niebezpieczna. W podobny sposób może zostać przechwyconarównież sesja WWW, np. podczas wykonywania operacji transakcji płatniczej. W obuprzypadkach powinniśmy zabezpieczyć się stosując mocne algorytmy szyfrujące, takiejak SSL, SSH lub sieci VPN w rodzaju FreeS/WAN. Ich użycie zapobiegnie zarównopodsłuchiwaniu, jak i przejmowaniu sesji. Wspomniane tu rozwiązania zostaną omó-wione w podrozdziałach zatytułowanych „Zabezpieczanie sesji użytkownika za pomocąSSH” na stronie 481, „Pobieranie pakietu SSL” na stronie 830 oraz „VPN z wykorzy-staniem FreeS/WAN IPSec” na stronie 502.

5.3. Ataki typu SYN Flood

Poziom zagrożenia:

Przypomnij sobie dyskusję o trójstopniowej wymianie pakietów �'(, omówionej w pod-rozdziale „Fałszowanie sekwencji TCP” na stronie 304. Po wysłaniu przez klienta pa-kietu #$% do serwera, ten ostatni odnotowuje to w kolejce połączeń oczekujących nadokończenie, odsyła do klienta pakiet #$%��'( oraz oczekuje na pakiet �'( kończącynawiązywanie połączenia. Co więcej, podczas oczekiwania przydziela pewne tymcza-sowe zasoby, „wiedząc”, że pakiet �'( zostanie przesłany za sekundę lub dwie.

W przypadku ataku typu #$% Flood, czyli ataku polegającego na użyciu półotwartychpołączeń, klient (kraker) nie wysyła nigdy ostatniego komunikatu �'(. Zamiast tegowysyła ponownie kolejny pakiet #$% z innym sfałszowanym adresem źródłowym, copowoduje przydzielenie kolejnych zasobów serwera. Zauważ, że klient nie zarezerwo-wał żadnych swoich zasobów, ponieważ w celu wysłania dowolnych pakietów uży-wał surowych gniazd.

Ponieważ aż do ostatnich czasów większość systemów operacyjnych nie mogła ob-sługiwać więcej niż tylko pewnej małej ilości tego rodzaju „w połowie otwartych”gniazd zanim zasoby nie zostały wyczerpane całkowicie, z pewnością zaistnienie takiejsytuacji bardzo szybko spowoduje wyłączenie serwera. Obrona przed atakami tego typuzostanie omówiona w kolejnym podrozdziale. Atak zrealizowany przy użyciu pakie-tów #$% został zaobserwowany po raz pierwszy wtedy, gdy podatny na niego serwerfirmy Panix (dostawcy ISP w Nowym Jorku) został przy jego użyciu wyłączony. W fir-mie tej do dziś nikt nie wie, kto zaatakował ją po raz pierwszy.

Page 24: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 307

5.4. Obrona przed atakamitypu SYN Flood

Poziom zagrożenia:

W poprzednim podrozdziale omówiłem działanie ataku DoS typu SYN Flood. Abysię przed nim uchronić, gdy jeśli używasz wersji jądra starszej niż 2.0.36, powinieneśpo prostu je uaktualnić. Należy podkreślić, że już jądra o wersji wyższej niż 2.0.30udostępniają poprawkę zabezpieczającą przed tym atakiem, lecz oprócz tego zawie-rają inny błąd umożliwiający fałszowanie pakietów TCP, dlatego też należy używaćwersji przynajmniej 2.0.36, w której wspomniany błąd nie występuje. Po pobraniu ją-dra 2.0.36 lub nowszego konieczne jest przekompilowanie go ze zdefiniowaną stałą')%*+,�#$%�'))(+-#. Zazwyczaj uzyskamy to wykonując podczas konfiguracji jądranastępujące polecenia, wywoływane z /usr/src/linux:

��������� ������w przypadku używania X Windows������������ ���menu�������� �������stara metoda

Stała ')%*+,�#$%�'))(+-# powoduje rozpoznanie, że kolejka „w połowie otwartych”połączeń, w której zapamiętywane są szczegóły dotyczące nawiązywanego połącze-nia, przekroczyła odpowiedni rozmiar. Połowa z tej kolejki jest dedykowana do ob-sługi komunikacji z systemami, z którymi ostatnio pomyślnie nawiązano połączenie,przy założeniu, że systemy te są prawdopodobnie do tego uprawnione.

Jeżeli serwerowi zaczyna brakować przestrzeni w kolejce, koduje dane przy użyciu32 bitów i dołącza tę informację do pakietu #$%��'( jako numer początkowy sekwen-cji. Jeżeli pakiet ten trafi do właściwego klienta, który nie jest koniem trojańskim, tenzwiększy numer pakietu i umieści go w kolejnym pakiecie �'(. Serwer następnieodejmuje jeden od numeru pakietu i dysponuje wszystkimi informacjami niezbędnymido zakończenia procesu nawiązywania połączenia. Jeżeli pakiet #$% spowodowany byłatakiem typu #$% flood, w przypadku gdy jądro odsyła z powrotem pakiet #$%��'(,serwer „zapomina” o okolicznościach połączenia (zamiast zapisywać do pliku z logiemkomunikatu z ostrzeżeniem „Uwaga: możliwy atak typu SYN Flood.”). Większośćostatnich wersji jądra ma tę opcję włączoną domyślnie.

5.5. Zapobieganie fałszowaniusekwencji TCP

Poziom zagrożenia:

Starsze jądra systemu Linux (i wiele innych systemów operacyjnych) używają prze-widywalnego schematu tworzenia numerów sekwencji pakietów TCP, co otwiera

Page 25: Bezpieczeństwo w Linuksie. Podręcznik administratora

308 Część I ♦ Zabezpieczanie systemu

system na możliwość sfałszowania przez krakera pakietów oraz przejęcia połączenia.Szczegółowe wyjaśnienie tej techniki zostało umieszczone w podrozdziale „Fałszo-wanie sekwencji TCP” na stronie 304. Rozwiązanie polega na uaktualnieniu jądrasystemu Linux przynajmniej do wersji 2.0.30.

Trzeba jednak pamiętać, że w stosie protokołu TCP starszych jąder istnieje błąd umożli-wiający przeprowadzenie fałszowania pakietów TCP przy użyciu innej metody — klient(używający fałszywego adresu źródłowego) mógłby wysłać pakiety, które zostałybydostarczone do nasłuchującego serwera przed zakończeniem trójetapowego nawiązy-wania połączenia TCP. Ponieważ klient, jeśli jest narzędziem krakera, nie musi ocze-kiwać na zakończenie tej procedury, nie musi również oczekiwać na otrzymanie pakietu#$%��'( i w ten sposób omija zabezpieczenia TCP. Ten ostatni błąd został poprawionyw wersji 2.0.36 jądra. Dlatego też jeżeli używasz jądra w starszej niż ta wersji, jeślichcesz zapewnić sobie ochronę przez fałszowaniem pakietów TCP, powinieneś doko-nać jak najszybszego uaktualnienia.

5.6. Sztormy pakietów, ataki smurfóworaz fraglesi

Poziom zagrożenia:

Sztorm pakietów (ang. packet storm) to określenie, którym nazywa się technikę wyko-rzystywaną przez włamywacza (lub osobę z nim współpracującą) w celu zalania sys-temu fałszywymi pakietami i zajęcia dzięki temu całego dostępnego pasma łącza sie-ciowego. Uniemożliwi to obsługę uprawnionych pakietów, ponieważ upłynie czas ichobsługi. Jest to jeden z rodzajów ataków typu DoS. Jeżeli atak przypuszczony zostałz wielu systemów, jest nazywany rozproszonym atakiem DoS (DDoS). Niektóre z bru-talnych ataków typu DDoS polegają na złamaniu przez krakera wielu systemów, zain-stalowaniu na nich programów pozostających w utajnieniu, a następnie wykorzystaniuich po pewnym okresie czasu (niekiedy po miesiącach) do wykonania jednoczesnegoataku na system ofiary. Metoda ta została przedstawiona na rysunku 5.3, na którymkażdy z prostokątów reprezentuje inny system. Zauważ, że kraker musi wysłać jedyniekilka komunikatów w celu spowodowania zalania systemu ofiary milionem pakietów.Może skorzystać z pakietów ICMP lub UDP zawierających sfałszowane adresy źró-dłowe, co praktycznie uniemożliwi wyśledzenie źródła ataków. Prostokąty z literą „Z”oznaczają „zombie” — systemy ze złamanymi zabezpieczeniami, atakujące ofiarę powydaniu stosownego polecenia.

Jak wynika z rysunku 5.3, po skonfigurowaniu komputerów nadzorujących atak orazkomputerów zombie, wysłanie kilku zaledwie pakietów z systemu krakera może wy-łączyć nawet największy system. Ponieważ możliwe jest wykorzystanie wielu pozio-mów „pośrednich” pomiędzy włamywaczem a ofiarą, ten pierwszy prawdopodobnienie zostanie schwytany, chyba że zaatakował niewłaściwą osobę.

Page 26: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 309

Rysunek 5.3.Atak typu DDoS

Ataki smurfów (ang. smurf attacks) to swoiste ataki typu sztorm pakietów; włamy-wacz używa w nich fałszywego adresu podczas wysyłania pakietu echo protokołu ICMPna adres rozgłoszeniowy IP. O ile sieć docelowa nie została zabezpieczona przed takimiatakami, żądanie to zostanie dostrzeżone przez wszystkie systemy w niej umieszczonei każdy z nich odpowie przy użyciu fałszywego adresu nadawcy, co spowoduje zala-nie tego serwera (zamierzonej ofiary) olbrzymią ilością fałszywych pakietów. Atak tenmoże być jeszcze zwielokrotniony poprzez wykorzystanie adresu rozgłoszeniowegow charakterze sfałszowanego adresu źródłowego, co spowoduje zwielokrotnienie liczbysystemów dotkniętych atakiem.

Więcej informacji na temat omawianych tu ataków oraz przeciwdziałania im zawiera witrynaCraiga Huegena, znajdująca się pod adresem http://www.pentics.net/denial-of-service/.Łącza do niej umieszczane są na wielu innych witrynach, zaś jej autor wspaniałomyślniezgodził się na użycie jego materiałów w tej książce.

Wykorzystanie rozgłoszeniowego adresu docelowego w celu spowodowania przez po-czątkowy pakiet wygenerowania wielu odpowiedzi (w tym przypadku odpowiedzi napolecenie echo protokołu ICMP) jest nazywane wzmocnieniem (ang. amplification).Dzięki wykorzystaniu takiej metody osoba dokonująca ataku nie musi wykorzystywaćzbyt wielu zasobów swojego komputera. Jeżeli przy użyciu adresu rozgłoszeniowegowysłała ona wiadomość rozgłoszeniową do 100 serwerów w sieci, ofiara otrzyma 100odpowiedzi. Jeżeli w ten sposób zostanie wykorzystana duża sieć komputerowa, naprzykład sieć uniwersytetu lub jednej z firm z listy Fortune 500, uzyskane zwielokrotnie-nie może wynosić nawet 1000 razy. Dzięki temu atak może zostać zapoczątkowanyprzy użyciu połączenia wdzwanianego do sieci T1 i spowodować zatrzymanie działa-nia olbrzymiej sieci docelowej z łączem T3. Jeżeli sieć komputerowa &. / / / klasyA pozwala na użycie rozgłoszeniowych adresów docelowych, odpowiedź na polecenieecho zostałaby wysłana pod adres &. 0�� 0�� 0��.

System, do którego jest wysyłane żądanie echo, jest nazywany wzmacniaczem. W celuzwiększenia efektu osoba atakująca może wykorzystać równolegle wiele wzmacnia-czy, wysyłając pakiet najpierw do pierwszego systemu, później do drugiego itd. Jednak

Page 27: Bezpieczeństwo w Linuksie. Podręcznik administratora

310 Część I ♦ Zabezpieczanie systemu

jest to wciąż zaledwie pierwszy poziom wzmocnienia. Jeżeli natomiast również siećzamierzonej ofiary obsługuje docelowe pakiety rozgłoszeniowe, możliwe jest uzyska-nie wzmocnienia dwupoziomowego.

Mechanizm taki polega na wysłaniu pakietów pod adres rozgłoszeniowy sieci kom-puterowej ofiary, z wykorzystaniem sfałszowanego adresu źródłowego, którym jestadres rozgłoszeniowy innej sieci komputerowej. Jeżeli sieć ofiary obejmuje 50 syste-mów, zaś druga sieć komputerowa 100, każdy z 50 systemów wyśle odpowiedź nażądanie echo przy użyciu komunikatu skierowanego do drugiej sieci komputerowej,powodując wysłanie odpowiedzi przez każdy z jej 100 systemów. Daje to w rezultaciewzmocnienie 50×100, czyli 5000 razy. W przypadku, gdyby sieć dysponowała 1000systemów, uzyskane zostałoby wzmocnienie 1 000 000 razy. Większość wykorzysty-wanych obecnie dużych sieci zabezpieczono jednak przed atakami tego typu.

Nazwa omawianego tu typu ataku pochodzi z bajki o Smurfach, w której wiele tych niebie-skich stworzonek zdawało się wypełniać niemal całą przestrzeń.

Istnieje odmiana ataku smurfów zwana atakiem fraglesów, używająca żądań echo pro-tokołu UDP w sposób podobny do żądań ICMP wykorzystywanych w przypadku atakusmurfów.

5.6.1. Zapobieganie wykorzystaniu systemuw charakterze wzmacniacza

W celu wykluczenia możliwości wykorzystania systemu w charakterze wzmacniaczanależy wykonać wiele czynności. Każda z nich zostanie omówiona w dalszej częścitej sekcji.

Na routerze lub zaporze sieciowej należy blokować wszystkie pochodzące z internetu pakietyz rozgłoszeniowym adresem docelowym lub rozgłoszeniowym adresem źródłowym.

Jeżeli pomiędzy systemami twojej sieci a siecią internet nie jest umieszczony żaden sys-tem zapory sieciowej lub router (w przypadku dysponowania więcej niż kilkoma sys-temami nie zasługuje to na pochwałę), poprzednia rada powinna zostać zastosowanaw odniesieniu do każdego systemu. Na każdej z maszyn bez wątpienia powinien zo-stać uruchomiony program IP Chains, pozwalający na wykonanie stosownego filtrowa-nia. (Należy pamiętać, że dowolny komputer z systemem Linux z rozsądnie nowejdystrybucji, używający jądra w wersji 2.2 lub późniejszej, może być w prosty sposóbskonfigurowany w charakterze zapory sieciowej pomiędzy siecią wewnętrzną LANa oddzielna kartą Ethernet obsługującą połączenie z internetem lub połączeniem PPP,ISDN, T1 lub T3. Nawet system dysponujący procesorem 386 poradzi sobie w przypad-ku połączenia ISDN, zaś system Pentium będzie w stanie obsłużyć połączenie T3.)

Używana przez ciebie zapora sieciowa powinna zostać również skonfigurowana w celublokowania pakietów nadchodzących z sieci „zewnętrznej”, które zawierają adres źró-dłowy, jaki powinien pochodzić jedynie z systemów twojej firmy i vice versa (jest to

Page 28: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 311

częsta technika fałszowania pakietów). Blokowanie pakietów z sieci wewnętrznej z adre-sami właściwymi sieciom zewnętrznym ma na celu wykluczenie możliwości prze-prowadzenia ataku przez nieprzyjaznych użytkowników z twojej sieci. Jeżeli obsługu-jesz system firmy ISP lub uniwersytetu, oczywiście musisz bronić się przed takimiużytkownikami. Ta sama reguła dotyczy dużych firm. Należy wyłączyć możliwośćustalania adresów źródłowych dla wszystkich pakietów przesyłanych do sieci (oraz wy-chodzących z niej, ponieważ osoby atakujące inne systemy mogą pracować w twojejsieci wewnętrznej).

Możesz również wyłączyć możliwość używania bezpośrednich adresów rozgłoszenio-wych wewnątrz obsługiwanych podsieci, dysponujących więcej niż (na przykład) pię-cioma systemami (wcześniej sprawdź, czy nie używasz żadnej aplikacji polegającejna tego rodzaju metodach rozgłoszeniowych, na przykład DHCP). Więcej informacjina temat konfiguracji zapór sieciowych, jak również przykłady reguł, zawierać będziepodrozdział zatytułowany „Zapora sieciowa oraz DMZ za pomocą IP Chains”, któryznajdziesz na stronie 595.

W przypadku powszechnie wykorzystywanych routerów odpowiednie polecenia wy-glądają następująco:

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

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

!�"�#�$�����������%��$�����&"$"���������"&�"�'(���������������&����&�� �$���

Mógłbyś zapobiec żądaniom echo protokołu ICMP oraz przedostaniu się do sieci od-powiedzi na nie po prostu je ignorując, jednak takie podejście nie jest zalecane, o ilenie stanowi ostatniej deski ratunku — spowoduje bowiem utrudnienie rozwiązywaniaproblemów zarówno przez ciebie, jak i inne osoby, które napotykają na kłopoty z po-łączeniem się z twoją siecią. Powodem ignorowania (odrzucania) odpowiedzi jest to,że będą one wysyłane przez niektórych krakerów, oczekujących, że twój system odpo-wie komunikatem informującym, że nie wysyłał żadnego żądania ICMP. Można ze-zwolić na wykonywanie normalnych poleceń echo i zablokować ataki Smurfów po-przez zablokowanie odpowiedzi echo ICMP o rozmiarze przekraczającym 100 bajtów,jako że ataki takie wydają się używać pakietów o rozmiarze ok. 1000 bajtów.

Należy wyłączyć odpowiedzi na komunikaty echo ICMP wysyłane na adresy rozgło-szeniowe. Takie działanie zostało zaakceptowane w dokumencie RFC-1122, w którym,w sekcji 3.2.2.6, użyto terminu multicast zamiast broadcast. Odpowiedzi na wspo-mniane komunikaty mogą być blokowane począwszy od jądra 2.2. Dla niektórychstarszych jąder dostępna jest odpowiednia poprawka. Kontrolowanie tej oraz innychwłaściwości zostało opisane w podrozdziale „Opcje jądra dotyczące protokołów” nastronie 116. W celu powstrzymania tego określonego typu ataku, podczas każdegouruchamiania systemu powinno być użyte następujące polecenie:

�)��*�+�������"����� ��,� ��-�)�- �����-��������

Page 29: Bezpieczeństwo w Linuksie. Podręcznik administratora

312 Część I ♦ Zabezpieczanie systemu

Dokument RFC 1122 jest dostępny po adresem:

www.faqs.org/rfcs/rfc1122.html

5.6.2. Obrona przed atakiem używającymsztormu pakietów

Jeżeli odkryłeś, że jesteś ofiarą ataku przeprowadzonego przy użyciu sztormu pakie-tów, powinieneś zdawać sobie sprawę z tego, że znalazłeś się w trudnej sytuacji. Ataktego typu spowoduje wykorzystanie całego pasma łącza. Z tego powodu nie istniejemożliwość uratowania sieci komputerowej. Niektóre firmy usiłują sprzedawać urzą-dzenia, które „ochronią sieć przeciwko rozproszonym atakom DoS przeprowadzanymprzy użyciu sfałszowanych pakietów oraz podobnym atakom”. Nie daj się zwieść takimreklamom. Chociaż urządzenia te mogą chronić przeciwko atakom Smurfów, atakomprzeprowadzanym za pomocą sfragmentowanych pakietów oraz podobnym, polegającymna naruszaniu standardów protokołów, to jednak zapora sieciowa oparta na systemieLinux skonfigurowanym w sposób przedstawiony w tej książce spełni te same zada-nia za znacznie mniejszą cenę.

W celu przeprowadzenia analizy pakietów możesz użyć programów # ��, � �����lub �������, szczególnie wtedy, gdy adresy źródłowe tych pakietów są podejrzane.Czy pakiety wydają się pochodzić z jednego adresu IP, czy z wielu? Jeżeli wydają siępochodzić z jednego lub małej liczby adresów, należy ustalić firmę, do której te adre-sy należą, używając w tym celu technik opisanych w rozdziale „Namierzanie kom-putera włamywacza” na stronie 801. Kiedy to zrobisz, skontaktuj się z jej przedstawi-cielami i zmuś do powstrzymania ataku. Nalegaj, aby w razie konieczności wyłączyliswoje komputery.

Trzeba pamiętać, że adres źródłowy może być sfałszowany, dlatego też istnieje moż-liwość, że atak pochodzi z zupełnie niezwiązanych z nim systemów. Jeżeli organizacjanie może zostać ustalona lub nie chce współpracować, należy użyć polecenia ���������� z argumentem w postaci podejrzanego adresu IP. Powinniśmy odnaleźć systemywystępujące przed podejrzanym. Mogłyby one określać jego dostawcę ISP. W takimprzypadku można ponowić opisane powyżej czynności, próbując nawiązać kontaktz firmą i poprosić jej przedstawicieli o potwierdzenie oraz powstrzymanie ataku.

Jeżeli adres źródłowy został sfałszowany, skontaktuj się z własnym dostawcą ISP. Powi-nien on dysponować planem działania podejmowanego w takiej sytuacji, lecz nie jestto obligatoryjne. Jeżeli adres źródłowy został sfałszowany, przedstawiciele dostawcyusług ISP muszą ustalić, jaki system ostatnio używał pakietu, a jaki jeszcze wcześniej —i tak aż do odnalezienia adresu systemu źródłowego. W przypadku, gdy w ataku uczest-niczy wiele systemów atakujących, technika ta może zostać powtórzona dla każdegoz nich, co jest jednak niezwykle czasochłonne. Chociaż blokowanie ataków przy uży-ciu określonego rodzaju pakietu jest proste, to kilka z ostatnich programów stosowa-nych do przeprowadzenia ataku DDoS może używać różnych typów pakietów.

Przyszłe programy umożliwiające ataki typu DDoS prawdopodobnie będą jeszcze bar-dziej różnicować pakiety, co jeszcze bardziej utrudni ich blokowanie. Już teraz trwają

Page 30: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 313

dyskusje pomiędzy niektórymi specjalistami, zmierzające do rozszerzenia protokołówumożliwiających systemowi docelowemu wysłanie komunikatu z informacją: „Prze-stań przesyłać pakiety o takich parametrach”. Taka metoda będzie mogła zostać wy-korzystana do zablokowania omawianych tu ataków. Ponieważ większość systemówrozszerza używane zapory sieciowe w celu wykonywania filtrowania pakietów orazblokowania złych pakietów pochodzących z ich własnych sieci, ataki tego typu będąsię coraz trudniej rozprzestrzeniać.

5.6.3. Routery Cisco

Administratorzy wykorzystujący routery firmy Cisco mogą znaleźć wiele przydatnychinformacji na jej stronie internetowej, poświęconej zwiększaniu zabezpieczeń; możnają znaleźć pod adresem:

www.cisco.com/warp/public/707/3.html

Na stronie tej znajdziemy m.in. omówienie techniki blokowania dostępu sieciowego,nazywanej w firmie Cisco „portem diagnostycznym UDP routera”. Zaprezentowanew tabeli 5.1 powszechnie obsługiwane usługi systemów Linux (UNIX) są często wy-korzystywane do przeprowadzania ataków typu DoS.

Tabela 5.1. Usługi diagnostyczne w systemie Linux (UNIX)

Usługa Port TCP UDP Przeznaczenie

Echo 7 T T Router odpowiada przy użyciu otrzymanych danych

Discard 9 T T Router odrzuca otrzymane dane

Daytime 13 T N Router wysyła datę oraz czas systemowy

Chargen 19 T T Router tworzy strumień znaków

W celu wyłączenia tych usług w routerze firmy Cisco, należy użyć następujących glo-balnych poleceń konfiguracyjnych:

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

Usługi te możesz również wyłączyć w systemie Linux, obejmując ich wpisy, znajdu-jące się w pliku /etc/inetd.conf, znakiem komentarza. Chociaż wspomniane usługi sąprzydatne dla administratorów innych systemów, próbujących przeanalizować pro-blemy z siecią komputerową, to jednak mogą się one również przydać krakerom orazinnym osobom dokonującym ataków DoS.

Niestety, chociaż wszystkie są usługami wewnętrznymi � ���, niemożliwe jest wyko-rzystanie TCP Wrappers w celu zezwolenia na ich wykorzystanie przez określone,przyjazne serwery oraz domeny. Tym niemniej w celu przyznania praw do ich wyko-rzystania tylko określonym systemom mógłbyś użyć funkcji zapory sieciowej lub IPChains.

Page 31: Bezpieczeństwo w Linuksie. Podręcznik administratora

314 Część I ♦ Zabezpieczanie systemu

5.6.4. Ataki DDoS: zasoby sieciowe z narzędziamido przeciwdziałania

Zapoznaj się ze wspomnianą już wcześniej, doskonałą stroną Craiga Huegena. Przy-pomnę, że znajdziesz ją pod adresem:

http://www.pentics.net/denial-of-service/

Wartościowe wyjaśnienie poruszanego tu problemu umieszczono także na stronie:

www.cert.org/tech_tips/denial_of_service.html

Sposób obrony opisany został pod adresem:

www.cert.org/reports/dsit_workshop.pdf

Sugestie dotyczące zwiększenia zabezpieczenia systemu zamieszczone zostały na stro-nie o adresie:

www.cert.org/security-improvement

zaś następujące dwie strony zawierają sugestie dotyczące sposobu przywrócenia po-prawnego działania systemu:

www.cert.org/nav/recovering.html

www.sans.org/

Po wystąpieniu w lutym 2000 roku dobrze opisanych ataków DDoS zauważyłem, żeniektórzy dostawcy zapór sieciowych twierdzili niezgodnie z prawdą, iż tylko ich urzą-dzenia ochronią sieć przed takimi atakami. Większość ataków typu DDoS, które wspo-mniane zapory sieciowe mogą blokować, takich jak chociażby ataki przeprowadzaneza pomocą pakietów #$% oraz sfragmentowanych pakietów, można zablokować równieżdzięki poprawnie skonfigurowanemu systemowi Linux. Nie ufaj zatem ślepo przed-stawicielom takich firm — poszukaj niezależnego doradcy.

5.7. Przepełnianie buforóworaz niszczenie zawartości pamięci

Poziom zagrożenia:

Jeden z najbardziej powszechnie wykorzystywanych sposobów włamania się do sys-temu Linux polega na wykorzystaniu tzw. przepełnienia bufora. Niektórzy programiścipopełniają pomyłki i nie są w stanie ograniczyć ilości danych, które ktoś może wczytaćdo pamięci programu zarezerwowanej na bufor danych. Kolejne bajty będą umieszczanew kolejnych obszarach pamięci, niszcząc tym samym ich wcześniejszą zawartość. Kiedy tenobszar pamięci zostanie odczytany ponownie, zostaną wykonane instrukcje umieszczone

Page 32: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 315

w nim przez osobę, która dokonała przepełnienia bufora. Przypomina to wprowadzaniepoprawek do programu w najbardziej złośliwy i skomplikowany sposób.

Jedna ze stosowanych powszechnie (w języku C) praktyk programistycznych polegana przydzieleniu wielu buforów w pamięci na stosie, jak również wykorzystaniu stosudo przechowywanie adresów powrotnych z procedury. Umożliwia to sprytnemu kra-kerowi spowodowanie, że procedura zwróci to wszystko, czego on sobie zażyczy —zazwyczaj adres powrotu do własnego kodu umieszczonego w innym obszarze bufora.Inaczej mówiąc, w celu dokonania włamania modyfikowane są zmienne na stosie.

Istnieje kilka sprytnych technik służących do odpierania ataków przeprowadzanych za po-mocą przepełnienia bufora nawet w przypadku wadliwego kodu. Techniki te — niektórebardzo proste — zostaną opisane w podrozdziale zatytułowanym „Ochrona przed przepeł-nieniem bufora za pomocą Libsafe” na stronie 397.

Atak przeprowadzany za pomocą przepełnienia bufora może być rozpoznany, jeżelisystem zarejestruje obecność długiego pola wejściowego, zawierającego wiele znaków,które nie są drukowalne. Oto, co otrzymałem jako „prezent noworoczny” w roku 1999:

.���*�//�01�,*����� ������230*4��%���)�� &���������"�#56�� ���7/89*379*039,:

.���*�//�01�,*����� ��"����������������������������������)��

.���*�//�01�,*����� ������230*4��!��������������7/89*379*039,:�������;�;�;�;�;�;�;�;�;�;�

[prawie 460 znaków ��].���*�//�01�,*����� �;<=�;>;<=�;>;<=�;>;<=�;>;<=�;>;<=�;>999

Atak został zarejestrowany przez magazyn CERT numerze CA-1998-12; znajdziesz gopod adresem:

http://www.cert.org/advisories/CA-1998-12.html

W przypadku programów CGI na włamanie oraz na próbę obejścia filtrowania zawarto-ści wskazują długie łańcuchy wejściowe, zawierające dużą liczbę sekwencji typu 12�.Metody zapobiegania skutkom działania tego typu programów, dokonujących filtrowaniazawartości za pomocą sekwencji 12�, zostały opisane w podrozdziale zatytułowanym„Odszyfrowywanie adresów URL” na stronie 354.

5.8. Techniki fałszowania

Fałszowanie ma miejsce wtedy, gdy coś (ktoś) udaje coś innego. W przypadku intere-sujących nas zagadnień może to dotyczyć osoby, systemu lub pakietu. Przedstawionaw tym rozdziale dyskusja zostanie ograniczona jedynie do systemu generującego pa-kiety sieciowe lub komunikaty, które wydają się pochodzić z zupełnie innego miejsca.Komunikat taki byłby zestawem pakietów, który składa się z kompletnej porcji infor-macji, tak jak wiadomość e-mail może składać się z długiej sekwencji pakietów TCP.

Page 33: Bezpieczeństwo w Linuksie. Podręcznik administratora

316 Część I ♦ Zabezpieczanie systemu

5.8.1. Fałszowanie wiadomości pocztowych

Poziom zagrożenia:

Ze sfałszowaną wiadomością pocztową mamy do czynienia wtedy, gdy wydaje się onapochodzić od zupełnie kogoś innego, od kogo w rzeczywistości pochodzi. Sfałszowaniewiadomość pocztowej jest trywialne, nawet dla nieuprzywilejowanego użytkownika,ponieważ to program pocztowy umieszcza w wiadomości nagłówek określający, odkogo ona pochodzi, kto jest jej adresatem, adres zwrotny oraz datę. W celu dokonaniafałszerstwa należy jedynie połączyć się z programem �� ���� bezpośrednio, z pomi-nięciem programów typu Mail czy Netscape. Po kilku godzinach eksperymentowaniamożna będzie zupełnie ominąć program �� ���� i połączyć się bezpośrednio z por-tem 25, przy użyciu protokołu TCP.

Nowsze wersje programu ������ � będą przekazywać użytkownikowi komunikat „may beforged”, jeżeli różne elementy danych nie zgadzają się ze sobą. Wiele najnowszych konfigu-racji programu ������ � określa rzeczywisty adres nadawcy oraz rzeczywistą nazwę serwera(za pomocą odwrotnego rozwiązania adresów), tak że będziesz mógł określić, czy danawiadomość pocztowa została sfałszowana i umieścić ją na liście Realtime Blackhole List.Więcej szczegółowych informacji na ten temat zostało przedstawionych w podrozdziale „Fał-szowanie adresu nadawcy wiadomości pocztowych” na stronie 234.

W celu nawiązania połączenia z portem 25 oraz wysłania wiadomości może być wy-korzystany nawet program �� ��, co zostało zademonstrowane w zaprezentowanym tuprzykładzie. Dokonano w nim sfałszowania wiadomości pocztowej do prezesa firmyPentacorp, udającej wiadomość wysłaną z Komisji Bezpieczeństwa oraz Wymiany,zawierającą informację, że przeciw firmie rozpoczęte zostało postępowanie w sprawieprzestępstw handlowych.

������� �9�������9���70><?@��� �9��9���A'�?�5����B�$���C�� �9��9���+(��D�D��B����C�������9��+E'D'5�����$���C�� �9��9����A���@�**�73�03�3:�7///(�������)���$���C�� �9��9���(�� �����=������$���F��"��� �9��9����=:9:91�:9:91F� ��G''*1731�H��������C�������9��I�A��J�**�@�7///�73�,3�,K�L/0//�=>6DF(�� ������"��� �9�������9���=:9:91�:9:91F� ��G''*1731�H��������� 9��I�A��J�**�@�7///�73�,3�0:�L/0//�=>6DF5������$���C�� �9��9����=.���M���FA�����������B7///*/*7/,,39G''*1731C�� �9��9���+6���������N��$�� ��$�����$ ����&��N��$�)�����$")D�������C�������9��E����A��J�**�@�7///�73�,3�,K�L/0//�=>6DF

6&���$�"���� ��(�����

����� ��"��� ������$�O�����J�P����&� $��������� �� ��&������$�&&N�����N��$�� �&���&N���$�����$ ����P� $���������&�� �����$ Q&��Q")���&�� �R$���"&Q")�)�����

Page 34: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 317

$�$�N�&����9#�� ���&����$ ������������Q�� N�$��R��&������J�����$� ��� ������� ��"����&��������������$�����$"��S� �� ��$Q�� $�S 9

T�$"��&�� ��&�����

.9�M���6���&"���������://�6>��/33/

W pierwszym komunikacie serwer przesyłający wiadomość poda swoją nazwę, lecz —w odróżnieniu od adresu IP — będzie mógł podać dowolną nazwę systemu. Istniejejednak pewna przydatna funkcja, pozwalająca świadomemu odbiorcy wyśledzić wia-domość. Większość systemów pośredniczących będzie dodawać do nagłówka wiado-mości wiersze 3����4��. Chociaż osoba fałszująca wiadomość będzie mogła dodaćswoje własne wiersze 3����4��, to kolejne poprawne systemy dodadzą swoje:

(�� ������"��� �9�������9���=:9:91�:9:91F� ��G''*1731�H��������� 9��I�A��J�**�@�7///�73�,3�0:�L/0//�=>6DF

Zauważ że system pocztowy firmy Pentacorp dodał prawdziwy nagłówek, który po-zwoli wyśledzić, że wiadomość dotarła z serwera rootkit.com, choć fałszerz zadał sobietrud, aby dodać nagłówek postaci:

(�� �����=������$���F��"��� �9��9����=:9:91�:9:91F� ��G''*1731�H��������C�������9��I�A��J�**�@�7///�73�,3�,K�L/0//�=>6DF

Serwery pocztowe przekazujące wiadomość dodadzą poprawną nazwę serwera sys-temu, z którego ją otrzymały, a niektóre pokażą również adres IP w postaci liczbowej(a to jest już znacznie trudniejsze do sfałszowania). Niektóre systemy pośrednicząceodmówią zaakceptowania wiadomości pocztowych z systemów, które nie podadząpoprawnej nazwy w wierszu -�5). Nieliczne dokonają nawet weryfikacji, czy odpo-wiada ona numerowi IP systemu, z którym zostało nawiązane połączenie. Jedynymsposobem obrony przed tego rodzaju atakiem — oprócz sprawdzania danych poda-nych w wierszu -�5) — jest odpowiednia edukacja użytkowników oraz stosowaniePGP. Należy postarać się o to, by użytkownicy zrozumieli, że tego rodzaju fałszer-stwo jest możliwe i nie należy bezgranicznie ufać wiadomościom pocztowym, chybaże są one wysyłane przy użyciu PGP.

5.8.2. Atak realizowany przy użyciu adresu MAC

Poziom zagrożenia:

Skrót MAC pochodzi od określenia Media Access Control (ang. kontrola dostępu domedium) i oznacza rzeczywisty adres karty sieciowej. Czasem nazywa się go także adre-sem w sieci Ethernet. Jest on reprezentowany za pomocą 6 liczb w systemie szesnast-kowym, na przykład: 06"77"08"9&".�":8. Jest to rzeczywisty adres karty. Jeżeli nie zo-stanie zmieniony przez program konfiguracyjny, będzie to adres zapisany w pamięciPROM karty. Karta, a tym samym również komputer, otrzymuje dane przeznaczone

Page 35: Bezpieczeństwo w Linuksie. Podręcznik administratora

318 Część I ♦ Zabezpieczanie systemu

dla danego adresu IP komputera jedynie z tej przyczyny, że istnieje protokół pozwa-lający na skojarzenie adresu IP z adresem MAC. Protokół ten umożliwia systemowiwysyłającemu dane zadać pytanie: „Pod jaki adres MAC powinienem wysłać dane adre-sowane pod określony adres IP?”. Następnie, po uzyskaniu odpowiedzi, system adre-suje pakiet wykorzystując adres MAC.

Ataku omawianego tu typu ma miejsce w przypadku, gdy kraker dysponuje kontroląnad systemem w sieci LAN i zmieni adres MAC (adres Ethernet) udostępniany przezkartę sieciową innym systemom. Jeżeli następnie wyśle pakiety, będą one pojawiaćsię tak, jakby pochodziły z systemu, pod który kraker się podszywa. W takim przy-padku pomaga odłączenie zaatakowanego systemu od sieci komputerowej, uzyskiwanepoprzez odłączenie jego karty Ethernet, wyłączenie zasilania lub uszkodzenie systemu.Pamiętaj, że większość kart Ethernet umożliwia zmianę ich adresów MAC; aby ją prze-prowadzić, można wykorzystać na przykład parametr �!������ polecenia ��� ���.

W celu wykrycia ataków tego typu można użyć programu Arpwatch, omówionego w pod-rozdziale „Wykrywanie ataków ARP i MAC za pomocą programu Arpwatch” na stro-nie 715. Spójrz również do indeksu i odszukaj wpis MAC.

5.8.3. Zmiana pamięci podręcznej ARP

Poziom zagrożenia:

Na najniższym poziomie dwa komputery używające sieci Ethernet komunikują się zesobą używając adresów MAC, zwanych niekiedy adresami Ethernet. Adres MAC musizostać przetłumaczony na adres IP, przedstawiany w postaci czterech liczb oddzielo-nych kropkami.

Mechanizm ten polega na tym, że w przypadku gdy system X zamierza wysłać wiado-mość do systemu o adresie IP 0.� &6. �6 09&, wysyła wiadomość rozgłoszeniową ARP(ang. address resolution protocol, czyli protokół rozwiązywania adresów), pytając:„Który komputer ma przydzielony adres IP 0.� &6. �6 09&?”

System o takim adresie IP powinien odpowiedzieć: „Ja mam podany adres, a mój adresMAC to .."6;";0"&9"&:"*;”. System nadawcy wie w tym momencie, że pakiet danychpowinien zostać wysłany na adres MAC .."6;";0"&9"&:"*;.

Wszystkie komputery umieszczone w sieci komputerowej powinny nasłuchiwać prze-syłanych danych i umieszczać wszystkie odwzorowania w pamięci podręcznej, takaby nie były zmuszone do wysyłania swoich własnych zapytań. Ominięcie tego za-bezpieczenia i oszukanie innego systemu polega na użyciu polecenia ��� �������.&:; &80 &69 &9�.

Jeśli system, który rzeczywiście ma przydzielony adres IP o numerze &:; &80 69 &9�,nie jest włączony, to komputer, który się pod niego podszywa, nabywa wszystkie jegouprawnienia.

Page 36: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 319

Sprawdź również hasło MAC w indeksie.

5.8.4. Zmiana pamięci podręcznej DNS

Poziom zagrożenia:

Istnieje szereg sposobów, przy użyciu których kraker mógłby sfałszować dane prze-chowywane w pamięci podręcznej DNS. Jeżeli niektóre z używanych serwerów znaj-dują się na zewnątrz domeny, możliwe jest wykorzystanie całkiem prostej technikiomówionej przez D. J. Bernsteina ([email protected]). Jeżeli włamywacz może wpuścićdo sieci komputerowej odpowiedzi systemu DNS, to znaczy, że istnieje również wieleinnych luk w zabezpieczeniach. Oczywiście jedno z rozwiązań tego problemu polegana wymuszeniu, aby wszystkie serwery w sieci wewnętrznej używały wewnętrznegoserwera DNS, a następnie zablokowaniu na serwerze zapory sieciowej wszystkichodpowiedzi przekazywanych przy użyciu portów 53 protokołów UDP oraz TCP po-chodzących spoza sieci przesyłanych do komputerów pracujących w sieci wewnętrz-nej. Większość systemów powinna zablokować w systemie zapory sieciowej wszyst-kie dane przesyłane z i do sieci internet przy użyciu portu TCP o numerze 53.

Zastosowanie tej poprawki nie jest konieczne, lecz zablokowanie wspomnianych żą-dań zapobiegnie zmianie danych w pamięci podręcznej DNS przy użyciu fałszywychżądań transferów strefy. (Jeżeli co najmniej jeden spośród twoich serwerów DNS jestudostępniany przez twoją firmę ISP, będziesz zmuszony współpracować z jej przed-stawicielami w celu rozwiązania tego problemu.) Bernstain udostępnia swój własnyprogram zastępujący ����; nazwał go � ������. Możesz pobrać go z witryny umiesz-czonej pod adresem:

http://cr.yp.to/dnscache.html

Pewne informacje na temat blokowania niepożądanych transferów stref są umiesz-czone na stronie:

http://www.faqs.org/rfcs/rfc2065.html

5.9. Atak typu Man-in-the-Middle

Poziom zagrożenia:

Atak typu Man-in-the-Middle ma miejsce w sytuacji, gdy wychodzące z twojej siecipakiety nie trafiają do zamierzonego systemu docelowego, lecz raczej do kogoś, ktofunkcjonuje jako pośrednik w komunikacji pomiędzy systemem twoim i odbiorcy,udając jednocześnie przed tobą system odbiorcy, a przed odbiorcą twój. Ten „człowiekznajdujący się pośrodku” (ang. Man in the Middle) może w takim przypadku kierować

Page 37: Bezpieczeństwo w Linuksie. Podręcznik administratora

320 Część I ♦ Zabezpieczanie systemu

do odbiorcy wiadomości inne niż te, które wysłałeś. Również odpowiedzi od odbiorcydocierają do człowieka znajdującego się pośrodku, który zmienia komunikat i od-syła go do ciebie. Na przedstawionym nieco dalej rysunku 5.4 sprzedawca oraz klientuzgadniają kontrakt biznesowy dotyczący dużej dostawy towarów. Określają adresdoręczenia towaru, warunki płatności oraz konto bankowe sprzedawcy, na które mazostać przelana zapłata za towar.

Zarówno dla sprzedawcy, jak i dla klienta wszystko wydaje się być zwykłą, prostąprocedurą. Przeanalizuj rysunek 5.4 i postaraj się określić sposób, w jaki zarównosprzedawca, jak i klient mógłby odkryć oszustwo.

Rysunek 5.4(a). Atak typu Man-in-the-middle

Page 38: Bezpieczeństwo w Linuksie. Podręcznik administratora

Rozdział 5. ♦ Ataki powszechnie stosowane przez włamywaczy 321

Rysunek 5.4(b). Atak typu Man-in-the-middle

Jak widać, ani klient, ani sprzedawca nie ma żadnego pojęcia, że rzeczywistym roz-mówcą była niewłaściwa osoba. Ogólnie mówiąc metody uniknięcia takiego proble-mu wymagają bezpiecznego medium komunikacyjnego (takiego jak poczta poleconalub SSH) lub pewnej weryfikacji informacji, potwierdzającej, że została ona w sposóbbezpieczny wymieniona pomiędzy dwiema stronami. Taka weryfikacja mogłaby po-legać na użyciu sekretnego algorytmu tworzenia skrótu wiadomości (zobacz podroz-dział zatytułowany „ Wykorzystanie GPG do łatwego szyfrowania plików” na stronie505) lub innej techniki kryptograficznej. Ryzyko przeprowadzenia ataku Man-in-the-middle jest przyczyną, dla której akcentuję w tej książce konieczność zachowaniaograniczonego zaufania do wiadomości pocztowych. Dlatego również mamy akty nota-rialne oraz kontrakty pomiędzy firmami.

Właśnie z tego powodu wynikało również znaczenie pieczęci królewskiej. W rzeczy-wistości definicja „pieczęci” mówi, że jest nią znak określający autentyczność doku-mentu. Tego rodzaju atak może być bardzo trudny do uniknięcia, ponieważ najpierw,zanim nawiążesz pewny i bezpieczny kontakt z odbiorcą, musisz wymienić z nimpewne informacje w sposób mniej godny zaufania. Techniki PGP (GPG), SSH orazVPN zapobiegną temu atakowi jedynie wtedy, gdy początkowe klucze zostaną wy-mienione w sposób bezpieczny. Narzędzia tego typu zostaną omówione w podroz-działach „Pretty Good Privacy (PGP)” na stronie 504, „Wykorzystanie GPG do łatwego

Page 39: Bezpieczeństwo w Linuksie. Podręcznik administratora

322 Część I ♦ Zabezpieczanie systemu

szyfrowania plików” na stronie 505, „Zabezpieczanie sesji użytkownika za pomocąSSH” na stronie 481 oraz „VPN z wykorzystaniem FreeS/WAN IPSec” na stronie502. Uniknięcie narażenia systemów końcowych oznacza również zabezpieczeniekomunikacji pomiędzy każdym z systemów a klawiaturą użytkownika i ekranem. Za-zwyczaj oznacza to więc bezpieczną konfigurację systemu X, co zostało omówionew podrozdziale „X oznacza lukę w zabezpieczeniach” na stronie 160.

Bardzo powszechne jest umieszczanie klucza publicznego PGP na domowej stronieWWW, a niektóre osoby dołączają go do wiadomości e-mail. Nie są to dobre rozwią-zania. Potwierdzenie klucza publicznego przy użyciu faksu lub telefonu powinno wy-starczyć w przypadku średniego stopnia zabezpieczenia aplikacji.

W przypadku aplikacji o wysokich zabezpieczeniach sugerowana jest wymiana kluczy publicz-nych PGP za pomocą poczty poleconej lub zaufanej firmy kurierskiej. Również rząd StanówZjednoczonych traktuje przesyłki polecone jako wystarczająco pewne medium do wysyłaniatajnych dokumentów lub wiadomości poufnych, lecz muszą one zostać podwójnie opako-wane. Taki wymóg wprowadzono by uniemożliwić sytuację, gdy ktoś przypadkowo otworzyzewnętrzną kopertę i zobaczy w niej poufne informacje.