
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.
Copyright
(C) 2000-2002 by Grzegorz Lewandowski
All rights reserved