SSH CHROOT – Debian

CHROOT –  change root, czyli zmień katalog główny na wskazany przez Ciebie. Metoda ta jest często używana w LIVE CD do wykonania czegoś na systemie którego nie można uruchomić. Dobry zastosowaniem jest zamknięcie kogoś w „klatce”. Właśnie te podejście opiszę.

Systemy linux głównie są stworzone do pracy konsolowej, dlatego często loguje się do systemów linux poprzez ssh. Nieraz jest potrzeba wydzielenia kawałka systemu użytkownikom, i dlatego można spreparować tak system aby ich zamknąć w tym kawałku systemu.

Zaczynamy od skonfigurowania ssh tak żeby było można zamknąć użytkownika, ja wybiorę sposób taki że każdy z danej grupy będzie zamknięty w chroot. Grupa jak się łatwo domyślić będzie miała nazwę chroot.

Dodajemy grupę poprzez:

addgroup chroot

edytujemy plik /etc/ssh/sshd_config i dopisujemy:

Match Group chroot
ChrootDirectory /sciezka/gdzie/chroot/
ForceCommand internal-sftp
AllowTcpForwarding no

Teraz restart serwera ssh:

invoke-rc.d ssh restart

i mamy już przygotowane ssh.

Przechodzimy teraz do konfiguracji konta, dodaje użytkownika:

adduser test

następnie podajemy hasło, potwierdzamy hasło, wpisujemy imię i nazwisko użytkownika i resztę potrzebnych danych, na samym końcu zatwierdzamy użytkownika. Teraz dodajemy użytkownika do grupy chroot:

adduser test chroot

można sprawdzić czy odpowiednio nadane są uprawnienie:

#id test
uid=1001(test) gid=1007(test) grupy=1007(test),1006(chroot)

Od tej chwili user test jak będzie się logował to system będzie starał się go zamknąć w naszym chroocie.

!!! UWAGA !!! jeśli system nie będzie mógł zalogować do chroot to spróbuje to zrobić do normalnego systemu, zatem trzeba zabezpieczyć się przed tym ale to potem.

!!! UWAGA !!! katalog główny musi mieć właściciela root:root i uprawnienia 755

Następny krok to przygotowanie struktury plików, dla ułatwienia dalszego opisu zakładam że zamykamy userów w katalogu /chroot:

cd /chroot
mkdir -p {bin,dev,lib,home,tmp,var/tmp}
cp -p /bin/bash bin/
cp -p /lib/{libncurses.so.5,ld-linux.so.2} lib/
cp -p /lib/i686/cmov/{libdl.so.2,libc.so.6} lib/
mknod dev/null c 1 3
mknod dev/zero c 1 5
chmod 0666 dev/{null,zero}
chmod 777 tmp
chmod 777 var/tmp
cp -rp /home/test home/

Teraz możemy sprawdzić czy uda nam się zalogować jako test.