Gentoo Logo

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.

Zaktualizowano 15 grudnia 2005

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.