Alternatywne metody uzyskania dostępu do linuksowych systemów operacyjnych
Wstęp
W niniejszym artykule przedstawione zostaną wybrane alternatywne sposoby uzyskania dostępu dostępu do systemów
linuksowych. Przedstawione metody mogą być bardzo przydatne dla administratorów systemów linuksowych w przypadku
awarii systemu operacyjnego czy też zagubienia hasła roota. Metody te mają jedną wspólną cechę, tzn.
wymają uzyskania fizycznego dostępu do komputera. Część z nich wymaga także dostępu do BIOSu, ponieważ konieczna
jest modyfikacja kolejności rozruchu napędów.
Poniżej przedstawione zostaną najbardziej interesujące przykłady.
Uruchamianie systemu w trybie jednego użytkownika
Czasem zdarza się, iż z pewnych powodów system operacyjny się nie uruchamia. Z opisaną sytuacją można spotkać
się np. wówczas, gdy serwer X zostanie uszkodzony, lub też jakikolwiek inny program, uruchamiany w trakcie
startu systemu, się zatrzyma. Rozwiązaniem problemu jest uruchomienia systemu w tzw. trybie jednego użytkownika
(ang. single user mode). W trybie tym program init uruchamia system z wyłącznie jedną konsolą,
co powoduje, że z systemu korzystać może jedynie jeden użytkownik. Skrypty rozruchowe systemu dla trybu
jednego użytkownika napisane są tak, aby uruchomić system bez żadnych dodatkowych programów startujących
w trakcie normalnego trybu wielu użytkowników (demony, serwer X, etc.). Zapewnia to, iż system operacyjny
będzie pracował z minimalną ilością procesów oraz na ogół pozwoli administratorowi na lokalizację problemu
oraz jego usunięcie. Aby uruchomić system w trybie jednego użytkownika należy do jądra przekazać opcję
single
, tudzież init 1
. Zarówno bootloader LILO, jak i GRUB
umożliwiają w łatwy sposób przekazywanie parametrów do jądra. W przypadku tego drugiego programu
wystarczy wcisnąć klawisz e, zaznaczywszy uprzednio właściwy system operacyjny oraz jądro,
po czym należy wpisać parametry, które mają zostać przekazane do jądra.
Parametr init
jest również ciekawy z innego powodu. Dzięki niemu można jednorazowo
zmienić poziom uruchomienia systemu (ang. runlevel). Np. podczas, gdy standardowo system
uruchamia się na poziomie 5., a więc w trybie wielu użytkowników z uruchomieniem środowiska graficznego,
za pomocą parametru init 3
doprowadzimy do tego, że system uruchomi się na poziomie 3.,
a więc w trybie wielu użytkowników, ale bez uruchomienia środowiska graficznego.
Uruchomienie systemu bez programu init
Gdy hasło roota systemu zostanie zapomniane, nie będzie możliwości uruchomienia systemu
w trybie jednego użytkownika, gdyż program init dba o to, aby przed uruchomieniem
interpretera powłoki użytkownik się zalogował do systemu. Można tę przeszkodę jednak ominąć.
Wystarczy w tym celu przekazać jądru informację o tym, jaki program zamiast init, ma
zostać uruchomiony po załadowaniu jądra. Jeśli chcemy, aby jądro załadowało powłokę BASH,
należy przekazać następujący parametr init=/bin/bash
. Spowoduje to, iż uruchomiony
zostanie interpreter poleceń beż żadnego procesu logowania. Od tej pory można pracować w systemie
plików, jednakże należy pamiętać o jednym istotnym fakcie. Otóż jądro montuje główny system plików
w trybie tylko do odczytu, toteż jeśli planujemy modyfikację (np. modyfikacja hasła użytkownika
za pomocą programu passwd), usuwanie lub dodawanie nowych plików należy go przemontować
w trybie do zapisu. W tym celu należy użyć komendy mount / -o rw,remount
. Warto
także po zakończeniu zmian ponownie przemontować system plików do trybu tylko do odczytu,
gdyż zapewni to, iż w momencie następnego uruchomienia systemu operacyjnego nie pojawi się komunikat,
iż system plików nie został prawidłowo odmontowany. W tym celu należy użyć rozkazu
mount / -o ro,remount
.
Uruchomienie systemu ratunkowego
Może się okazać tak, iż nie będzie dostępne przekazywanie parametrów do jądra.
Może to być spowodowane np. awarią bootloadera lub też jego zabezpieczenia hasłem, które
zostało zapomniane. Ratunkiem w takiej sytuacji jest skorzystanie z płyty ratunkowej systemu
operacyjnego, który jest zainstalowany na komputerze. W takiej sytuacji należy zmienić
w BIOS-ie sekwencję rozruchową systemu tak, aby rozruch komputera następował z napędu płyt CD/DVD.
Należy uruchomić opcję trybu ratunkowego (ang. rescue mode), która spowoduje załadowanie
systemu operacyjnego z płyty CD/DVD bez uruchamiania demonów oraz środowiska graficznego.
Następnie należy zamontować system plików na którym zainstalowany został system operacyjny
do którego chcemy uzyskać dostęp. Jeśli system ten znajduje się na 7. partycji pierwszego
dysku twardego SATA należy użyć polecenia mount /dev/sda7 /mnt/system
, przy czym
należy wcześniej się upewnić, czy kartoteka /mnt/system
istnieje. W ten sposób
w kartotece, w której został zamontowany system plików uzyskamy dostęp do plików partycji.
Będziemy mogli zmienić pliki systemowe, jednakże zmiana hasła roota nie będzie możliwa,
gdyż plik /etc/shadow
, przechowuje hasła w sposób zabezpieczony, tzn. są one
specjalnie haszowane. Aby zmienić hasło należy wykorzystać pewien trik. Należy użyć
polecenia chroot /mnt/system
, które spowoduje, iż dla aktualnego procesu
oraz jego procesów potomnych, korzeń systemu plików będzie znajdował się w kartotece
/mnt/system
. Dzięki temu, uruchamiając jakiekolwiek programy, będą odnosić
się do plików systemu operacyjnego, który chcemy modyfikować. Od tej pory możliwa staje
się modyfikacja hasła za pomocą programu passwd.
Po zakończeniu pracy w środowisku chrootowanym, należy pamiętać o odmontowaniu systemu plików.
Zabezpieczenia
Przedstawione metody mogą być bardzo przydatne administratorowi w przypadku awarii systemu. Niestety mogą być one także wykorzystane do nieautoryzowanego dostępu do systemu operacyjnego przez niepowołane osoby. Czy istnieją zatem sposoby zabezpieczenia się przed wymienionymi metodami?
Przed dwiema pierwszymi metodami można się uchronić, zabezpieczając hasłem możliwość
edycji parametrów, jakie mają zostać przekazane do jądra systemu operacyjnego. Bootloadery
LILO oraz GRUB dają taką możliwość. W przypadku tego drugiego należy w pliku
konfiguracyjnym /boot/grub/menu.lst
, do każdej sekcji opisu systemu operacyjnego,
który ma zostać zabezpieczony, dopisać linię password = "nasze_hasło"
.
Należy przy tym zadbać, aby plik ten nie mógł być czytany przez niepowołanych użytkowników.
Istniej także możliwość zapisania hasła w postaci haszu MD5, co znacznie podnosi
bezpieczeństwo poznania hasła w przypadku odczytania zawartości pliku konfiguracyjnego
programu GRUB.
Mimo tak przygotowanych zabezpieczeń, możliwe będzie skorzystanie ze sposobu polegającego na uruchomieniu płyty ratunkowej. Przed tym sposobem można się zabezpieczyć w zasadzie na jeden sposób. Należy zablokować hasłem dostęp do BIOSu tak, aby nie było możliwości zmiany sekwencji rozruchowej systemu. Niestety takie zabezpieczenie jest bardzo słabe, gdyż w prosty sposób można usunąć hasło do BIOSu (chociażby za pomocą zworki CMOS Clear znajdującej się na płycie głównej, czy też wyjęciem baterii). Ponadto niektóre BIOSy mają opcję wyboru napędu z jakiego ma zostać wykonany rozruch za pomocą pewnego klawisza. W takim wypadku użytkownik nie jest proszony o podanie hasła! Dla przykładu w nowych BIOSach AMIBIOS firmy American Megatrends wystarczy użyć klawisza ESC, aby pojawiło się menu wyboru napędu z jakiego ma zostać wykonany rozruch. To powoduje, że jedynym sesnowym sposobem ochrony jest całkowite uniemożliwienie intruzowi fizycznego dostępu do komputera.
Wnioski
Przedstawione w niniejszym artykule sposoby uzyskania dostępu do systemów linuksowych pokazują, iż systemy te nie są zbyt bezpieczne jeśli chodzi o możliwość fizycznego uzyskania dostępu do komputera. Sprawa wygląda zupełnie inaczej, jeśli pod uwagę weźmiemy dostęp zdalny i próby włamania za pomocą różnych usług (np. http, ftp, ssh). W przypadku, gdy zainstalowane oprogramowanie jest na bieżąco uaktualniane, systemy linuksowe okazują się być bardzo bezpieczne. Niemniej jednak należy pamiętać o odpowiednim zabezpieczeniu, w szczególności serwerów przed niepowołanymi osobami, gdyż powyższe przykłady są dowodem na to, iż niepowołana osoba, która uzyska fizyczny dostęp do komputera może uzyskać prawa administratora, a tym samym mieć nieograniczoną kontrolę w systemie operacyjnym. Dlatego też należy stosować odpowiednie zabezpieczenia, np. obudowy zamykane na klucz, szafy krosownicze z dobrymi zamkami, czy też umieszczanie serwerów w specjalnych pomieszczeniach, do których dostęp mogą mieć tylko uprawnione osoby.
Data artykułu: 2007-10-11.
Waszym zdaniem...
Na razie nie ma jeszcze żadnych komentarzy. Bądź pierwszy!
Komentarz nie powinien zawierać tagów HTML. Zostaną one automatycznie usunięte.