LINUX - BHP.
Miałem autentyczną rozmowę z amatorem-adminem, właścicielem małego serwerka opartego na Linuxie, który był w głębokim przeświadczeniu, że skoro system działa, to... nie został wyhakowany(!!!). Natrudziłem się trochę, zanim wyjaśniłem, że czasy prymitywnych włamań, po to aby formatować dysk się skończyły, a cudze serwery hakuje się, aby zrobić z nich zombi. Co to takiego? Ano na obcym komputerze, przy braku wiedzy właściciela instaluje się różne programy i z pokładu ofiary atakuje kolejne komputery w sieci, z tym że na konto ... wyhakowanego zombi.
Zabezpieczenie Twojego LINUXa musi odbywać się dwukierunkowo: zabezpieczenie przed intruzami od wewnątrz (domownicy, koledzy, użytkownicy kont mający bezpośredni dostęp do serwera) oraz od zewnątrz, czyli przed intruzami z sieci, internetu.
Aby podnieść bezpieczeństwo Twojego komputera pracującego pod Linuxem w sieci należy:
* * *
Należy więc:
o Zamykać na klucz pomieszczenie z komputerem.
o Ustawić BIOS tak, aby system startował wyłącznie z dysku twardego i co za tym idzie zainstalować bootloadera na dysku. Aby utrudnić przestawienie BIOSu należy oczywiście zabezpieczyć go hasłem. Uwaga: istnieja tzw. hasła uniwersalne dla BIOSów poszczególnych producentów (Award, Ami itp.). Pełna listę takich haseł znajdziesz tutaj). Jeżeli link nie zadziała to możesz pobrać kopię tamtej witryny z moich rezerw. Pamiętaj, że włamywacz może też odkręcić obudowę, wyjać bateryjkę (lub przestawić zworkę) i ... skasować hasło!!!. Ta metoda zostawi jednak ślady włamania w postaci braku hasła na BIOSIe serwera :-)
o Usunąć z komputera czytnik CD-ROM oraz flopka 1,44.
Zabezpieczyć bootloadera LILO (dotyczy serwera startujacego z dysku, nie z dyskietki) poprzez:
o dopisanie do pliku /etc/lilo.conf odpowiednich linii:
§ PASSWORD=Twoje hasło oraz
§ RESTRICTED zgodnie z poniższym przykładem:
boot=/dev/hda1 (jeżeli bootujesz z hda1) 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 będą parametry.Pamiętaj, by po każdej edycji pliku lilo.conf wydać komendę lilo, która zaktualizuje ustawienia bootloadera.W Mandrake 8.x - hasło możesz łatwo założyć pod KDE (MANDRAKE CONTROL CENTER).
o Zadbanie o to, aby dostęp do pliku /etc/lilo.conf miał wyłącznie administrator, poprzez polecenie: chmod 600 /etc/lilo.conf
o Zastosowanie dodatkowego zabezpieczenia poprzez uniemożliwienie zapisywania zmian wprowadzanych do tego pliku. Służy do tego komenda: chattr +i /etc/lilo.conf
Jeśli będziesz chciał później coś w nim zmienić, wystarczy wpisać: chattr -i /etc/lilo.conf
ca::ctrlaltdel:/sbin/shutdown -t1 -a -r -now na np.: ca::ctrlaltdel:/bin/echo "Po co wciskasz restart komputera?!?"
Po zastosowaniu powyższych zmian naciśnięcie stosownych klawiszy spowoduje tylko wypisanie odpowiedniego komunikatu. Oczywiście spytasz się: no i co z tego, że nie będzie można teraz restartować komputera??? Ano nie wiesz, że taki restart przy pomocy kombinacji klawiszy CTRL+ALT+DELETE (lub zwyczajnie poleceniem halt) jest pierwszym krokiem do przejęcia praw roota, mimo że nie podasz hasła!!! Jak to się robi? Czytaj str. 14 CHIP Special 3/2001: "Czasami jednak może się zdażyć, że zapomnimy hasło. W takim przypadku powinniśmy przeładować system (CTRL+ALT+DELETE) i po wyświetleniu zachęty boot: wpisać parametr single W efekcie system uruchomi się w trybie jednoużytkownikowym, udostępniajac nam konto root, mimo że nie podaliśmy hasła. Teraz po wydaniu polecenia passwd będziemy mogli podać nowe hasło dla administratora."
Zabezpieczenie komputera przed możliwościa restartu jest ważne z innych przyczyn. Można zmienić sposób montowania partycji dysku (np. z archiwaliami) w pliku /etc/fstab i nie mając uprawnień do polecenia mount, umount - spróbować restartować system. Da to zmienione (a nie zawsze zgodne z intencją administratora) parametry montowanych partycji. Niestety w KDE (czyli w okienkach) każdy zalogowany użytkownik miał domyślnie pełne prawo do restartowania systemu. Problem restartu pod KDE został rozwiazany w Mandrake 8.2, 9.0 i po wybraniu wysokiego (dla serwerów) poziomu bezpieczeństwa - ani w powłoce tekstowej, ani pod KDE zwykły użytkownik nie może restartować systemu.
o Używać mieszaniny liczb, znaków specjalnych oraz liter wielkich i małych
o Używać przynajmniej ośmiu znaków
o Używać liter i liczb, które wydaja się przypadkowe, a są łatwe do zapamiętania dla właściciela
o Nie używać nazw osób lub rzeczy
o Nie używać żadnego słowa polskiego, obcego lub skrótu
o Nie używać żadnej informacji zwiazanej z kontem (nazwa użytkownika, inicjały, numer telefonu, data urodzin, numer pokoju itp.)
o Nie używać kolejnych klawiszy na klawiaturze (np. qwerty)
o Nie używać żadnej z wyżej wymienionych rzeczy wypisanych w odwrotnej kolejności, wielkimi literami lub ukrytej w inny sposób
o Nie używać haseł składających się z samych cyfr
o Nie używać przykładowego hasła znalezionego w jakiejkolwiek publikacji
Przestrzegajac tych zasad unikniesz problemów podczas tzw. ataku słownikowego lub siłowego.
Posiadaczy Mandrake 9.0 zapraszam tutaj (357KB). Utworzyłem też plik w formacie *.doc (164KB) zawierający tabelkę z wykazem praw własności dla wersji: klienta, serwera i maksymalnego bezpieczeństwa (łącznie z przyblokowaniem usług serwerowych). Jeżeli masz wątpliwości, czy Twój Mandrake 9.0 ma prawidłowe ustawienia plików i katalogów to warto poczytać.
Poniżej przedstawiłem skróconą w porównaniu z w/w dokumentem *.doc propozycję praw dla Mandrake 8.1 (wersja serwerowa).
Wejdź jako root do katalogu głównego / i wydaj polecenie ls -la . Porównaj swój wydruk (na ekranie) do poniższego ustawienia. Uwaga, moja propozycja jest dosyć restrykcyjna i może w wyjątkowych okolicznościach zablokować pracę jakiegoś demona. Przed wprowadzaniem zmian zapisz więc sobie na kartce pierwotne ustawienia.
/archiwum d--- --- --- root.root /bin drwx --x --x root.root /boot drwx --- --- root.root /dev drwx --x --x root.root /etc drwx --x --x root.adm /home drwx r-x --x root.adm /initrd drwx r-x r-x root.root /lib drwx r-x --x root.adm /lost+found drwx r-x r-x root.root /mnt drwx r-x --- root.adm /opt drwx r-x --x root.root /proc dr-x r-x r-x root.root /root drwx --- --- root.root /sbin drwx r-x --x root.adm /swap drwx r-x r-x root.root /tmp drwx rwx -wt root.root /usr drwx r-x --x root.adm Uwaga: wewnątrz /usr katalogi mają drwxr-x--x poza domyślnie ustawionymi /usr/doc i /usr/man) /var drwx r-x r-x root.root Uwaga: wewnątrz /var podkatalog /var/log musi posiadać drwx --x --x Uwaga: wewnątrz /var podkatalog /var/portsentry powinien posiadać drwx --- --- Uwaga: wewnątrz /var pozostałe podkatalogi posiadają drwx r-x r-x (nie zwracamy uwagi na tmp, lock, catman, apache-mm, które można zostawić w zastanych opcjach)
Zaleca się, aby tylko root miał pełne prawa dostępu do następujących katalogów: /etc , /var/log/ , /sbin , /lib , /boot, /root oraz ew. /archiwum Natomiast grupa oraz pozostali użytkownicy mogą mieć jedynie prawo wykonywania, czyli wejścia (i uruchomienia pliku) bez prawa wyświetlania zawartości katalogu. Takie prawa ustalane są poleceniem chmod 711 /nazwakatalogu
Należy się w tym miejscu minimum informacji o przeznaczeniu katalogów. Przypominam, że zajmuję się dystrybucją Mandrake.
o /archiwum - bardzo przydatnym jest, aby na etapie dzielenia dysku (przed instalacją systemu) wydzielić osobną partycję 1-5 GB na archiwum. Oczywiście trzeba to zrobić ręcznie, gdyż instalator Mandrake nie utworzy /archiwum automatycznie ;-)
o /bin - miejsce umieszczenia plików wykonywalnych.Patrz też /usr/bin oraz /usr/local/bin
o /boot - zawiera jądro (Kernel) systemu.
o /dev - miejsce przechowywania plików specjalnych umożliwiajacych montowanie urządzeń (np. dysków, partycji, dyskietek, CD-ROMU). Po zamontowaniu ich - będzie można je uruchomić w katalogu /mnt
o /etc - m...
morl