Zawartość rozdziału:
Rozdział ten skupia się na poprawnej konfiguracji jądra i protokołów sieciowych.
UWAGA!
Aby umożliwić automatyczne wykonywanie poniższych komend podczas startu systemu (ale tylko tych, zawierających polecenie ndd) należy:
Poniższe parametry ustawia się w pliku /etc/system.
Skutecznie blokuje wykonywanie programów na stosie, czyli - de facto - jest częściowym zabezpieczeniem przed przepełnianiem buforów. Niestety, nie działa na starszych modelach SPARC i platformie INTEL x86. Odnosi skutek jedynie w przypadku modeli: sun4u/sun4d/sun4m.
Aby włączyć tą blokadę, należy zastosować parametry:
set noexec_user_stack=1 set noexec_user_stack_log=1
Niestety, włączenie powyższych opcji może mieć negatywny wpływ na niektóre aplikacje.
Jeżeli nie planujemy debugować systemu, należy wyłączyć tworzenie plików zrzutu. Zapobiegniemy w ten sposób przepełnieniu dysku plikami core generowanymi w wyniku błędów systemu Solaris.
set sys:coredumpsize=0
Jak w temacie, ustawienie poniższego parametru pozwoli zapobiec wyczerpaniu zasobów systemowych przez któregoś z użytkowników.
set maxuprc=WARTOSC
gdzie WARTOSC może wynosić np. 100.
Poniższe opcje wymuszają odrzucanie pakietów (dotyczących usługi NFS) pochodzących od nieuprzywilejowanych portów.
set nfssrv:nfs_portmon = 1 set nfs:nfs_portmon = 1
O ile jest to możliwe, należy stosować statyczne tablice ARP w odniesieniu do wszystkich komputerów w sieci lokalnej lub (jeżeli nie wchodzi to w rachubę) przynajmniej do hostów, których obecność jest wymagana do poprawnej pracy serwera, a znajdujących się w sieci lokalnej.
Tym sposobem można (choć częściowo) ustrzec się przed fałszowaniem adresów IP.
Aby skorzystać z tej metody należy w pliku /etc/ethers zawrzeć adresy IP komputerów oraz ich adresy MAC. Oto przykładowy plik /etc/ethers:
192.168.11.34 00:80:48:AB:95:80 192.168.11.35 00:80:48:DF:A1:2A
Adresy te zostaną wczytane przy starcie systemu do cache'u i nie mogą być z niego ani usunięte, ani podmienione.
Jeżeli w sieci lokalnej jest kilka - lub kilkanaście komputerów można nawet wyłączyć całkowicie usługę dynamicznego uzyskiwania adresów MAC zastępując ją tablicą statyczną.
Jeżeli konieczne jest korzystanie z dynamicznych funkcji ARP to należy zmniejszyć czasy ważności, po których adresy MAC będą usunięte z cache'u (arp_cleanup_interval). Analogiczna sytuacja ma miejsce w przypadku tablic routingu (ip_ire_flush_interval).
Można to zrobić stosując polecenia:
ndd -set /dev/arp arp_cleanup_interval 60000 (domyślnie 5 minut) ndd -set /dev/ip ip_ire_flush_interval 60000 (domyślnie 20 minut)
60000 oznacza liczbę milisekund (czyli 60 sekund), po którym to czasie zostaną usunięte wpisy z cache'u.
O ile system nie będzie używany jako router należy wyłączyć IP Forwarding. Można to zrobić poleceniem:
ndd -set /dev/ip ip_forwarding 0lub utworzyć plik:
touch /etc/notrouter
Wyłącza on IP forwarding między interfejsami, w przypadku gdy nasz serwer należy do różnych podsieci (tzw. multihoming).
Jeżeli system będzie korzystał z więcej niż jednego interfejsu sieciowego i będzie należeć do różnych podsieci, wówczas można częściowo się ustrzec przed podszywaniem pod cudzy IP. Należy w tym celu włączyć jawne pochodzenie pakietów:
ndd -set /dev/ip ip_strict_dst_multihoming 1
Dzięki temu pakiety o adresach źródłowych pochodzących z sieci, która jest przyłączona do innego interfejsu sieciowego niż ten, z którego te pakiety zostały odebrane, będą odrzucane.
Jeżeli system przesyła dalej pakiety, należy wyłączyć przesyłanie broadcastów bezpośrednich. Dzięki temu można się ustrzec przed atakami DoS typu "smurf".
ndd -set /dev/ip ip_forward_directed_broadcasts 0
Należy wyłączyć przesyłanie pakietów typu "source route" (czyli takich, które wykorzystują routing źródłowy). Dzięki takim pakietom potencjalni hackerzy mogą omijać systemy firewall i routery ekranujące.
ndd -set /dev/ip ip_forward_src_routed 0
W przypadku, gdy nie ma bezpośrednich wskazań co do używania routingu dynamicznego, to ze względów bezpieczeństwa (niestety, kosztem funkcjonalności) należy rozważyć stosowanie routingu statycznego.
Aby wyłączyć routing dynamiczny należy utworzyć plik:
touch /etc/defaultrouteri umieścić w nim adres IP domyślnego routera. Jeżeli takiego nie ma, można pozostawić ten plik pusty.
W przypadku, gdy korzystamy z kilku routerów, należy utworzyć plik:
touch /etc/init.d/static_routes
i zawrzeć w nim polecenia /usr/bin/route, które umożliwią korzystanie z tych routerów.
Kolejną czynnością będzie stworzenie łącza sztywnego:
ln /etc/init.d/static_routes /etc/rc2.d/S99static_routes
Więcej informacji na temat komendy route można uzyskać korzystając z podręcznika systemowego - "man route".
Jeżeli wyłączenie routingu dynamicznego nie wchodzi w rachubę, należy przynajmniej uruchamiać demon routingu w trybie "quiet" (opcja "-s").
Jeżeli multicasting nie jest potrzebny - należy wyłączyć jego obsługę poprzez wprowadzenie znaku komentarza (#) przed linią:
"route add 224.0.0.0."
w pliku /etc/init.d/inetsvc
Ponieważ żądania Echo Request typu Broadcast mogą być użyte do przeprowadzenia ataków typu "Denial of service" zalecamy ich odrzucanie:
ndd -set /dev/ip ip_respond_to_echo_broadcast 0
Podobnie jak powyżej, należy wyłączyć odpowiedzi na Timestamp Request typu Broadcast.
ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
Jak w temacie, należy włączyć odrzucanie pakietów tego typu:
ndd -set /dev/ip ip_ignore_redirect 1
oraz możliwość ich wysyłania:
ndd -set /dev/ip ip_send_redirects 0
Należy również wyłączyć odrzucanie Timestamp Request typu Unicast:
ndd -set /dev/ip ip_respond_to_timestamp 0
Aby sprawdzić, czy system jest atakowany tą metodą możemy użyć polecenia:
netstat -an -f inet | grep SYN_RCVD | wc -lw przypadku ataków bieżących, lub:
netstat -s -P tcp
jeżeli chcemy przejrzeć statystykę od momentu włączenia serwera.
Parametr tcpTimRetransDrop pokazuje liczbę anulowanych połączeń spowodowanych zbyt długim czasem oczekiwania.
Z kolei parametr tcpListenDrop określa liczbę pakietów SYN, które były odrzucone od momentu startu systemu, a były spowodowane opóźnieniami w kolejce połączeń TCP.
Gdy obydwie wartości szybko się zwiększają jest duże prawdopodobieństwo, że system jest atakowany metodą SYN.
Aby zmniejszyć wartość czasu, po którym połączenie będzie anulowane gdy nie zostanie odebrany pakiet SYN-ACK należy wykonać polecenie:
ndd -set /dev/tcp tcp_ip_abort_cinterval 60000 (domyślnie 3 min)
W przypadku obciążonych systemów zalecamy również zwiększenie liczby nie nawiązanych połączeń w kolejce (1024) do np.
ndd -set /dev/tcp tcp_conn_req_max_q0 4096
Zwiększenie wartości może pomóc w przeciwdziałaniu wspomnianym atakom "SYN flood".
Można zwiększyć również max. ilość połączeń z serwerem (domyślnie jest to 128), np.:
ndd -set /dev/tcp tcp_conn_req_max_q 1024
Niestety, zmiana ta ma negatywny wpływ na wydajność systemu oraz odbywa się kosztem rezerwacji większej ilości pamięci na kolejkę połączeń.
Ze względów bezpieczeństwa należy zmienić kolejność przydzielania numerów ISN na zgodną z RFC 1948, która jest trudniejsza do odgadnięcia niż (domyślnie ustawiona) ulepszona metoda z losową wartością wzrostu.
W tym celu w pliku /etc/default/inetinit wartość TCP_STRONG_ISS należy zmienić na:
TCP_STRONG_ISS=2
![]() |
![]() |
![]() |