background image

Wydawnictwo Helion
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63

e-mail: helion@helion.pl

125 sposobów na
bezpieczeñstwo sieci.
Wydanie II

Autor: Andrew Lockhart
T³umaczenie: Leszek Sagalara na podstawie 

100 sposobów

na bezpieczeñstwo sieci

 w t³umaczeniu Witolda Zio³o

ISBN: 978-83-246-0986-4
Tytu³ orygina³u: 

Network Security Hacks: Tips & Tools for

Protecting Your Privacy

Format: B5, stron: 440

Praktyczny przewodnik po technikach zabezpieczania sieci komputerowych 

• 

Jak sprawnie zabezpieczyæ system? 

• 

Jak zapewniæ sobie prywatnoœæ w internecie? 

• 

Jak skutecznie walczyæ z sieciowymi w³amywaczami? 

W naszych domach montujemy solidne zamki i drzwi, chronimy samochody 
wymyœlnymi alarmami, w firmach zak³adamy systemy monitoringu, jednak nadal wiele 
osób nie zwraca wystarczaj¹cej uwagi na bezpieczeñstwo komputerów w sieciach 
domowych oraz korporacyjnych. Luki w systemach informatycznych powoduj¹ ka¿dego 
roku straty rzêdu miliardów dolarów, a przecie¿ dostêpnych jest wiele narzêdzi
i technik, które pozwalaj¹ skutecznie zabezpieczyæ komputery przed atakami 
crackerów. 

125 sposobów na bezpieczeñstwo w sieci. Wydanie II

 to zaktualizowany

i rozbudowany zbiór praktycznych porad dotycz¹cych zabezpieczania systemów 
informatycznych przed atakami. Dziêki wskazówkom przygotowanym przez cenionych 
profesjonalistów dowiesz siê, jak stosowaæ najnowsze narzêdzia systemowe
i niezale¿ne programy do zabezpieczania systemów i danych, ochrony w³asnej 
prywatnoœci w sieci czy bezpiecznego ³¹czenia zdalnych maszyn. Nauczysz siê tak¿e 
zastawiaæ pu³apki na sieciowych napastników, wykrywaæ ich obecnoœæ w sieci i szybko 
przywracaæ normalne funkcjonowanie systemu po ewentualnym ataku. 

• 

Zabezpieczanie systemów Windows i uniksowych 

• 

Zapewnianie prywatnoœci w internecie 

• 

Konfigurowanie i testowanie zapór sieciowych 

• 

Bezpieczne korzystanie z us³ug 

• 

Zabezpieczanie sieci przewodowych i bezprzewodowych 

• 

Monitorowanie dzia³ania sieci 

• 

Stosowanie silnego szyfrowania i uwierzytelniania 

• 

Wykrywanie w³amañ i przywracanie dzia³ania sieci 

Stosuj sprawdzone sposoby zapewniania bezpieczeñstwa w sieci  

background image

     

  

     

Spis tre

ğci   _  

3

Spis tre

ğci

Twórcy ksi

Ćīki  ................................................................................................................................7

Wst

ċp .............................................................................................................................................11

Rozdzia

â 1. Bezpieczeĕstwo systemu Unix  ................................................................................17

 

1.  Zabezpieczenie punktów montowania  ........................................................................ 17

 

2.  Wynajdywanie programów z ustawionymi bitami SUID i SGID  ........................... 19

 

3.  Wynajdywanie udostöpnionych katalogów ................................................................ 20

 

4.  Tworzenie elastycznych hierarchii uprawnieþ

za pomocñ list ACL standardu POSIX  ....................................................................... 21

 

5.  Zabezpieczenie dzienników zdarzeþ przed modyfikacjñ  ......................................... 24

 

6.  Podziaä zadaþ administracyjnych  ................................................................................. 26

 

7.  Automatyczna kryptograficzna weryfikacja sygnatury  ............................................ 28

 

8.  Odnalezienie nasäuchujñcych usäug .............................................................................. 30

 

9.  Zapobieganie wiñzaniu siö usäug z interfejsami ......................................................... 33

 

10.  Ograniczenie usäug do Ĉrodowiska sandbox  .............................................................. 34

 

11.  UĔycie serwera proftp z MySQL jako Ēródäem danych uwierzytelniajñcych  ....... 38

 

12.  Zabezpieczenie siö przed atakami rozbicia stosu ....................................................... 41

 

13.  grsecurity — zabezpieczenie na poziomie jñdra  ........................................................ 43

 

14.  Ograniczanie aplikacji za pomocñ äatki grsecurity ..................................................... 48

 

15.  Ograniczanie wywoäaþ systemowych za pomocñ mechanizmu systrace .............. 50

 

16.  Automatyczne tworzenie zasad mechanizmu systrace ............................................. 54

 

17.  Kontrola logowania za pomocñ moduäów PAM ........................................................ 56

 

18.  Ograniczenie uĔytkownikom usäug przesyäania plików do SCP i SFTP  ............... 60

 

19.  Uwierzytelnianie za pomocñ haseä jednorazowych ................................................... 63

 

20.  ćrodowiska ograniczonych powäok .............................................................................. 66

 

21.  Ograniczenie uĔytkownikom i grupom uĔycia zasobów  ......................................... 67

 

22.  Automatyczne uaktualnianie systemu ......................................................................... 69

Rozdzia

â 2. Bezpieczeĕstwo systemu Windows  ........................................................................71

 

23.  Kontrola zainstalowanych poprawek ........................................................................... 72

 

24.  Konfiguracja aktualizacji automatycznych

za pomocñ przystawki Zasady grupy ........................................................................ 76

background image

  

4  

_   Spis treğci

 

25.  Lista otwartych plików oraz procesów, które ich uĔywajñ ...................................... 79

 

26.  Lista dziaäajñcych usäug i otwartych portów  .............................................................. 81

 

27.  Uruchomienie inspekcji  .................................................................................................. 82

 

28.  Zdobywanie informacji o programach uruchamianych automatycznie  ................ 83

 

29.  Zabezpieczenie dzienników zdarzeþ  ........................................................................... 85

 

30.  Zmiana maksymalnej wielkoĈci dzienników zdarzeþ  .............................................. 85

 

31.  Archiwizacja i czyszczenie dzienników zdarzeþ  ....................................................... 87

 

32.  Wyäñczenie udziaäów domyĈlnych ............................................................................... 89

 

33.  Zaszyfrowanie folderu Temp  ........................................................................................ 91

 

34.  Tworzenie kopii zapasowej klucza EFS ....................................................................... 92

 

35.  Czyszczenie pliku stronicowania podcza zamykania systemu  ............................... 98

 

36.  Wyszukiwanie haseä, których waĔnoĈè nigdy nie wygasa ..................................... 100

Rozdzia

â 3. Ochrona prywatnoğci i anonimowoğý  ..................................................................103

 

37.  Ochrona przed analizñ ruchu  ...................................................................................... 103

 

38.  Tunelowanie SSH za pomocñ programu Tor ............................................................ 107

 

39.  Bezproblemowe szyfrowanie plików ......................................................................... 108

 

40.  Ochrona przed wyäudzaniem danych ........................................................................ 112

 

41.  Mniej haseä na stronach WWW  ................................................................................... 116

 

42.  Szyfrowanie poczty w programie Thunderbird ....................................................... 118

 

43.  Szyfrowanie poczty w systemie Mac OS X  ............................................................... 123

Rozdzia

â 4. Zapory sieciowe ......................................................................................................127

 

44.  Zapora sieciowa Netfilter ............................................................................................. 127

 

45.  Zapora sieciowa PacketFilter systemu OpenBSD  .................................................... 131

 

46.  Ochrona komputera za pomocñ Zapory systemu Windows  ................................. 138

 

47.  Zamykanie otwartych portów i blokowanie protokoäów ....................................... 146

 

48.  Zastöpujemy Zaporö systemu Windows  ................................................................... 148

 

49.  Tworzenie bramy uwierzytelniajñcej  ......................................................................... 155

 

50.  Sieè z ograniczeniem na wyjĈciu ................................................................................. 158

 

51.  Testowanie zapory sieciowej  ....................................................................................... 159

 

52.  Filtrowanie adresów MAC za pomocñ zapory sieciowej Netfilter  ....................... 162

 

53.  Blokowanie Tora  ............................................................................................................ 163

Rozdzia

â 5. Szyfrowanie i zabezpieczanie usâug ......................................................................167

 

54.  Szyfrowanie usäug IMAP i POP za pomocñ SSL ...................................................... 167

 

55.  Konfiguracja serwera SMTP Sendmail wykorzystujñcego szyfrowanie TLS  ...... 170

 

56.  Konfiguracja serwera SMTP Qmail wykorzystujñcego szyfrowanie TLS ............ 172

 

57.  Instalacja serwera Apache z rozszerzeniem SSL i z trybem suEXEC  ................... 173

 

58.  Zabezpieczenie serwera BIND  .................................................................................... 178

background image

     

  

     

Spis tre

ğci   _  

5

 

59.  Konfiguracja prostego i bezpiecznego serwera DNS ............................................... 181

 

60.  Zabezpieczenie bazy danych MySQL  ........................................................................ 184

 

61.  Bezpieczne udostöpnianie plików w systemie Unix ................................................ 187

Rozdzia

â 6. Bezpieczeĕstwo sieci ..............................................................................................191

 

62.  Wykrywanie faäszowania odpowiedzi ARP  ............................................................. 191

 

63.  Tworzenie statycznych tablic ARP  ............................................................................. 194

 

64.  Ochrona SSH przed atakami typu brute-force  ......................................................... 196

 

65.  Wprowadzanie w bäñd programów identyfikujñcych systemy operacyjne ......... 198

 

66.  Inwentaryzacja sieci ....................................................................................................... 201

 

67.  Wyszukiwanie säabych punktów sieci  ....................................................................... 204

 

68.  Synchronizacja zegarów serwerów ............................................................................. 213

 

69.  Tworzenie wäasnego oĈrodka certyfikacyjnego ........................................................ 215

 

70.  Rozpowszechnienie certyfikatu CA wĈród klientów ............................................... 218

 

71.  Tworzenie i przywracanie kopii zapasowej oĈrodka certyfikacji

za pomocñ Usäug certyfikatów .................................................................................. 219

 

72.  Wykrywanie programów nasäuchujñcych w sieci Ethernet  ................................... 226

 

73.  Pomoc w Ĉledzeniu napastników ................................................................................ 232

 

74.  Wykrywanie wirusów w serwerach uniksowych  .................................................... 234

 

75.  ćledzenie luk w zabezpieczeniach  .............................................................................. 238

Rozdzia

â 7. Bezpieczeĕstwo sieci bezprzewodowych .............................................................241

 

76.  Zmiana routera w zawansowanñ platformö bezpieczeþstwa  ................................ 241

 

77.  Szczegóäowe uwierzytelnianie w sieci bezprzewodowej ........................................ 245

 

78.  Portal przechwytujñcy ................................................................................................... 248

Rozdzia

â 8. Rejestracja zdarzeĕ .................................................................................................255

 

79.  Centralny serwer rejestracji zdarzeþ (syslog)  ........................................................... 256

 

80.  Konfigurowanie rejestracji zdarzeþ  ............................................................................ 257

 

81.  Wäñczenie systemu Windows w infrastrukturö syslog  ........................................... 259

 

82.  Automatyczne streszczanie dzienników zdarzeþ  .................................................... 266

 

83.  Automatyczne monitorowanie dzienników zdarzeþ  .............................................. 268

 

84.  Zbieranie informacji o zdarzeniach ze zdalnych oĈrodków ................................... 271

 

85.  Rejestracja dziaäaþ uĔytkowników za pomocñ systemu rozliczeþ ........................ 276

 

86.  Centralne monitorowanie stanu bezpieczeþstwa serwerów  .................................. 278

Rozdzia

â 9. Monitorowanie i wyznaczanie trendów  .................................................................287

 

87.  Monitorowanie dostöpnoĈci usäug .............................................................................. 288

 

88.  KreĈlenie trendów .......................................................................................................... 295

 

89.  ntop — statystyki sieci w czasie rzeczywistym  ........................................................ 298

 

90.  Gromadzenie statystyk za pomocñ reguä zapory sieciowej .................................... 300

 

91.  Zdalne nasäuchiwanie ruchu sieciowego ................................................................... 301

background image

  

6  

_   Spis treğci

Rozdzia

â 10. Bezpieczne tunele .................................................................................................305

 

92.  Konfiguracja protokoäu IPsec w systemie Linux ...................................................... 305

 

93.  Konfiguracja protokoäu IPsec w systemie FreeBSD ................................................. 309

 

94.  Konfiguracja protokoäu IPsec w systemie OpenBSD ............................................... 313

 

95.  Szyfrowanie oportunistyczne za pomocñ Openswan  ............................................. 317

 

96.  Przekazywanie i szyfrowanie ruchu za pomocñ protokoäu SSH  .......................... 319

 

97.  Szybkie logowanie za pomocñ kluczy klienta SSH .................................................. 321

 

98.  Proxy Squid w poäñczeniu SSH ................................................................................... 323

 

99.  UĔycie SSH jako proxy SOCKS 4  ................................................................................ 325

 

100.  Szyfrowanie i tunelowanie ruchu za pomocñ SSL ................................................... 328

 

101.  Tunelowanie poäñczeþ wewnñtrz HTTP  ................................................................... 330

 

102.  Tworzenie tunelu za pomocñ VTun i SSH  ................................................................ 332

 

103.  Generator plików vtund.conf  ...................................................................................... 337

 

104.  Tworzenie sieci VPN äñczñcych róĔne platformy systemowe ................................ 341

 

105.  Tunelowanie PPP ........................................................................................................... 347

Rozdzia

â 11. Wykrywanie wâamaĕ do sieci ...............................................................................349

 

106.  Wykrywanie wäamaþ za pomocñ programu Snort .................................................. 350

 

107.  ćledzenie alarmów  ........................................................................................................ 354

 

108.  Monitorowanie w czasie rzeczywistym ..................................................................... 357

 

109.  Zarzñdzanie sieciñ sensorów  ....................................................................................... 363

 

110.  Pisanie wäasnych reguä programu Snort  ................................................................... 370

 

111.  Zapobieganie wäamaniom za pomocñ programu Snort_inline  ............................. 376

 

112.  Sterowanie zaporñ sieciowñ za pomocñ programu SnortSam ............................... 379

 

113.  Wykrywanie nietypowego zachowania ..................................................................... 383

 

114.  Automatyczne uaktualnianie reguä programu Snort  .............................................. 384

 

115.  Budowa sieci niewidzialnych sensorów  .................................................................... 386

 

116.  UĔycie programu Snort w wysoko wydajnych Ĉrodowiskach sieciowych .......... 387

 

117.  Wykrywanie i zapobieganie atakom na aplikacje WWW  ...................................... 391

 

118.  Wykrywanie wirusów w ruchu sieciowym  .............................................................. 395

 

119.  Symulacja sieci niezabezpieczonych komputerów  .................................................. 399

 

120.  Rejestracja aktywnoĈci komputera-puäapki  .............................................................. 405

Rozdzia

â 12. Powrót do dziaâania i reakcja ...............................................................................411

 

121.  Tworzenie obrazu systemu plików  ............................................................................ 411

 

122.  Weryfikacja integralnoĈci plików  ............................................................................... 413

 

123.  Wykrywanie zmodyfikowanych plików za pomocñ pakietów RPM  ................... 418

 

124.  Poszukiwanie zainstalowanych zestawów rootkit  .................................................. 420

 

125.  Poszukiwanie wäaĈciciela sieci  .................................................................................... 422

Skorowidz   .................................................................................................................................. 425

background image

Zabezpieczenie punktów montowania

SPOSÓB

1.

Bezpiecze

ĕstwo systemu Unix _

17

R O Z D Z I A

á   P I E R W S Z Y

Bezpiecze

ĕstwo

systemu Unix

Sposoby 1. – 22.

Budowa sieci polega na äñczeniu komputerów, co oznacza, Ĕe sieè komputerowa nie jest
bardziej bezpieczna niĔ komputery, z których siö skäada. Jeden niezabezpieczony kom-
puter stanowi zagroĔenie dla caäej sieci, gdyĔ gdy tylko dostanie siö w niepowoäane röce,
moĔe zostaè wykorzystany jako narzödzie rekonesansu lub platforma prowadzenia ata-
ku. Gdy w którymĈ z serwerów dziaäajñ äatwe do zawäadniöcia usäugi, zapory sieciowe
(ang. firewall), systemy wykrywania wäamaþ i inne Ĉrodki bezpieczeþstwa stajñ siö bez-
radne. Przed zabezpieczeniem samej sieci, naleĔy najpierw w dostatecznym stopniu za-
bezpieczyè komputery tej sieci.

W  rozdziale  przedstawiono  wiele  sposobów  zmniejszenia  ryzyka  zwiñzanego  z  dziaäa-
niem usäug systemu uniksowego. Mimo  Ĕe  kaĔde  zaprezentowanie  tu  rozwiñzanie  sta-
nowi zamkniötñ caäoĈè, warto zapoznaè siö z resztñ rozdziaäu. Stosujñc Ĉrodki obronne
tylko jednego rodzaju, ryzykuje siö, Ĕe wszelkie starania pójdñ na marne, gdy tylko wäa-
mywacz odkryje jak je obejĈè. Skarbiec na Wawelu nie jest chroniony jedynie drzwiami
z käódkñ, podobnie Ĕadne pojedyncze rozwiñzanie nie moĔe skutecznie zabezpieczyè Ĕad-
nego serwera, a liczba potrzebnych Ĉrodków bezpieczeþstwa roĈnie wraz z wartoĈciñ chro-
nionych zasobów.

Zapewnienie bezpieczeþstwa jest staäym procesem, który musi trwaè i musi byè doglñdany.
Nie ma, poza odäñczeniem komputera od sieci, Ĕadnego innego pojedynczego sposobu jego
zabezpieczenia. Pamiötajñc o tym, moĔna przystñpiè do budowy bezpiecznego serwera za-
spokajajñcego okreĈlone potrzeby.

S P O S Ó B

1.

Zabezpieczenie punktów montowania

Za pomoc

ą opcji montowania moĪna ograniczyü dziaáania wáamywacza.

Z Uniksa korzysta siö przewaĔnie przez jego system plików. Dlatego warto ograniczyè to,
co z plikami moĔe zrobiè wäamywacz po przedostaniu siö do systemu. Jednym ze sposobów
na to jest uĔycie ograniczajñcych opcji montowania.

background image

SPOSÓB

1.

Zabezpieczenie punktów montowania

18

Bezpieczeĕstwo systemu Unix

Opcja montowania decyduje o sposobie dostöpu do systemu plików. Przekazywana jest do
jñdra systemu operacyjnego w czasie uruchamiania systemu plików. Opcje montowania
moĔna wykorzystaè, by uniemoĔliwiè traktowanie plików jako urzñdzeþ, wykonywanie
programów binarnych oraz wykorzystanie bitu SUID. W tym celu uĔywa siö parametrów
odpowiednio nodev, noexec i nosuid. System plików moĔna równieĔ za pomocñ opcji
ro

 zamontowaè w trybie „tylko do odczytu”.

Parametry te podaje siö wierszu poleceþ, wydajñc polecenie mount z opcjñ -o. Przezna-
czywszy na przykäad dla katalogu /tmp oddzielnñ partycjö, bödñcñ trzeciñ partycjñ pierw-
szego dysku IDE systemu, moĔna zamontowaè jñ za pomocñ parametrów nodev, noexec
i nosuid za pomocñ poniĔszego polecenia:

mount -o nodev,noexec,nosuid /dev/hda3 /tmp

Poleceniu temu odpowiada zapis w pliku /etc/fstab:

/dev/hda3    /tmp    ext3    defaults,nodev,noexec,nosuid    1 2

Po starannym przeanalizowaniu swoich potrzeb i podzieleniu dysku na kilka systemów
plików  moĔna  za  pomocñ  opcji  montowania  zwiökszyè  trudnoĈci,  jakie  napotka  wäamy-
wacz, próbujñc gäöbiej wniknñè do systemu. Najlepiej to zrobiè, dzielñc drzewo katalogów
na obszary, w których do poprawnego dziaäania systemu musi istnieè moĔliwoĈè zapi-
sywania oraz na takie, w których taka moĔliwoĈè nie jest konieczna. Opcjö „tylko do od-
czytu” moĔna zastosowaè we wszystkich czöĈciach systemu plików, których zawartoĈè nie
zmienia siö czösto. Dobrym kandydatem do uĔycia tej opcji moĔe byè na przykäad katalog
/usr, ale zaleĔy to od czöstotliwoĈci uaktualniania oprogramowania systemowego.

OczywiĈcie wiele katalogów (na przykäad /home) musi byè montowanych w trybie „do
odczytu i do zapisu”. Mimo to jest bardzo maäo prawdopodobne, by uĔytkownicy trady-
cyjnego systemu wielodostöpnego musieli uruchamiaè w swoich katalogach macierzystych
programy binarne z bitem SUID, lub by musieli w nich tworzyè pliki urzñdzeþ. Dlatego
katalogi macierzyste uĔytkowników mo

Ĕna przechowywaè w oddzielnym systemie plików

zamontowanym z opcjami nodev i nosuid. Dodatkowo, jeĔeli dojdzie siö do wniosku, Ĕe
uĔytkownicy nie muszñ uruchamiaè programów przechowywanych w swych katalogach
macierzystych, moĔna teĔ uĔyè opcji montowania noexec. Podobna sytuacja ma miejsce
w przypadku katalogów /tmp i /var, w których prawdopodobieþstwo, by jakiĈ proces miaä
uzasadnione powody wykonywania programów binarnych z bitem SUID, lub bez niego,
albo korzystaä z plików urzñdzeþ jest bardzo maäe. Tego rodzaju zabezpieczenie zapo-
biega pozostawieniu przez wäamywacza trojana na przykäad w katalogu /tmp lub w katalo-
gu  któregoĈ  uĔytkownika.  W  takim  przypadku  wäamywaczowi  uda  siö  zainstalowaè  pro-
gram, ale nie bödzie mógä go juĔ uruchomiè, bez wzglödu na bity chmod programu.

NaleĔy zauwaĔyè, Ĕe usäugi dziaäajñce w Ĉrodowisku chroot() [Sposób 10.]
mogñ nie dziaäaè, gdy opcja nodev zostanie uĔyta do systemu plików dziaäajñcym
w tym Ĉrodowisku. Wynika to z tego, Ĕe urzñdzenia takie jak /dev/log czy
/dev/null muszñ byè dostöpne w Ĉrodowisku chroot().

background image

Wynajdywanie programów z ustawionymi bitami SUID i SGID

SPOSÓB

2.

Bezpiecze

ĕstwo systemu Unix _

19

Istnieje kilka sposobów, za pomocñ których wäamywacz moĔe obejĈè ograniczenia punk-
tów montowania. W Linuksie dziaäanie opcji noexec moĔna ominñè, uruchamiajñc pro-
gramy binarne znajdujñce siö w takim systemie plików za pomocñ biblioteki /lib/ld-linux.so.
Na pierwszy rzut oka wydaje siö, Ĕe moĔna temu zaradziè uniemoĔliwiajñc uruchomienie
biblioteki ld-linux.so, ale to uniemoĔliwiäoby równieĔ wykonywanie siö wszystkich pro-
gramów korzystajñcych z bibliotek doäñczanych dynamicznie.

Zatem jeĔeli wszystkie uĔywane programy nie sñ poäñczone z bibliotekami statycznie (a naj-
prawdopodobniej nie sñ), uĔycie opcji noexec w Linuksie ma niewielkie znaczenie. Poza
tym, wäamywacz, który zdobyä uprawnienia uĔytkownika root nie bödzie zbyt dotkliwie
ograniczony  zamontowaniem  systemu  plików  ze  specjalnymi  opcjami,  gdyĔ  moĔe  on
rozmontowaè go i zamontowaè ponownie za pomocñ opcji -o remount. Jednak stosujñc
opcje montowania, mo

Ĕna z äatwoĈciñ ograniczyè moĔliwoĈè dziaäania wäamywacza, zanim

ten posiñdzie uprawnienia uĔytkownika root.

S P O S Ó B

2.

Wynajdywanie programów z ustawionymi bitami SUID i SGID

Szybki sposób wykrycia programów, które mog

ą umoĪliwiü uzyskanie uprawnieĔ uĪytkownika root

oraz programów otwieraj

ących tylne wejĞcia.

Jedna z moĔliwoĈci zwiökszenia przez uĔytkownika swoich uprawnieþ w systemie polega
na wykorzystaniu säaboĈci programu opatrzonego bitem SUID lub SGID. Bity SUID i SGID
säuĔñ do uzyskania przez program specjalnych uprawnieþ, wyĔszych od posiadanych przez
uruchamiajñcego go uĔytkownika. Jednym z takich programów jest passwd. Pozwolenie
uĔytkownikowi na zmianö hasäa, przy jednoczesnym uniemoĔliwieniu mu modyfikowania
systemowego pliku haseä oznacza, Ĕe program passwd musi dziaäaè z uprawnieniami uĔyt-
kownika root. Dlatego program ten ma ustawiony bit SUID, który powoduje, Ĕe program
wykonywany  jest  z  uprawnieniami  jego  wäaĈciciela.  Podobnie,  gdy  ustawiony  jest  bit
SGID, program wykonuje siö z uprawnieniami grupy bödñcej wäaĈcicielem pliku.

Wynik dziaäania polecenia ls -l na programie binarnym majñcym ustawiony bit SUID
wyglñda nastöpujñco:

-r-s--x--x    1 root     root        16336 Feb 13  2003 /usr/bin/passwd

Zamiast bitu wykonania (x), w grupie bitów wäaĈciciela pliku programu wystöpuje bit s,
który oznacza, Ĕe program posiada ustawiony bit SUID.

Niestety, Ēle napisany program binarny posiadajñcy ustawiony bit SUID lub SGID moĔe
posäuĔyè do szybkiego i stosunkowo äatwego podniesienia uprawnieþ uĔytkownika. Poza
tym wäamywacz, który juĔ zdobyä uprawnienia uĔytkownika root, moĔe ukryè w systemie
programy binarne SUID, by otworzyè sobie tylne wejĈcie do systemu. Z tych powodów
naleĔy odnaleĒè w systemie wszystkie programy binarne SUID i SGID. Jest to prosta czyn-
noĈè, którñ moĔna wykonaè za pomocñ polecenia:

find / \( -perm -4000 -o -perm -2000 \) -type f -exec ls -la {} \;

WaĔnñ rzeczñ, którñ naleĔy stwierdziè, jest to czy program SUID jest skryptem powäoki,
czy plikiem binarnym, gdyĔ niezwykle äatwo jest zmieniè potencjalnie nieszkodliwy skrypt
w tylne wejĈcie do systemu. Na szczöĈcie wiökszoĈè systemów operacyjnych ignoruje bity

background image

SPOSÓB

3.

Wynajdywanie udost

Ċpnionych katalogów

20

Bezpieczeĕstwo systemu Unix

SUID i SGID skryptów powäoki. Chcñc odnaleĒè wszystkie skrypty z ustawionymi bitami
SUID lub SGID, naleĔy zmieniè argument opcji -exec ostatniego polecenia i dodaè do
niego potok:

find / \( -perm -4000 -o -perm -2000 \) \

  -type f -exec file {} \; | grep -v ELF

W tym przypadku, po odkryciu pliku z ustawionym bitem SUID lub SGID uruchomiony
zostanie program file, który sprawdzi, jakiego rodzaju jest badany plik. JeĔeli jest to plik
wykonywalny, program grep odfiltruje go. W przeciwnym razie informacje o pliku pojawiñ
siö na ekranie.

W wiökszoĈci systemów operacyjnych pliki wykonywalne zapisane sñ w formacie ELF.
W  przypadku  systemów  operacyjnych  nie  korzystajñcych  z  tego  formatu  (starsze  wersje
Linuksa uĔywaäy formatu a.out, a AIX uĔywa XCOFF), naleĔy w poleceniu grep zastñpiè
typ ELF typem formatu binarnego uĔywanego w danym systemie operacyjnym. W przy-
padku wñtpliwoĈci, jaki format jest uĔywany w danym systemie, program file naleĔy wyko-
naè na dowolnym programie binarnym, w wyniku czego na ekranie pojawi siö poszuki-
wany äaþcuch znaków.

Oto przykäad uĔycia programu file na pliku binarnym systemu Mac OS X:

file /bin/sh

/bin/sh: Mach-O executable ppc

MoĔna jeszcze pójĈè dalej i za pomocñ programu cron uruchamiaè polecenie wyszukujñ-
ce programy SUID codziennie, a wynik jego dziaäania zapisywaè do pliku. Na przykäad
poniĔszy zapis znajdujñcy siö w pliku crontab säuĔy do wyszukiwania plików z ustawio-
nym bitem SUID lub SGID i do porównania aktualnych wyników poszukiwaþ z wynikami
z dnia poprzedniego, a nastöpnie wysyäania wyników poprzez email (wszystkie polecenia
naleĔy wpisaè w jednym wierszu):

0 4 * * * find / \( -perm -4000 -o -perm -2000 \) -type f \
  > /var/log/sidlog.new &&
  diff /var/log/sidlog.new /var/log/sidlog &&
  mv /var/log/sidlog.new /var/log/sidlog

Aktualna lista plików SUID i SGID zostanie zapisana do pliku /var/log/sidlog.

S P O S Ó B

3.

Wynajdywanie udost

ċpnionych katalogów

Szybki sposób wykrycia niezabezpieczonych katalogów.

Katalogi, w których mogñ zapisywaè wszyscy (ang. world-writable) lub czäonkowie grup,
stanowiñ z punktu widzenia bezpieczeþstwa  powaĔny problem. JeĔeli maski  umask  sñ
niepoprawne, uĔytkownicy mogñ nieĈwiadomie tworzyè niebezpieczne pliki, nie zdajñc
sobie przy tym sprawy z wynikajñcych z tego konsekwencji. Majñc to na uwadze, naleĔy
odszukaè w systemie wszystkie katalogi o rozluĒnionych uprawnieniach. Podobnie jak
w poprzednim przypadku [Sposób 2.], moĔna to zrobiè za pomocñ programu find:

find / -type d \( -perm -g+w -o -perm -o+w \) -exec ls -lad {} \;

background image

Tworzenie elastycznych hierarchii uprawnie

Ĕ za pomocą list ACL standardu POSIX

SPOSÓB

4.

Bezpiecze

ĕstwo systemu Unix _

21

Wszystkie katalogi, których nazwy pojawiñ siö w wyniku dziaäania tego polecenia, powinny
mieè ustawiony w uprawnieniach „lepki” bit reprezentowany przez literö t. Ustawienie
„lepkiego” bitu w uprawnieniach do katalogu, w którym zapisywaè mogñ wszyscy po-
woduje, Ĕe mimo Ĕe wszyscy mogñ tworzyè w nim pliki, to jednak nikt nie moĔe usuwaè
ani modyfikowaè plików innych uĔytkowników.

Dostrzegajñc w wyniku  dziaäania powyĔszego  polecenia  katalog  nie  zawierajñcy  „lep-
kiego” bitu naleĔy siö zastanowiè, czy rzeczywiĈcie uprawnienia do zapisu w tym kata-
logu muszñ mieè wszyscy, czy moĔe lepiej jest zastosowaè w nim uprawnienia grupowe
lub listy ACL [Sposób 4.]. JeĔeli uprawnienia do zapisywania w katalogu muszñ mieè
rzeczywiĈcie wszyscy, naleĔy za pomocñ polecenia chmod +t ustawiè w nim „lepki” bit.

Aby uzyskaè listö katalogów, które nie majñ ustawionego „lepkiego” bitu, naleĔy wydaè
polecenie:

find / -type d \( -perm -g+w -o -perm -o+w \) \

  -not -perm -a+t -exec ls -lad {} \;

W przypadku systemów, które dla kaĔdego uĔytkownika tworzñ oddzielnñ grupö (na
przykäad przy tworzeniu uĔytkownika andrew tworzona jest równoczeĈnie jego podstawo-
wa grupa o tej samej nazwie), naleĔy zmodyfikowaè poprzednie polecenie, by nie poszu-
kiwaäo katalogów zapisywalnych przez grupy. W przeciwnym razie na ekranie pojawi siö
wiele nieistotnych informacji. W tym celu z polecenia naleĔy usunñè czäon -perm -g+w.

S P O S Ó B

4.

Tworzenie elastycznych hierarchii uprawnie

ĕ

za pomoc

Ć list ACL standardu POSIX

Tam, gdzie tradycyjne uniksowe uprawnienia nie wystarcz

ą, naleĪy wykorzystaü listy ACL.

W wiökszoĈci przypadków tradycyjny system uprawnieþ systemu Unix sprawdza siö zna-
komicie.  Jednak  w  Ĉrodowiskach  wielu  wspóäpracujñcych  ze  sobñ  uĔytkowników  wyma-
gajñcych dostöpu do róĔnych plików, system ten staje siö nieporöczny. Listy kontroli dostö-
pu ACL (ang. Access Control List) sñ czymĈ stosunkowo nowym w systemach uniksowych,
ale  od  jakiegoĈ  czasu  sñ  wykorzystywane  w  ich  komercyjnych  odpowiednikach.  Listy
ACL  co  prawda  nie  zwiökszajñ  bezpieczeþstwa  systemu,  za  to  zmniejszajñ  zäoĔonoĈè
zarzñdzania  uprawnieniami.  List  ACL  sñ  nowym  sposobem  nadawania  uprawnieþ  do
plików i katalogów, nie wymagajñcym tworzenia niepotrzebnych grup.

Listy ACL przechowywane sñ w postaci rozszerzonych atrybutów w metadanych systemu
plików. Jak sama nazwa wskazuje, säuĔñ do przyznawania lub odmawiania dostöpu do
danego pliku na podstawie zdefiniowanych kryteriów. Listy ACL nie polegajñ jednak na
caäkowitej  rezygnacji  z  tradycyjnego  systemu  uprawnieþ.  Listy  ACL  moĔna  definiowaè
zarówno dla uĔytkowników, jak i grup, i wciñĔ zwiñzane sñ z dost

öpem do odczytu, do

zapisu i do wykonania. Dodatkowo listö kontroli dostöpu moĔna zdefiniowaè dla dowol-
nego uĔytkownika lub grupy, którym nie zostaäa przypisana Ĕadna inna lista ACL, co ma
podobne znaczenie jak bity „pozostali” w uprawnieniach do pliku.

background image

SPOSÓB

4.

Tworzenie elastycznych hierarchii uprawnie

Ĕ za pomocą list ACL standardu POSIX

22

Bezpieczeĕstwo systemu Unix

System list kontroli dostöpu  uĔywa teĔ tak zwanych masek ACL, filtrujñcych uprawnienia
wszystkich list ACL dotyczñcych okreĈlonych uĔytkowników lub grupy. Dziaäanie masek
ACL  jest  podobne  do  dziaäania  polecenia  umask,  choè  nie  do  koþca.  Gdy  na  przykäad
maska ACL przyjmuje wartoĈè r--, dowolna lista ACL odnoszñca siö do okreĈlonego uĔyt-
kownika lub grupy, która pozwala na wiöcej (na przykäad rw-), zostaje w rezultacie ograni-
czona do r--. Katalogi mogñ zawieraè domyĈlne listy ACL, które definiujñ poczñtkowe listy
ACL tworzonych w nich plików i podkatalogów.

Aktywacja list kontroli dost

ċpu

WiökszoĈè stosowanych obecnie systemów plików w Linuksie (Ext2/3, ReiserFS, JFS i XFS)
potrafi obsäugiwaè listy ACL. W przypadku korzystania z systemu Linux naleĔy spraw-
dziè, czy ustawiona zostaäa jedna z poniĔszych opcji konfiguracyjnych jñdra, odpowiednio
do uĔywanego systemu plików:

CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y

Aby  aktywowaè  listy  ACL  w  systemie  FreeBSD,  naleĔy  zamontowaè  dowolny  system
plików z opcjñ montowania acls:

mount -o acls -u /usr

mount

/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1e on /tmp (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates, acls)
/dev/ad0s1d on /var (ufs, local, soft-updates)

Opcja  -u  powoduje  aktualizacjö  montowania,  co  umoĔliwia  zmianö  opcji  montowania
dla aktualnie zamontowanego systemu plików. W celu cofniöcia operacji moĔna wyäñczyè
listy ACL, uĔywajñc opcji noacls. Aby automatycznie wäñczyè listy ACL wraz ze startem
systemu, naleĔy w nastöpujñcy sposób zmodyfikowaè wpis w pliku /etc/fstab:

/dev/ad0s1f             /usr            ufs     rw,acls         2       2

Zarz

Ćdzanie listami ACL

Listy ACL modyfikuje siö i usuwa za pomocñ programu setfacl. Aby zmodyfikowaè listö
ACL, naleĔy posäuĔyè siö opcjñ -m, po której naleĔy podaè listö ACL oraz nazwö lub nazwy
plików. Aby usunñè listö ACL, naleĔy posäuĔyè siö opcjñ -x, po której naleĔy podaè listö
lub listy ACL.

Istniejñ trzy ogólne postacie list ACL — listy uĔytkownika, grupy i pozostaäych. Przyjrzyjmy
siö im bliĔej:

# Lista ACL uĔytkownika
u:[uĪytkownik]:<tryb_dostĊpu>
# Lista ACL grupy

background image

Tworzenie elastycznych hierarchii uprawnie

Ĕ za pomocą list ACL standardu POSIX

SPOSÓB

4.

Bezpiecze

ĕstwo systemu Unix _

23

g:[grupa]:<tryb_dostĊpu>
# Lista ACL pozostaäych
o:<tryb_dostĊpu>

NaleĔy zauwaĔyè, Ĕe w listach ACL uĔytkownika i grupy nazwy uĔytkowników i grup,
których dotyczñ listy ACL, nie sñ wymagane. JeĔeli nazwy te zostanñ pominiöte, ozna-
cza to, Ĕe lista ACL zostanie zastosowana do bazowej listy ACL uzyskanej z bitów trybu
dostöpu do pliku. Dlatego, jeĔeli zostanie ona zmieniona, zmianie ulegnñ równieĔ bity
trybu dostöpu, i odwrotnie.

Dziaäanie list ACL najlepiej poznaè wäasnoröcznie na przykäadzie, tworzñc plik i mody-
fikujñc jego bazowñ listö ACL:

touch mojplik

ls -l mojplik

-rw-rw-r--    1 andrew   andrew          0 Oct 13 15:57 mojplik

setfacl -m u::---,g::---,o:--- mojplik

ls -l mojplik

----------    1 andrew   andrew          0 Oct 13 15:57 mojplik

Z przykäadu wynika równieĔ, Ĕe w jednym poleceniu moĔna podaè naraz kilka list ACL,
oddzielajñc je od siebie przecinkami.

Listy ACL moĔna definiowaè dla dowolnej liczby grup i uĔytkowników:

touch costam

setfacl -m u:jlope:rwx,g:wine:rwx ,o:--- costam

getfacl costam

# file: costam
# owner: andrew
# group: andrew
user::rw-
user:jlope:rwx
group::---
group:wine:rwx
mask::rwx
other::---

JeĔeli zmieni siö maskö ACL na r--, lista ACL uĔytkownika jlope i grupy wine zostanie
w efekcie ograniczona do r--:

setfacl -m m:r-- costam

getfacl costam

# file: costam
# owner: andrew
# group: andrew
user::rw-
user:jlope:rwx                  #effective:r--
group::---
group:wine:rwx                  #effective:r--
mask::r--
other::---

Jak powiedziano wczeĈniej, do plików tworzonych w katalogach stosowane sñ domyĈlne
listy ACL katalogów. DomyĈlne listy ACL tworzy siö, poprzedzajñc listö ACL znakami d::

mkdir mojkatalog

setfacl -m d:u:jlope:rwx mojkatalog

getfacl mojkatalog

# file: mojkatalog

background image

SPOSÓB

5.

Zabezpieczenie dzienników zdarze

Ĕ przed modyfikacją

24

Bezpieczeĕstwo systemu Unix

# owner: andrew
# group: andrew
user::rwx
group::---
other::---
default:user::rwx
default:user:jlope:rwx
default:group::---
default:mask::rwx
default:other::---

touch mojkatalog/nowyplik

getfacl mojkatalog/nowyplik

# file: mojkatalog/nowyplik
# owner: andrew
# group: andrew
user::rw-
user:jlope:rwx                  #effective:rw-
group::---
mask::rw-
other::---

Jak äatwo zauwaĔyè w powyĔszych przykäadach, zawartoĈè list ACL moĔna uzyskaè za
pomocñ programu getfacl. Jest to prosty program posiadajñcy jedynie kilka opcji, z których
najczöĈciej uĔywanñ jest opcja -R, umoĔliwiajñca rekursywne przeglñdanie list ACL, dzia-
äajñca bardzo podobnie do polecenia ls -R.

S P O S Ó B

5.

Zabezpieczenie dzienników zdarze

ĕ przed modyfikacjĆ

Za pomoc

ą atrybutów plików moĪna uniemoĪliwiü intruzom zatarcie Ğladów wáamania.

Jest praktycznie pewne, Ĕe wäamanie do systemu zostanie odnotowane w wielu róĔnych
systemowych dziennikach zdarzeþ. Jest to bardzo wartoĈciowy Ĉlad, który naleĔy dobrze
chroniè. Bez wiarygodnych dzienników zdarzeþ, odkrycie, w jaki sposób wäamywacz
przedostaä siö do systemu lub skñd zostaä przeprowadzony atak, moĔe byè bardzo trudne.
Tego rodzaju informacje sñ absolutnie niezbödne do przeprowadzenia wäaĈciwej analizy
caäego incydentu, a nastöpnie do podjöcia stosownej reakcji na incydent, na przykäad przez
skontaktowanie siö z zamieszanymi w to stronami [Sposób 125.]. JeĔeli wäamanie powie-
dzie siö i wäamywacz uzyska uprawnienia uĔytkownika root, czy jest coĈ, co moĔe po-
wstrzymaè go przed usuniöciem Ĉladów wäamania?

W takim przypadku z pomocñ przychodzñ atrybuty plików. Zarówno systemy linuksowe,
jak i systemy BSD przydzielajñ plikom i katalogom dodatkowe atrybuty, wykraczajñce
poza standardowy uniksowy system zabezpieczeþ, w którym atrybuty plików dotyczñ
w jednakowym stopniu wszystkich uĔytkowników systemu. Dodatkowe atrybuty decy-
dujñ o dostöpie do plików w znacznie wiökszym stopniu niĔ uprawnienia do plików czy
listy ACL [Sposób 4.]. W Linuksie atrybuty plików moĔna przeglñdaè lub ustawiaè za
pomocñ programów lsattr chattr. Aby przejrzeè atrybuty w systemach BSD, naleĔy wydaè
polecenie ls -lo, a Ĕeby je ustawiè — polecenie chflags.

Jednym z bardziej przydatnych atrybutów jest atrybut „tylko do dopisywania” (ang.
append-only). Gdy atrybut ten jest ustawiony, pliku nie moĔna usunñè, a zapis do pliku jest
moĔliwy tylko na jego koþcu.

background image

Czytaj dalej...

Zabezpieczenie dzienników zdarze

Ĕ przed modyfikacją

SPOSÓB

5.

Bezpiecze

ĕstwo systemu Unix _

25

Aby w systemie Linux ustawiè atrybut „tylko do dopisywania”, naleĔy wydaè nastöpujñce
polecenie:

chattr +a nazwa_pliku

W systemie BSD naleĔy wydaè polecenie:

chflags sappnd nazwa_pliku

ēeby przekonaè siö, jak dziaäa atrybut +a, naleĔy utworzyè plik i ustawiè w nim ten atrybut:

touch /var/log/logfile

echo "atrybut tylko do dopisywania nie jest ustawiony" > /var/log/logfile

chattr +a /var/log/logfile

echo "atrybut tylko do dopisywania jest ustawiony" > /var/log/logfile

bash: /var/log/logfile: Operation not permitted

Druga próba zapisu zakoþczyäa siö niepowodzeniem, gdyĔ nie moĔna nadpisaè pliku.
Jednak dopisywanie na koþcu pliku jest moĔliwe:

echo "dopisywanie do pliku" >> /var/log/logfile

cat /var/log/logfile

atrybut tylko do dopisywania nie jest ustawiony
dopisywanie do pliku

OczywiĈcie wäamywacz, który zdobyä uprawnienia uĔytkownika root, moĔe odkryè, Ĕe
w systemie wykorzystywane sñ atrybuty plików i za pomocñ polecenia chattr -a usu-
nñè zastosowany do plików dzienników zdarzeþ atrybut „tylko do dopisywania”. Aby
temu zapobiec, naleĔy wyäñczyè moĔliwoĈè usuwania atrybutu „tylko do dopisywania”.
W tym celu, w Linuksie naleĔy skorzystaè z jego mechanizmu moĔliwoĈci, a w systemach
BSD skorzystaè z funkcji poziomu bezpieczeþstwa (ang. securelevel).

Model moĔliwoĈci systemu Linux dzieli wszystkie przywileje dane uĔytkownikowi root i
umoĔliwia  selektywne  wyäñczanie  niektórych  z  nich.  Aby  uniemoĔliwiè  uĔytkownikowi
usuniöcie  z  pliku  atrybutu  „tylko  do  dopisywania”,  naleĔy  pozbyè  siö  moĔliwoĈci
CAP_LINUX_IMMUTABLE

. Zmian moĔliwoĈci systemu moĔna dokonaè za pomocñ pro-

stego programu lcap (http://snort-wireless.org/other/lcap-0.0.6.tar.bz2).

PoniĔsze polecenie rozpakuje i skompiluje program:

tar xvfj lcap-0.0.6.tar.bz2 && cd lcap-0.0.6 && make

Aby uniemoĔliwiè modyfikacjö atrybutu „tylko do dopisywania”, naleĔy wykonaè nastö-
pujñce polecenia:

./lcap CAP_LINUX_IMMUTABLE

./lcap CAP_SYS_RAWIO

Pierwsze polecenie wyäñcza moĔliwoĈè zmiany atrybutu „tylko do dopisywania”, nato-
miast drugie wyäñcza moĔliwoĈè wykonywania pierwotnych operacji wejĈcia-wyjĈcia. Jest
to konieczne po to, Ĕeby nie byäo moĔliwoĈci zmodyfikowania chronionego pliku poprzez
dostöp do urzñdzenia blokowego, na którym siö on znajduje. Zabezpiecza to równieĔ przed
dostöpem do urzñdzeþ /dev/mem i /dev/kmem, który mógäby stwarzaè wäamywaczowi moĔ-
liwoĈè ponownego wäñczenia moĔliwoĈci CAP_LINUX_IMMUTABLE.