LINUX
Podstawy bezpieczeństwa

 

Właściwy system zabezpieczeń to podstawowy element dobrego, niezawodnego serwera. Ponieważ ataków od strony sieci i tak nie da się całkowicie uniknąć, należy podjąć takie działania, by w jak największym stopniu zminimalizować próby włamania do systemu. Bądź przekonany, że także i Twój serwer nie ominie taka próba i że ktoś będzie chciał modyfikować jego pliki konfiguracyjne tak, by zdobyć nad nim kontrolę. Nieprawdą jednak jest, że zagrożenia te pochodzą od zaawansowanych hackerów, którzy bardzo dobrze znają się na sieciach i systemach operacyjnych. Większość takich ataków pochodzi od niewyszkolonych osób uruchamiających gotowe skrypty atakujące (kiddie scripts, exploity).
Tak więc Twoim zadaniem jest zarówno dobrze poznać słabe punkty swojego systemu, jak i zadbać o właściwe jego zabezpieczenie.
Szczególne znaczenie w dużych firmach, gdzie przebywa dużo osób z zewnątrz ma fizyczne zabezpieczenie dostępu do serwera. Podstawą takiego zabezpieczenia jest umieszczenie go w odpowiednim do tego celu pomieszczeniu (wyposażonym w kraty okienne, pancerne drzwi, odpowiednią instalacje alarmową) oraz zmniejszenie ilości osób posiadających możliwość uzyskania dostępu do tego miejsca, albowiem zasadą ograniczonego zaufania należy kierować się także w stosunku do współpracowników!.
Potencjalny włamywacz może mieć możliwość uruchomienia serwera z dyskietki zawierającej np. jedną z minidystrybucji Linuxa (Brutalware Linux?). W związku z tym kolejną czynnością, którą powinieneś wykonać, jest takie ustawienie BIOSu, by nie było innej możliwości startu komputera, jak tylko z dysku twardego z systemem operacyjnym. Dla większego bezpieczeństwa można także po zainstalowaniu systemu usunąć napędy, z których można wystartować komputer, takie jak stacje dysków czy napędy CD-ROM.
Hasło założone przy pomocy BIOSu komputera nie jest trudne do złamania - istnieją tzw. hasła uniwersalne dla BIOSów poszczególnych producentów (Award, Ami... - pełną listę haseł znajdziesz tutaj). Jeśli jednak nie można uzyskać dostępu tą metodą zawsze można rozkręcić obudowę i zresetować ustawienia BIOSu (przekładając odpowiednią zworkę na płycie), i tym samym zlikwidować ustawione wcześniej hasło! Ważne jest więc zabezpieczenie dostępu do serwera, albowiem w chwili bezpośredniego kontaktu z intruzem serwer nie ma najmniejszych szans. Zakładając hasło na najniższym poziomie sprzętu możemy choć trochę utrudnić mu włamanie.
Kolejną ważną czynnością, tym razem już związaną z systemem operacyjnym, jest zabezpieczenie trybu "single", w którym system uruchamia się automatycznie udostępniając powłokę z prawami administratora (w większości systemów hasło logowania nie jest wtedy potrzebne!). Jest on wykorzystywany w celu dokonania czynności naprawy systemu lub w przypadku, gdy administrator nie pamięta swojego hasła (!). Aby utrudnić dostęp do trybu "single" dokonujemy edycji pliku konfiguracyjnego Linux Loadera (LILO) - najpopularniejszego bootloadera wykorzystywanego w systemie Linux. W tym przypadku należy dopisać do pliku /etc/lilo.conf odpowiednie linie PASSWORD=Twoje hasło oraz RESTRICTED tak, jak w poniższym przykładzie:

boot=/dev/hda2
prompt
timeout=50
image=/boot/vmlinuz
label=linux
root=/dev/hda2
read-only
password=Twoje hasło
restricted

Parametr RESTRICTED ma na celu złagodzenie wymagań LILO: podanie hasła będzie konieczne jedynie w przypadku, gdy podczas ładowania do systemu przekazywane są parametry, czyli także wtedy, gdy uruchamiamy system w trybie "single". Pamiętaj, by po każdej edycji pliku lilo.conf wydać komendę lilo, która zaktualizuje ustawienia bootloadera. Należy także zadbać o to, aby dostęp do tego pliku miał wyłącznie administrator, więc:

chmod 600 /etc/lilo.conf

Można także zastosować dodatkowe zabezpieczenie poprzez uniemożliwienie zapisywania zmian wprowadzanych do tego pliku. Służy do tego komenda chattr:

chattr +i /etc/lilo.conf

Jeśli będziesz chciał później coś w nim zmienić, wystarczy wpisać:

chattr -i /etc/lilo.conf

I jeszcze jedno: system można zazwyczaj zrestartować używając kombinacji klawiszy [Alt]+[Ctrl]+[Del]. Aby uniemożliwić wykonanie tej czynności, należy wyedytować plik /etc/inittab zamieniając linię:

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r -now

Na np.:

ca:12345:ctrlaltdel:/bin/echo "Nie ma możliwości restartu komputera!"

Po zastosowaniu powyższych zmian naciśnięcie stosownych klawiszy spowoduje tylko wypisanie odpowiedniego komunikatu.

Hasło jest najprostszym i zarazem podstawowym zabezpieczeniem. W Linuxie używamy go podczas rozpoczynania pracy z komputerem, logując się do systemu. Hasło nie powinno być proste i proponuję, by podczas jego tworzenia kierować się poniższymi zasadami:

1. Używaj mieszaniny liczb, znaków specjalnych oraz liter wielkich i małych,
2. Używaj przynajmniej ośmiu znaków,
3. Używaj liter i liczb, które wydają się przypadkowe, a są łatwe do zapamiętania dla właściciela,
4. Nie używaj nazw osób lub rzeczy,
5. Nie używaj żadnego słowa polskiego, obcego lub skrótu,
6. Nie używaj żadnej informacji związanej z kontem (nazwa użytkownika, inicjały, numer telefonu, data urodzin, numer pokoju...),
7. Nie używaj kolejnych klawiszy na klawiaturze (np. qwerty),
8. Nie używaj żadnej z wyżej wymienionych rzeczy wypisanych w odwrotnej kolejności, wielkimi literami lub ukrytej w inny sposób,
9. Nie używaj haseł składających się z samych cyfr,
10. Nie używaj przykładowego hasła znalezionego w jakiejkolwiek publikacji.

Przestrzegając tych zasad unikniemy sytuacji, w której ktoś, kto Cię zna, zwyczajnie odgadnie Twoje hasło lub intruz szybko je znajdzie posługując się słownikiem (podczas tzw. ataku słownikowego na plik zawierający hasła) lub generatorem haseł.
Pamiętaj także o systematycznym usuwaniu pliku .bash_history znajdującego się w Twoim katalogu domowym, albowiem istnieje prawdopodobieństwo, że może się w nim znaleźć Twoje hasło! Aby plik ten był automatycznie usuwany w chwili wylogowywania się z systemu, dodaj do pliku .bash_logout w katalogu domowym wiersz:

rm -f $HOME/.bash_history

Ponadto administartor powinien zmniejszyć liczbę pamiętanych poleceń poprzez edycję pliku /etc/profile, np.:

HISTFILESIZE=15
HISTSIZE=15
export HISTFILESIZE HISTSIZE


W systemie Linux hasła tradycyjnie przechowywane są w postaci zaszyfrowanej w pliku /etc/passwd. Z tego pliku korzystają często programy, więc jego prawa dostępu pozwalają na odczyt wszystkim użytkownikom. Istnieje jednak możliwość zastosowania systemu haseł ukrytych, które znajdują się w osobnym pliku /etc/shadow, do którego dostęp ma jedynie administrator. Jeżeli w Twoim systemie nie jest wykorzystywana funkcja haseł ukrytych, użyj poleceń pwconv oraz grpconv, aby przekonwertować hasła znajdujące się w plikach /etc/passwd oraz /etc/group do postaci ukrytej w plikach /etc/shadow oraz /etc/gshadow.
Standardowa, maksymalna długość hasła w systemie to 8 znaków. Może być także krótsze, w zależności od ustawień w pliku /etc/login.defs. Aby móc używać haseł dłuższych, należy zastosować algorytm szyfrowania MD5. Wiele dystrybucji ma tę opcję włączoną automatycznie, jednak jeśli tak nie jest, możesz to zmienić poprzez edycję pliku /etc/login.defs wstawiając linię:

"MD5_CRYPT_ENAB yes"

W systemie Red Hat możesz w tym celu skorzystać z polecenia authconfig.

Bardzo istotnym elementem zabezpieczenia serwera od strony sieci jest dbałość o uaktualnianie oprogramowania zapewniającego obsługę poszczególnych usług sieciowych. I tu niestety pojawia się najczęściej największy problem administratora: brak czasu. Często także po prostu nie można sobie z różnych względów pozwolić na przerwanie działania systemu na czas instalacji. Ponadto każdy chyba zdaje sobie sprawę, iż nigdy nie będziemy równie dobrze poinformowani o słabych punktach w poszczególnych programach tak dobrze, jak intruzi (niepoprawnie nazywani hackerami). Być na bieżąco z problemami związanymi z bezpieczeństwem wśród wielu innych obowiązków administratora nie jest zadaniem łatwym. Jednak należy robić wszystko, by na naszym serwerze była zainstalowana zawsze najnowsza, stabilna wersja zarówno jądra systemu, jak i konkretnego oprogramowania. Większość intruzów uzyskuje dostęp do systemu właśnie poprzez błędy w programach. Doskonałym źródłem informacji o słabych punktach bezpieczeństwa jest witryna www.securityfocus.com, na której znajdziesz naprawdę dużo informacji z tej dziedziny. Ponadto polecam częste odwiedzania stron: www.cert.org, linuxtoday.com, www.securityportal.com. Ze stron polskojęzycznych mogę polecić ceti.pl/~kravietz/snews/.
Potrzebne programy pobieraj tylko z zaufanych źródeł; aktualną wersję jądra znajdziesz zawsze na serwerze ftp.pl.kernel.org w katalogu /pub/linux/kernel. Bezpiecznymi źródłami oprogramowania są także serwisy TUCOWS Linux oraz Freshmeat. Więcej odnośników znajdziesz tutaj.
Chyba najczęściej atakowanymi elementami oprogramowania systemu Linux jest sendmail oraz imap. Wydaje mi się, iż sama popularność sendmaila powinna Cię skłonić do zamiany go na jakiś inny program do obsługi poczty na Twoim serwerze. Masz tutaj duży wybór, m.in. Postfix, ZMailer, qmail... Możesz także znacznie zmniejszyć ciężar uaktualniania poprzez zwyczajne usunięcie niewykorzystywanego oprogramowania, a także wyłączenie niepotrzebnych usług. Więcej na temat niepotrzebnych usług, znajdziesz w artykule: Usługi - niepotrzebne demony, bezpieczne połączenia.
Pamiętaj, że hasła, prawa dostępu do plików, szyfrowanie oraz programy antywirusowe są tylko narzędziami i będą chronić Twój system tak dobrze, jak tego chcesz i jak wiele czasu możesz na to poświęcić. I nie jest prawdą, że dużo bezpieczniejszymi odmianami Uniksa są np. HP-UX, IBM AIX, czy SGI IRIX. Komercyjne odmiany są rzadziej spotykane i jedynie w tym tkwi ich największa siła. Poza tym system jest tak bezpieczny, jak zadba o to jego administrator i każdy system zaraz po zainstalowaniu jest równie słabo zabezpieczony. Dopiero umiejętne i dokładnie przeprowadzone czynności konfiguracji poszczególnych ustawień konfiguracji systemu i oprogramowania to najważniejsze zadanie następujące zaraz po instalacji systemu, zanim jeszcze zacznie on udostępniać jakiekolwiek usługi.

 

<<< powrót do strony głównej

 

Copyright (C) 2000-2002 by Grzegorz Lewandowski
All rights reserved