|
|
[ Pobierz całość w formacie PDF ]
oraz narzędzia służące do ochrony systemu. Mimo że przykłady przedstawiają funkcje stosowane w Fedorze oraz innych systemach Red Hat, to omówione narzędzia i techniki mają zastosowanie dla dowolnego systemu Linux bądz bazującego na Uniksie. Szacowanie dostępu do usług sieciowych Systemy Linux oraz Unix dostarczają wiele usług sieciowych, a wraz z nimi crackerzy uzyskują duże możliwości ataku. Użytkownik powinien znać te usługi oraz wiedzieć, w jaki sposób ograniczyć do nich dostęp. Co oznacza pojęcie usługa sieciowa ? Zasadniczo usługa sieciowa to każde zadanie wyko- nywane przez komputer, które wymaga wysyłania i odbierania informacji przez sieć za 272 Część II Linux w praktyce pomocą zdefiniowanego zbioru reguł. Przekierowywanie poczty elektronicznej jest usługą sieciową, podobnie jak serwowanie stron internetowych. System Linux może potencjal- nie oferować tysiące usług. Wiele z nich zostało wymienionych w pliku /etc/services. Spójrzmy na przykładowy fragment tego pliku: # /etc/services: # service-name port/protocol [aliases ...] [# comment] chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp-data 20/udp # 21 is registered to ftp, but also used by fsp ftp 21/tcp ftp 21/udp fsp fspd ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol telnet 23/tcp telnet 23/udp # 24 - private mail system smtp 25/tcp mail Po wierszach zawierających komentarze znajdują się trzy kolumny informacji. Lewa ko- lumna zawiera nazwę każdej usługi. W środkowej kolumnie został zdefiniowany numer portu oraz rodzaj protokołu używany przez daną usługę. Z kolei prawa kolumna zawiera opcjonalny alias bądz listę aliasów tej usługi. Jako przykład przeanalizujemy ostatni wiersz w zaprezentowanym powyżej fragmencie pliku. Wiersz opisuje usługę SMTP (ang. Simple Mail Transfer Protocol), która jest usługą używaną w celu dostarczania poczty elektronicznej przez internet. Zrodkowa kolumna zawiera wpis 25/tcp, który wskazuje, że protokół SMTP używa portu numer 25 oraz protokołu Transmission Control Protocol (TCP). Czym dokładnie jest numer portu? To unikalna liczba, która została ustalona dla okre- ślonej usługi sieciowej. Pozwala na prawidłowe przekazywanie usług sieciowych do opro- gramowania obsługującego tę usługę. Na przykład podczas dostarczania wiadomości e-mail z komputera nadawcy do komputera odbiorcy zdalny system musi w pierwszej kolejności nawiązać połączenie z komputerem odbiorcy. Komputer odbiorcy otrzymuje żądanie połą- czenia, analizuje je, stwierdza, że jest przeznaczone dla portu numer 25, a więc wie, że to połączenie powinno zostać obsłużone przez program do obsługi poczty elektronicznej (którym najprawdopodobniej jest sendmail). Wspomniano wcześniej, że SMTP wymaga protokołu TCP. Niektóre usługi używają nato- miast protokołu User Datagram Protocol (UDP). Na użytek dyskusji dotyczącej zagadnień bezpieczeństwa użytkownik powinien wiedzieć, że protokoły TCP i UDP oferują różne sposoby pakowania informacji i wysyłania ich przez połączenie sieciowe. Połączenie TCP zawiera mechanizm wykrywania błędów i ponownego przesyłania utraconych danych. Natomiast UDP nie sprawdza, czy dane zostały dostarczone w komplecie i nietknięte, co oznacza szybszy sposób wysyłania mniej ważnych informacji. Rozdział 6. Bezpieczeństwo systemu Linux 273 Wyłączanie usług sieciowych Mimo że istnieją setki usług (wymienione w pliku /etc/services wraz z oficjalnymi nume- rami portów), które potencjalnie mogą stać się celem ataku systemu Linux, to w rzeczywi- stości niewiele z nich jest zainstalowanych. W systemach Fedora oraz RHEL większość usług sieciowych jest uruchamiana za pomocą procesu xinetd albo skryptów startowych w katalogu /etc/init.d. Inne systemy Linux używają procesu inetd zamiast xinetd. Demony xinetd oraz inetd są demonami, które nasłuchują dużą liczbę portów sieciowych. Kiedy na określonym porcie następuje próba nawiązania połączenia, demon xinetd lub inetd automatycznie uruchamia odpowiedni program do obsługi danej usługi i pozwala na połączenie. W przypadku demona xinetd plik konfiguracyjny (/etc/xinetd.conf) jest używany w celu dostarczenia ustawień domyślnych serwera xinetd. Katalog /etc/xinetd.d zawiera pliki informujące xinetd, które porty powinien nadsłuchiwać oraz jakie programy uruchamiać (w przypadku demona inetd używany jest tylko plik /etc/inetd.conf). Każdy plik w kata- logu /etc/xinetd.d zawiera informacje konfiguracyjne dla pojedynczego urządzenia i z reguły nosi nazwę odnoszącą się do konfigurowanej usługi. Na przykład w celu włączenia usługi rsync należy przeprowadzić edycję pliku rsync w katalogu /etc/xinetd.d oraz odszukać na- stępujący fragment pliku: service rsync { disable = yes socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } Warto zwrócić uwagę na pierwszy wiersz powyższego fragmentu pliku, w którym nastę- puje identyfikacja usługi jako rsync. Jest to nazwa dokładnie odpowiadająca nazwie usługi wymienionej w pliku /etc/services i nasłuchującej protokołów TCP i UDP na porcie 873. Przykład pokazuje wyraznie, że usługa jest domyślnie wyłączona (disable=yes). Włączenie usługi wymaga zmiany wymienionego wiersza na disable=no. Dlatego też po włączeniu usługi wiersz disable będzie przedstawiał się następująco: disable = no Jeżeli komputer ma działać jako serwer FTP, usługa rsync jest jedną z przeznaczonych do włączenia. Pozwala ona użytkownikom na używanie klienta rsync (zawierającego algorytm wyszukiwania sumy kontrolnej) do pobierania plików z serwera. Za pomocą tej funkcji użytkownicy mogą ponownie uruchomić przerwane pobieranie pliku bez potrzeby rozpoczynania tego procesu od początku. Ponieważ większość usług jest domyślnie wyłączona, komputer może stać się mniej bez- pieczny tylko w wyniku działań użytkownika. Należy dwukrotnie sprawdzić, czy nie- bezpieczne usługi, takie jak rlogin i rsh (które w systemach Fedora i RHEL znajdują się w pakiecie rsh-server), są wyłączone również w plikach /etc/xinetd.d/rlogin i rsh (wiersz disabled=yes). 274 Część II Linux w praktyce Usługa zdalnego logowania może być aktywna, ale warto zablokować używanie plików /etc/host.equiv i .rhosts oraz wymóc podawania hasła podczas każdego użycia rlogin. Zamiast wyłączać usługę, znacznie lepszym rozwiązaniem jest odszukanie wiersza server w pliku rsh (server = /usr/sbin/in.rshd), a następnie na jego końcu dodanie spacji i opcji -L. Po wprowadzeniu modyfikacji należy wysłać sygnał procesowi xinetd, aby plik konfigu- racyjny został ponownie odczytany. Najszybszym sposobem realizacji takiego zadania w systemach Fedora i RHEL jest przeładowanie usługi xinetd. Przeładowanie usługi wy- maga wydania z poziomu powłoki następującego polecenia jako użytkownik root: # service xinetd reload Reloading configuration: [ OK ] Inną możliwością jest bezpośrednie nakazanie procesowi xinetd ponownego odczytania pliku konfiguracyjnego poprzez wysłanie mu sygnału SIGHUP. To rozwiązanie działa, jeśli używany jest demon inetd (w systemach takich jak Debian lub Slackware), i wymusza ponowne odczytanie pliku /etc/inetd.conf. Na przykład w celu ponownego odczytania pliku konfiguracyjnego należy jako użytkownik root wydać następujące polecenie: # killall -s SIGHUP inetd To już wszystko, usługa rsync została włączona. Po dostarczeniu prawidłowo skonfigu- rowanego serwera FTP klienci powinni mieć możliwość pobierania plików za pomocą protokołu rsync. Zabezpieczanie serwerów za pomocą SELinux Firma Red Hat Inc., wprowadzając na rynek pierwszą implementację SELinux w syste- mach Red Hat, wykonała sprytne posunięcie. Zamiast tworzyć politykę kontroli każdego
[ Pobierz całość w formacie PDF ] zanotowane.pldoc.pisz.plpdf.pisz.plblacksoulman.xlx.pl |
|
|
|
|