Linux 2.4 a bezpieczeństwo
Na pewno większość administratorów Linuksa wie kim jest Solar Designer. Prawdopodobnie jeszcze więcej z nich zna zestaw patchy na jadro, o nazwie openwall, jego autorstwa. Poprawiają one bezpieczeństwo systemu, utrudniając ataki typu buffer-overflow, uniemożliwiając tworzenie dowiązań do niektórych katalogów, czy ograniczają dostęp użytkowników do informacji o systemie. Jednak jeżeli chcemy użyć openwalla razem z jądrami z serii 2.4, po wejściu na stronę projektu (www.openwall.com) widzimy: "Linux 2.4 is NOT going to be supported until 2.4.10 or so." Czy zatem pozostaje nam siedzieć z założonymi rękoma? Nie, na szczęście jest sposób żeby zabezpieczyć swojego Linuksa z jądrem 2.4 a przy okazji wzbogacić go o kilka interesujących moźliwości.
Jeśli ktoś nie może się doczekać 2.4.10 lub uważa, że jądra z serii 2.4 są juz wystarczająco stabilne, może odwiedzić stronę http://www.getrewted.net/. Tam znajduje się przeniesiony patch Solar Designera, który obecnie (w momencie pisania tego tekstu) jest dostępny na najnowszą wersję kernela - 2.4.5. W łacie dostępne są wszystkie możliwości openwalla:
bezpieczny stos
wykrywanie trampolin w GCC
bezpieczne linki i FIFO w /tmp.
bezpieczne deskryptory plików (0, 1, 2)
ograniczony dostęp do /proc
sprawdzanie limitów przy execve()
brak jest natomiast opcji usuwania niepotrzebnych segmentów pamięci dzielonej, ponieważ jądra z serii 2.4 wykonują to same.
Dodatkowo, patch zawiera dużo więcej opcji. Oto one:
logowanie wywołań wsystkich funkcji exec*(), nie polecane, ze względu na tworzenie ogromnej ilości logów
logowanie wywołań funkcji set*id(), bardziej przydatne, chociaź też daje o sobie znać w logach
logowanie sygnałów; opcja ta pozwala na logowanie ważniejszych sygnałów, takich jak SIGSEGV.
logowanie nieudanych wywołań funkcji fork()
logowanie zmian czasu w zegarze systemowym
sposób wykonywania zrzutów pamięci ukra...pożyczony z systemow BSD :>
usprawnienie działania chroota
opcje zabezpieczające wykonywanie funkcji exec*() w określonych sytuacjach - warto zajrzeć do dokumentacji
ograniczenie możliwości programów suidowych
możliwość uruchamiania programów tylko z "zaufanych" ścieżek
losowe PIDy
losowe IP ID - ciekawa opcja, zabezpiecza przed skanowaniem portów trudno wykrywalną metodą ip.id i znajdywaniem 'odcisków palców' systemu. Metoda ta pochodzi z systemu OpenBSD.
restrykcyjne gniazda (ograniczenie tworzenia gniazd danego typu dla konkretnego użytkownika/grupy)
pomoc w zabezpieczeniu systemu przed skanowaniem portów
Jak widać ilość opcji jest dość znaczna, niektóre wydają mi się bardzo ciekawe i przydatne, inne mniej. Istnieje rownież wersja patcha razem z systemem LIDS, ale to już temat na osobny artykuł. Mam nadzieje, źe tym tekstem zachęciłem do przyjrzenia się bliźej tematowi zabezpieczania kernela 2.4.x, albo chociaż (jeśli ktoś nie rozumie niektórych pojęć, np: funkcja 'fork()' czy 'SIGSEGV') do poczytania odpowiedniej literatury (na przyklad podręcznika systemowego ;)).