Uszczelka dla Slackware
Transkrypt
Uszczelka dla Slackware
LINUX USER Slackware Każdy, kto rozważa zastosowanie dystrybucji Slackware na stacji roboczej lub serwerze, powinien pamiętać o podstawowych czynnościach związanych z bezpieczeństwem systemu. MARCIN KUBECKI Uszczelnianie i zabezpieczenia systemu Slackware Uszczelka dla Slackware Motto „Błędne poczucie bezpieczeństwa jest gorsze niż brak zabezpieczeń.” – Steve Gibson Aktualizacja pod względem bezpieczeństwa Od wydania ostatniej stabilnej wersji Slackware minęło już kilka miesięcy. W okresie tym wykryto wiele błędów o krytycznym znaczeniu dla bezpieczeństwa systemu (Tabela 1). Bieżąca aktualizacja to podstawa do osiągnięcia bezpiecznego systemu. O sposobie aktualizacji pakietów, którą należy przeprowadzić, do- wiemy się ze strony producenta dystrybucji. Pakiety natomiast najlepiej pobrać z serwera FTP lub jednego z dostępnych mirrorów. Dobrym pomysłem jest również zapisanie się na listę dyskusyjną, z której to dowiemy się o nowych zagrożeniach w sieci. Program służący do aktualizacji zainstalowanych pakietów to: upgradepkg [opcje] U stary_pakiet%nowy_pakiet Kompilacja oraz zakładanie łaty Openwall (2.4.26) Powodów, dla których warto skompilować jądro, jest co najmniej kilka. Przede wszystkim dopasowujemy jądro do potrzeb zarówno sprzętowych, jak i programowych – jądro skompilowane w ten sposób powinno pracować zdecydowanie wydajniej. Kolejnym argumentem za kompilacją jądra jest wybór wersji jądra oraz możliwość zaaplikowania łatki zwiększającej bezpieczeństwo np. Openwall [Ramka 1] znanego specjalisty od bezpieczeństwa sieciowego Solar Designera. Źródła jądra możemy ściągnąć z www.kernel.org. Interesująca nas wersja jądra to 2.4.26, która w czasie pisania artykułu była wersją bezpieczną oraz odpor- ną na nowo wykryty błąd setsockopt MCAST_MSFILTER (Tabela 1). Do tej wersji jądra ściągamy również łaty Openwall ze strony producenta www.openwall.com/linux. W katalogu /usr/src rozpakowujemy źródła poleceniem: tar -zxpvf linux-2.4.26.tar.gz tar -zxpvf linux-2.4.26-ow1.U tar.gz Zawartość poszczególnych archiwów wyświetli się na ekranie. Po zakończeniu rozpakowywania pojawią się dwa nowe katalogi linux-2.4.26 oraz linux-2.4.26ow1/. Kolejnym krokiem jest zaaplikowanie łaty Openwall, wykonujemy to poleceniem patch -p1 < /usr/src/src/linux2.4.26/linux-2.4.26-ow1.diff z katalogu linux-2.4.26 oraz tworzymy dowiązanie Marcin Kubecki zajmuje się bezpie- AUTOR S lackware jest powszechnie uważany za jedną z bezpieczniejszych dystrybucji Linuksa. Twórca systemu – Patrick Volkerding, postawił sobie za cel stworzenie dystrybucji zarówno bezpiecznej, jak i funkcjonalnej. Osiągnął to wprowadzając rygorystyczną politykę bezpieczeństwa systemu. Slackware stosuje politykę wydawania pakietów jedynie w pełnych wersjach programów, co niestety oznacza też brak programów beta, lecz zapewnia nam bezpieczny i przetestowany kod źródłowy. Jądro systemu udostępnianie jest w postaci nie zmienianej, co umożliwia bezproblemowe zaaplikowanie dowolnej łaty znajdującej się w sieci. System ten jest tworzony praktycznie przez jedną osobę, co również ma wielki wpływ na jego bezpieczeństwo.. czeństwem systemów o otwartym kodzie źródłowym. Jest studentem Wyższej Szkoły Technologii Informatycznych. W swoim doświadczeniu ma zabezpieczenia sieci składającej się ze 100 komputerów. Tabela 1: Najnowsze błędy krytyczne Slackware Błąd Źródło Opis http://www.isec.pl/vulnerabilities/isec-0015-msfilter.txt Za błąd odpowiedzialna jest funkcja ip_setsockopt.. Błąd dotyczy opcji MCAST_MSFILTER w makrze IP_MSFILTER_SIZE. Wykorzystanie błędu może umożliwić lokalne uzyskanie przywilejów administratora mremap – kernel (2.2.25 i niższe, 2.4.24 i niższe, 2.6.2 i niższe) http://www.isec.pl/vulnerabilities/isec-0014-mremap-unmap.txt Za błąd odpowiedzialne jest wywołanie systemowe mremap(). Wykorzystując ten błąd można lokalnie uzyskać prawa administratora lub wykonanie ataku DoS. OpeSSl wersje 0.9.c do 0.6.k oraz 0.9.7a do 0.9.7c http://eve.mitre.org/cgi-bin/cvname.cgi?name=CAN-2004-0079 Za błąd odpowiedzialna jest funkcja do_change_spec, która umożliwia atak DoS (denial of service). Zalecana aktualizacja do wersji OpenSSL.0.9.7d Mutt wersja 1.4.1 oraz wcześniejsze http://eve.mitre.org/cgi-bin/cvname.cgi?name=CAN-2004-0079 Możliwe jest wykonanie ataku DoS (denial of service) poprzez wykorzystanie błędu przepełnienia bufora. Zalecana aktualizacja do wersji mutt.1.4.2i 94 Czerwiec 2004 www.linux-magazine.pl Slackware LINUX USER Ramka 1: Główne cechy i zadania łaty Openwall. Do priorytetowych zadań Openwalla należy: ■ ochrona przed większością ataków przepełnienia bufora, ponieważ łata Openwall czyni stos niewykonywalnym ■ kontrola nad dowiązaniami w katalogach z atrybutem +t (sticky bit) kontrola dostępu do /proc, co powoduje, że jedynie uprzywilejowani użytkownicy mają dostęp do pełnego drzewa procesów restrykcja na kolejki FIFO, co nie pozwala na zapis użytkownikowi, który nie jest jej właścicielem. ■ ■ jest odpowiedzialny za uruchamianie poszczególnych zadań konfiguracyjnych znajdujących się w osobnych plikach. Oto czynności wykonywane przez niego: szy system, bazę taką należy stworzyć już po symboliczne ln -s linux-2.4.26 linux i przejego ręcznej konfiguracji. Baza jest bardzo chodzimy do właściwej kompilacji jądra. ■ Uruchamianie systemu Linux, związane przydatna w celu zautomatyzowania procesu jest z inicjalizacją skryptów startowych dostrajania i uszczelniania systemu. Przykła/etc/rc.d/. Skrypty te zawierają wpisy make menuconfig dem może być sieć składająca się z kilku sero usługach, które mają być uruchamiamake dep werów, na których trzeba wykonywać te same ne, inicjalizacje urządzeń oraz wpisy make bzImage czasochłonne operacje, a skorzystanie z gotozwiązane z czyszczeniem plików tymmake modules wych skryptów znacznie skraca ten czas. czasowych czy przeładowywaniem make modules_install Poniżej znajdziecie zestaw bardzo proldconfig, jednak w swojej standardowej make bzlilo konfiguracji zawierają wiele niepotrzebnie uruchaPo tym zabiegu będziemy już Tabela 2: Parametry dla polecenia upgradepkg mianych usług. Ich dopasoposiadaczami nowego jądra Opcja Działanie wanie do własnych potrzeb z zaaplikowaną łatką bezpie--verbose Powoduje wyświetlenie szczegółów procesu aktualizacji oraz inicjalizacja jedynie czeństwa Openwall. --install-new Powoduje, że upgradepkg zainstaluje również nowe programy niezbędnych usług świadPoprawne skompilowanie --reinstall Opcji tej używamy, gdy chcemy ponownie zainstalować już zainstalowane pakiety czy o doświadczeniu użytjądra nie polega tylko na kownika. Dobrym pomytym, że jądro działa, ale że słem jest również odebranie wszystkim stych skryptów służących do procesu posiada jedynie niezbędne składniki, co skryptom praw do czytania ich przez uszczelniania systemu. Zadania wykonyjest owocem stabilności oraz bezpieczeńużytkownika innego niż właściciel. Odwane przez te skrypty będą szczegółowo stwa systemu. powiedzialny za wyżej wymienione omawiane. Wzorując się na nich możemy czynności jest skrypt rc.script, a przyUszczelnianie oraz proces sobie przygotować dalsze narzędzia, dziękład plików startowych znajduje się ki którym zautomatyzujemy cały proces jego automatyzacji w katalogu./files/rc.d. konfiguracji systemu. Zadanie realizujePo zainstalowaniu naszej nowej dystrybucji my na dystrybucji Slackware, wybór jedoraz aktualizacji jądra przychodzi czas na ■ Usuwanie atrybutu SUID oraz SGID nak nie był przypadkowy. W dystrybucji uszczelnianie systemu. Większość zmian z około 20 standardowych programów tej nadal do konfiguracji potrzebna jest musimy wprowadzać po każdorazowej instaw systemie. Wykonuje to bezpośrednio ręczna ingerencja użytkownika, co daje lacji, więc dużym ułatwieniem podczas skrypt suid_sgid.sh. Kolejny skrypt gwarancję, że zmiany wprowadzane są jeuszczelniania systemu jest baza z informaprzegląda system w poszukiwaniu plidynie tam, gdzie tego potrzebujemy. cjami, jakie wprowadzaliśmy w poprzednich ków z atrybutami suid/sgid, a wyniki Głównym skryptem jest ldsecurity.sh, który jego wersjach. Jeśli jednak jest to nasz pierwdziałania zapisuje w plikach suid_ oraz sgid_. Aby ściągnąć wyżej wymienione atrybuty wpisujemy: Problemy z uruchamianiem nowego jądra Rysunek1: Okno dostępnych opcji Openwalla w jądrze Jeżeli masz problem z uruchomieniem systemu z nowym jądrem, a nie masz stworzonej dyskietki startowej włóż do napędu płytę instalacyjną i po znaku zachęty wpisz: bare.i root=/dev/hda1 noinit rw. W tym przykładzie główna partycja systemu to /dev/hda1 – zmień to stosownie do swojej konfiguracji. chmod -s /sciezka/do/progamu Skrypt wykonujący te działanie to: find.sh. www.linux-magazine.pl Czerwiec 2004 95 LINUX USER ■ Usuwanie z pliku /etc/group oraz /etc/passwd zbędnych w większości konfiguracji, grup oraz użytkowników takich jak: uucp, news, games, rpc. Działanie to wykonuje skrypt del.sh. ■ Kopiowanie nowego pliku /etc/innittab, w którym to została zablokowana możliwość resetowania komputera klawiszami [CTRL]+[ALT]+[DEL]. Opcja odpowiedzialna za możliwość restartowania systemu w taki sposób to ca::ctrlaltdel:/sbin/shutdown -t5 -r now. Aby ją zablokować należy w tym wierszu umieścić znak komentarza #. Odpowiedzialny za to działanie jest skrypt innit.sh. Tabela 3:Nowe wpisy w sysglog.conf kern.debug -/var/log/syslogd/kern.log mail.debug -/var/log/syslogd/mail.log daemon.debug -/var/log/syslogd/daemon.log daemon.debug -/var/log/syslogd/daemon.log auth.debug -/var/log/syslogd/auth.log authpriv.debug -/var/log/syslogd/authpriv.log syslog.debug -/var/log/syslogd/syslog.log *.* /dev/tty12 ■ Ustawienie w pliku /etc/login.defs zmiennej PASS_MAX_DAYS, dzięki której ważność haseł wynosi 2 miesiące. Zmienione są również prawa dostępu do pliku, do odczytu oraz zapisu tylko dla właściciela. Skrypt wykonujący te działanie to login.sh. ■ Zmiana komunikatów powitań systemowych issue, issue.net oraz motd, z których agresor może zdobyć informacje o zainstalowanej dystrybucji oraz wersji jądra. Zmiana plików /etc/issue oraz /etc/issue.net polega jedynie na edycji tych plików, natomiast aby wprowadzić zmiany w pliku /etc/motd, należy wcześniej opatrzyć znakiem komentarza linię echo „'/bin/uname -sr.'”>/etc/motd znajdującą się w skrypcie startowym /etc/rc.S /. Skryptem odpowiedzialnym za tę czynność jest issue.sh. ■ Dodawanie nowych wpisów do pliku /etc/syslog.conf (Tabela 3) oraz zmiana prawa dostępu do tego pliku. Czynności te wykonuje skrypt syslog.sh Podsumowanie Tych kilka działań w istotny sposób zabezpieczy nasz system, lecz jest to dopiero wstęp do stworzenia bezpiecznego systemu. Opisane w niniejszym artykule skrypty warto rozbudować o własne procedury, które będą wykonywały nasze założenia. Nie da się stworzyć systemu w 100% bezpiecznego, więc nie należy ulegać błędnemu poczuciu bezpieczeństwa. Tworzenie jednak coraz to nowszych zabezpieczeń jest znacznym utrudnieniem dla potencjalnych włamywaczy. ■ INFO [1] Oficjalna strona dystrybucji Slackware: www.slackware.com [2] Skrypty opisywane w artykule: www.linux-magazine.pl/issue05/ slack_script.tar.gz [3] Oficjalne wersje kernela: www.kernel.org [4] Łaty bezpieczeństwa Openwall: www.openwall.org/linux [5] Informacje o zagrożeniach i aktualizacjach Slackware: http://www.slackware.com/security [6] Listy dyskucyjne o Slackware: http://www.slackware.com.pl/list [7] Pakiety z aktualizacjami: ftp://ftp.slackware.at/slackware-9.1/patches/packages/ Prenumerata Linux Magazine Nie przegap takiej okazji ■ Zamawiając prenumeratę oszczędzasz! ■ Płacisz jak za 9 numerów, a otrzymujesz 12! ■ Z każdym numerem DVD lub płyta CD-ROM. Najszybszy sposób zamówienia prenumeraty: http://www.linux-magazine.pl Infolinia: 0801-800-105