Bezpieczeństwo Linuksa opiera się na wielu znanych powszechnie narzędziach np.
ścianie ogniowej (firewall), analizatorach logów itd. Jednak najstarszym i podstawowym sposobem zabezpieczania serwera jest konfiguracja plików /etc/
hosts.*. Uwaga: pliki
hosts.* nie zastępują ściany ogniowej, a działają "obok". Pamiętaj, że jeżeli ściana ogniowa jest skonfigurowana na blokadę połączenia, to pliki
hosts.* nie udostępnią połączenia. Na potrzeby poniższej konfiguracji plików
hosts.* przyjąłem, że ściana ogniowa jest w wersji dopuszczającej każde połączenie z każdego hosta.
Otrzymując z sieci wezwanie do uruchomienia usługi serwerowej, Twój komputer wykonuje po kolei:
pobiera dane odległego komputera (
adres IP,
domenę oraz
rodzaj usługi). Następnie czyta zawartość pliku /etc/
hosts.allow (
hosts czyli komputery w sieci,
allow znaczy dozwolone) i gdy znajdzie wpis zezwalający,
to dopuszcza połączenie. Jeżeli takiego wpisu nie znajdzie, wówczas analizuje plik /etc/
hosts.deny (
deny znaczy blokowane).
Aby zmaksymalizować bezpieczeństwo połączeń przyjmij zasadę, że w pliku /etc/
hosts.deny BLOKUJESZ WSZYSTKIM dostęp,
a w pliku /etc/
hosts.allow DOPUSZCZASZ WYBRANE HOSTY do wskazanych usług. Uwaga: jeżeli oba pliki
hosts.* będą puste, to każde połączenie z każdym klientem będzie dopuszczone.
Tak więc, gdy w pliku /etc/
hosts.allow odległy
klient o nr IP 217.96.171.131 został odnotowany w postaci wiersza:
sshd:217.96.171.131
to system nie sprawdza już wpisu w pliku
/etc/
hosts.deny i zezwala na połączenie (na usłudze sshd).
Natomiast jeżeli
klient nie został wpisany w /etc/
hosts.allow, to w następnej
kolejności system sprawdza plik /etc/
hosts.deny . Szukać tam
będzie wpisu:
ALL:ALL
lub nr IP zablokowanego
klienta. Jeżeli nie znajdzie, to zezwoli na połączenie.
Uwaga: system zawsze sprawdza
hosts.* podczas próby połączenia z
odległego komputera, więc po wykonaniu korekt nie trzeba wykonywać
restartu, aby nabrały legalności.
Z powodu ewentualnych kłopotów w testowaniu ustawień wskazanym jest
odblokować samego siebie (czyli serwer działający na serwerze w
tzw. pentelce) i wpisać:
ALL:ALL EXCEPT localhost:DENNY
lub
ALL:ALL EXCEPT 127.0.0.1:DENNY
Oczywiście localhost lub 127.0.0.1 to Twój serwer, który w ten
sposób akceptuje samego siebie.
ALL znaczy wszystkie,
ssh,
telnet,
ftp to usługi. W powyższym przykładzie wszystkie komputery z
IP 192.168.0.2, 22 i 4 mają dostęp do wszystkich usług (ALL),
natomiast host 192.168.0.3 tylko do telnetu (
in znaczy
wejście do serwera). Wpis
sshd 192.168.0. (adres IP z kropką na końcu) da dostęp do logowania się na sshd z domowej sieci
192.168.0.0/24 . Przypominam, że 192.168.xxx.xxx to adresy
nierutowalne (niewidoczne
z Internetu adresy komputerów sieci wewnętrznej). Ostatni wpis umożliwia logowanie na serwer ftp z dwóch adresów.
Uwaga: posiadacze programu
PortSentry muszą się liczyć z
automatycznie robionymi wpisami w pliku /etc/
hosts.deny .
Przeglądnij pliki konfiguracyjne w katalogu
/etc/potrsentry/*