Jak mogę chroot połączeń ssh?

20

Chciałbym skonfigurować więzienie chroot dla większości (nie wszystkich) użytkowników logujących się przez SSH. Słyszałem, że jest to możliwe dzięki najnowszym wersjom openssh, ale nie byłem w stanie dowiedzieć się, jak to zrobić. Poradniki mówią o łataniu starej wersji, a łatka nie jest już dostępna.

Prowadzę debian etch.

Malfist
źródło

Odpowiedzi:

13

Używam rssh do tego celu.

Masz rację, istnieje nowy sposób na zrobienie tego i jest to wbudowana funkcja najnowszych wersji ssh.

Oto artykuł na temat Nieumarłych .

cstamas
źródło
6

Musiałem tylko skonfigurować jednego użytkownika, który będzie mógł zalogować się za pośrednictwem ssh i ssh na inny serwer (który nie jest bezpośrednio połączony ze światem zewnętrznym). Powiązania cstamas i ericmayo były dobrym początkiem.

Zasadniczo dodałem następujące pliki do / etc / ssh / sshd_config:

Dopasuj mój użytkownik
  ChrootDirectory / chroot / myuser

Odtąd musiałem po prostu stworzyć środowisko chroot poniżej / chroot / myuser. Skopiowałem / bin / bash i / usr / bin / ssh i potrzebne biblioteki współdzielone (ldd je wyświetli). W przypadku większego środowiska prawdopodobnie sensowne byłoby skompilowanie statycznie połączonych wersji potrzebnych plików wykonywalnych.

Bash działał od razu, aby ssh działał, musiałem również utworzyć katalog .ssh, skopiować / etc / passwd, /etc/nsswitch.conf i / lib / libnss_ * i utworzyć / dev / null, / dev / tty i / dev / urandom przez mknod.

Marie Fischer
źródło
2
mkdir /chroot
mkdir -p /chroot/home/<user_name>

mkdir /chroot/home/<user-name>/bin  
cp -pr /bin/bash /chroot/home/<user_name>/bin/.  
cp -pr /bin/ls /chroot/home/<user_name>/bin/.  
cp -pr /lib64 /chroot/home/<user_name>/.

Musisz edytować plik / etc / sshd_config i dodać

ChrootDirectory /chroot/%h

I zrestartuj demona sshd.

Podsumowując, uważam, że sftp jest lepszą opcją.

Znalazłem też ten adres URL, jeśli jest pomocny.

http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229

Soham Chakraborty
źródło
1

Jeśli używasz uwierzytelniania za pomocą klucza publicznego, możesz użyć opcji „polecenie” w autoryzowanych kluczach, aby skonfigurować więzienie chroot.

~ / .ssh / Author_keys:

command="/path/to/the/chroot/script" ssh-dss keydata.....keydata... user@host
UloPe
źródło
Nie używam uwierzytelniania za pomocą klucza publicznego, uwierzytelnianie odbywa się za pomocą hasła i nazwy użytkownika
Malfist
0

O ile wiem, nowe wersje OpenSSH zezwalają tylko na chroot dla połączeń SFTP. Próbowałem i to działa. Ale dla SSH rozwiązaniem jest łatka chrootssh. Przeglądam stronę SourceForge i nie ma żadnych plików, więc myślę, że nie jest już dostępna.

W przypadku Debian Etch jest tu kilka plików: http://debian.home-dn.net/etch/ssh/

Istnieją inne rozwiązania tutaj: http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html , w tym chrootssh.

hdanniel
źródło
-1 Niestety, Twoja odpowiedź była poprawna lata temu, kiedy ją napisałeś, ale już nie jest.
Chris S