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