|
1.
Chrootowanie
Zamknięcie usługi (użytkownika) w chroocie uniemożliwi dostęp do plików
i informacji, do których dostępu mieć nie powinna, a także zamknie wiele z
możliwości uzyskania dostępu do konta roota tą drogą. Ponadto uruchomienie
usługi z konta użytkownika innego niż root (np. nobody, apache,
named) ograniczy włamywaczom dostęp, pozostawiając im do dyspozycji tylko
pliki przypisane do tych kont. Takie postępowanie uniemożliwi także
nieautoryzowany dostęp do konta w przypadku błędu związanego z bezpieczeństwem w
którejś z usług.
Niektóre usługi, takie jak np. pure-ftpd i bind posiadają
wbudowane możliwości zamykania się w chroocie. Jeśli jednak nie ma takiej
możliwości należy wykonać to samodzielnie. Oto prosty przykład tworzenia
środowiska chroot. Dla uproszczenia przetestujemy je przy pomocy basha.
Na początek tworzymy katalog /chroot przy pomocy polecenia
mkdir /chroot oraz wyszukujemy wszystkie biblioteki, z którymi bash jest
dynamicznie zlinkowany (jeśli skompilowano go z opcją -static można
pominąć ten krok).
Listę bibliotek używanych przez bash uzyskamy dzięki poleceniu:
Listing 1.1: Uzyskiwanie listy używanych bibliotek |
# ldd /bin/bash
libncurses.so.5 => /lib/libncurses.so.5 (0x4001b000)
libdl.so.2 => /lib/libdl.so.2 (0x40060000)
libc.so.6 => /lib/libc.so.6 (0x40063000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
|
Następnie tworzymy środowisko dla basha.
Listing 1.1: Tworzenie środowiska chroot dla basha |
# mkdir /chroot/bash
# mkdir /chroot/bash/bin
# mkdir /chroot/bash/lib
|
Później kopiujemy pliki używane przez bash (/lib) do
katalogu lib w chroocie oraz plik binarny bash do nowego
bin. Spowoduje to utworzenie kopii naszego środowiska, posiadającej
jednak nieco mniej możliwości. Po utworzeniu warto je wypróbować poleceniem
chroot /chroot/bash /bin/bash. Jeśli pokaże się znak zachęty w postaci
/ to znaczy, że wszystko działa prawidłowo. W przeciwnym wypadku
zostaniemy poinformowani o braku pewnych plików. Niektóre współdzielone
biblioteki są wzajemnie od siebie zależne.
Łatwo zauważyć, że wewnątrz chroota nie działa nic poza echo.
Spowodowane jest to tym, że w naszym nowym środowisku jedynym dostępnym
poleceniem jest bash, a echo jest jego wbudowaną funkcją.
Zamykanie usług w chroocie wygląda bardzo podobnie. Jedyną różnicą jest
to, że usługom potrzebne są czasem urządzenia i pliki konfiguracyjne z
/etc. Należy je więc po prostu skopiować do nowego środowiska
(urządzenia kopiuje się poleceniem cp -a), należy również odpowiednio
wyedytować skrypt startowy zanim skorzysta się z nowego środowiska. Czasem
ciężko znaleźć wszystkie urządzenia i pliki jakich wymaga dana usługa, wtedy
bardzo przydatny jest program strace. Uruchamiamy usługę poprzez
/usr/bin/strace i szukamy wszystkich odwołań open, read, stat i connect.
Zwykle naprowadza to na ślad wszystkich plików i urządzeń, które należy
skopiować. W większości przypadków wystarczy skopiowanie pliku passwd (należy z
niego usunąć wszystkie linie dotyczące użytkowników nie mających nic wspólnego z
usługą) oraz /dev/zero, /dev/log i
/dev/random.
1.
User Mode Linux
Kolejnym dobrym sposobem zabezpieczenia środowiska pracy jest uruchomienie
wirtualnej maszyny. Taka maszyna to proces działający jako nakładka na właściwy
system operacyjny, na który składa się drugi OS i pewna konfiguracja urządzeń,
tworząca złudzenie, że jest właściwym komputerem. Korzyści z punktu widzenia
zabezpieczeń systemu są takie, że w przypadku włamania zostanie pokonana tylko
wirtualna maszyna, a właściwy system operacyjny pozostanie nienaruszony.
Więcej informacji o konfigurowaniu User Mode Linux znajduje się w User Mode Linux Guide.
|