Rozdział 1. ¨ Zabezpieczanie portów i usług 27
W pierwszym tomie niniejszej książki, Hack wars. Na tropie hakerów, opisywaliśmy już porty i usługi. Przedstawiliśmy także ich znaczenie dla podatności systemów na ataki z zewnątrz. Warto jednak krótko przypomnieć — porty to swoiste „bramy”, pośredniczące w przesyłaniu informacji do i z komputera. Hakerzy korzystają z narzędzi zwanych „skanerami portów” (również opisanych w pierwszym tomie), umożliwiających ich przeszukanie i wyszukanie tych, które są otwarte (na których prowadzony jest „nasłuch”). Te właśnie mogą zostać wykorzystane w próbach nieuprawnionej penetracji systemu.
Z około 65 tysięcy portów komputera, pierwszych 1024 określa się jako well-known ports, czyli porty zarezerwowane (dosł. porty znane). Pozostałe określić można jako porty ukryte (ang. concealed ports). W rozdziale 1. zajmiemy się technikami pozwalającymi zabezpieczyć porty oraz związane z nimi usługi. Rozpoczniemy od metod zabezpieczenia, zarówno portów zarezerwowanych, jak i pozostałych, które są w systemie wykorzystywane. Następnie przejdziemy do przeciwdziałania wykrywaniu danych o systemie i skanowaniu portów. Wykrywanie danych o systemie docelowym, jak opisujemy to w pierwszym tomie Hack wars, jest początkowym etapem działań hakera, poprzedzającym utworzenie skutecznego planu ataku. Skanowanie portów jest najczęściej drugą fazą gromadzenia potrzebnych informacji.
W niniejszej książce przedstawiać będziemy kolejne etapy prowadzące do spójnego zabezpieczenia systemu. Trzymając się podejścia zespołu Tiger Team, opiszemy kolejne procedury (kroki), prowadzące do skutecznej ochrony przed przełamaniem wprowadzonych barier obronnych. Uporządkowanie treści odpowiadać będzie typowej kolejności ich konfigurowania.
Celem niniejszego podrozdziału jest wprowadzenie Czytelnika w techniki służące do zabezpieczania najwrażliwszych portów z listy zarezerwowanych (well-known ports). Są one wykorzystywane przez różnorodne usługi korzystające z transportu TCP lub UDP. Gdy dwa systemy nawiązują komunikację, porty te stają się zakończeniami połączeń logicznych, stanowiących podstawę „konwersacji” komputerów. Połączenie TCP inicjowane jest w drodze trójstopniowej wymiany potwierdzeń (ang. three-way handshake), której celem jest zsynchronizowanie numerów sekwencyjnych i potwierdzeń obu stron (komunikację TCP określa się często jako połączeniową lub gwarantowaną). Komunikacja UDP realizowana jest przez bezpołączeniową usługę przesyłania datagramów, gdzie dostarczanie danych nie jest gwarantowane, ale wysoce wydajne.
Skoncentrujemy się w przedstawionym opisie na portach określonych w pierwszym tomie jako najbardziej wrażliwe na ataki. Ich lista wygląda następująco: echo (7), systat (11), netstat (15), chargen (19), FTP (21), telnet (23), SMTP (25), domain (53), bootp (67), TFTP (69), finger (79), http (80), pop2 (109), pop3 (110), portmap (111), loc-serv (135), nbname (137), nbdatagram (138), nbsession (139), SNMP (161), exec (512), login (513), shell (514), syslog (514), talk (517), ntalk (518), route (520) i uucp (540).
Pamiętać należy, że porty zarezerwowane to pierwsze 1024 porty, które wykorzystywane są przez usługi systemu. Połączenia wychodzące będą miały zazwyczaj numery wyższe od 1023. Oznacza to, że wszystkie pakiety przychodzące, kierowane do portów wyższych niż 1023, są odpowiedziami na zainicjowane w systemie żądania. Połączenia takie korzystają z portów zarezerwowanych, na których prowadzony jest nasłuch w oczekiwaniu żądań określonych usług. Nasłuchem zarządzają procesy systemowe albo demony usług. Gdy jednak oczekują one na uprawnione żądania połączeń, pozostają jednocześnie otwarte na nadużycia. Pamiętając o tej podstawowej zależności, przyjrzyjmy się teraz metodom „blokowania” portów zarezerwowanych i ochrony związanych z nimi usług.
Zanim jednak przejdziemy do konkretnych portów, czeka nas jeszcze krótki przegląd rejestru systemu Windows i demona Internet Services Database (inetd, baza danych usług internetowych) systemu UNIX. Dokładniej rzecz ujmując, inetd to proces zarządzania demonami, zapewniający obsługę wszystkich usług sieciowych pracujących w systemie UNIX. Opierając się na pliku konfiguracyjnym /etc/inetd.conf, zarządza on aktywacją usług (ftp, telnet, login i innych). W niniejszej książce odwołujemy się do pliku inetd.conf zgodnie z jego implementacją w systemie Linux, gdzie znajduje się w katalogu /etc/. Należy jednak pamiętać, że w wielu odmianach systemu UNIX jego lokalizacja może być inna. Przykładowo: w systemach AIX i Digital znajdziemy plik inetd.conf w katalogu /usr/sbin, w systemach HP-UX 9 i 10 — w katalogach, odpowiednio, /etc i /usr/lbin, w systemie IRIX — w /usr/etc, w Solarisie — /usr/sbin, a w systemie SunOS — /usr/etc.
W systemach Windows, do pewnego stopnia przyrównać można do uniksowego demona inetd rejestr systemu stanowiący hierarchiczną bazę danych, w której przechowuje się wszelkie ustawienia konfiguracyjne. Zastąpił on pełniące podobną rolę w Windows 3.x pliki .ini. Wszelkie dane systemowe z plików system.ini, win.ini i control.ini znaleźć można w ujednoliconej bazie rejestru. Umieszczają w nim informacje inicjalizacyjne i konfiguracyjne również wszystkie programy.
Przed wprowadzeniem jakichkolwiek modyfikacji w pliku inetd.conf lub rejestrze Windows, zawsze należy pamiętać o utworzeniu ich kopii zapasowych.
Typowe schematy komunikacji nie wymagają aktywności usługi Echo. Jej jedyną rolą jest przesłanie odpowiedzi na komunikat przesłany jako żądanie połączenia TCP lub UDP. W takich wypadkach zaleca się więc całkowite wyłączenie usługi w celu uniknięcia potencjalnych ataków typu Denial of Service (DoS, „uniemożliwienie działania”). Zanim jednak to zrobimy, powinniśmy sprawdzić czy żadne oprogramowanie firmowe — jak monitorujące czy diagnostyczne — nie wymaga jej funkcjonowania.
t Aby wyłączyć usługę Echo w systemie UNIX, wprowadzamy modyfikację w pliku /etc/inetd.conf, polegającą na oznaczeniu wpisu usługi jako komentarza
t Aby dezaktywować usługę Echo w systemie Windows, wymagane jest wprowadzenie zmiany w rejestrze.
Rysunek1.1.
Wyłączanie usług w systemie UNIX
Uruchamiamy w tym celu z okna Start | Uruchom program regedit.exe. Następnie wyszukujemy wpisy usługi Echo dla protokołów TCP i UDP, aby zmienić ich wartości na false lub 0 (patrz rysunek 1.2). Po zakończeniu restartujemy system i weryfikujemy skuteczność wprowadzonych modyfikacji.
Jeżeli masz trudności lub obawiasz się wprowadzania zmian w rejestrze systemu Windows, sięgnij do dodatku A, gdzie znajdziesz więcej informacji o oprogramowaniu wspomagającym zabezpieczanie systemu. Korzystając z TigerWatch możesz monitorować i blokować porty oraz usługi systemowe, unikając konieczności wyłączania ich „ręcznie” lub w drodze bezpośredniej edycji rejestru.
Rysunek 1.2.
Modyfikowanie rejestru systemu Windows w celu wyłączenia usługi
W systemie Windows NT 4 usługę Echo wyłączyć można przez proste odinstalowanie składnika usług sieciowych Simple TCP/IP Services (Usługi Simple TCP/IP) — przyp. tłum.
Zdalnie inicjowana, usługa Systat dostarcza informacji o stanie procesów i użytkownikach — powinna więc zostać wyłączona. Aby to zrobić w systemie UNIX, wprowadzamy prostą modyfikację w pliku /et/inetd.conf, podobnie jak w przypadku usługi Echo (patrz rysunek 1.1). Następnie restartujemy cały system lub sam proces inetd.
Analogicznie do Systat, usługa Netstat może dostarczyć osobie nieupoważnionej danych o aktywnych połączeniach sieciowych, jak również innych użytecznych informacji o podsystemie komunikacyjnym — protokołach, adresach i funkcjonujących gniazdach i rozmiarach MTU (patrz rysunek 1.3). Aby wyłączyć usługę Netstat w systemie UNIX, również wystarczy modyfikacja pliku inetd.conf, podobna do przedstawionej na rysunku 1.1 dla usługi Echo. Po jej wprowadzeniu restartujemy system lub sam proces inetd.
Rysunek 1.3.
Część informacji ujawnianych przez usługę Netstat
Usługa Chargen może zostać wykorzystana do przekazywania danych usłudze Echo i odbierania ich w układzie nie kończącej się pętli. Łatwo w ten sposób doprowadzić do poważnego przeciążenia systemu. Ponieważ usługa pełni wyłącznie rolę prostego generatora strumienia znaków, jest mało prawdopodobne, aby praca sieci wymagała jej obecności. Aby ograniczyć możliwości wpływania z zewnątrz na pracę systemu, zaleca się więc wyłączenie usługi.
t Aby wyłączyć usługę w systemie UNIX, oznaczamy dotyczący jej wiersz w pliku /etc/inetd.conf jako komentarz, podobnie jak przedstawiono to na rysunku 1.1 dla usługi Echo. Następnie restartujemy system lub sam proces inetd.
t Mimo, że usługa Chargen nie jest integralną częścią systemu Windows, mogła zostać wcześniej zainstalowana. Aby uniemożliwić jej pracę, konieczna jest edycja rejestru. Korzystamy w tym celu z okna Start | Uruchom, uruchamiając program regedit.exe. Wyszukujemy następnie wpisy usługi i ...
bzyk268