[ 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 ]




 

Powered by WordPress dla [Nie kocha się ojca ani matki ani żony ani dzieca, lecz kocha się przyjemne uczucia, które w nas wzbudzają]. Design by Free WordPress Themes.