Ograniczanie użytkownika SSH / SCP / SFTP do katalogu


36

Czy istnieje prosty sposób na ograniczenie użytkownika SCP / SFTP do katalogu? Wszystkie metody, na które natknąłem się, wymagają ode mnie skonfigurowania więzienia chroot poprzez skopiowanie plików binarnych, ale nie uważam, że powinno to być konieczne.

Odpowiedzi:


29

SSH Obsługuje natywnie chrootowanie użytkownika SFTP. Musisz tylko dostarczyć

ChrootDirectory

W pliku konfiguracyjnym sshd zrestartuj sshd.

Jeśli tylko używasz sftp, nie musisz nic więcej robić. Niestety nie działa to dla scp. Aby uzyskać interaktywną powłokę, musisz skopiować pliki binarne i / dev węzły do ​​chroot.

Przykładowa konfiguracja tylko dla jednego użytkownika testuser:

Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp

Kilka rzeczy, o których należy pamiętać, ze strony podręcznika sshd_config:

    Wszystkie składniki nazwy ścieżki muszą być katalogami będącymi własnością administratora, a nie katalogami
    zapisywalny przez dowolnego innego użytkownika lub grupę. Po chroot, sshd (8) zmienia
    katalog roboczy do katalogu domowego użytkownika.

Wyszukaj ChrootDirectory w man sshd_config, aby uzyskać więcej informacji.


2
Zauważ, że część, która zaczyna się od „Dopasuj test użytkownika”, musi znajdować się na KONIEC pliku, ponieważ będzie zawierać wiersze konfiguracji tylko wtedy, gdy użytkownik jest „testser” od tego momentu.
— Magnus

1
Czy możliwe jest także Chroot tylko dla protokołu SFTP, ale nadal pozwala na normalne połączenia SCP?
— lanoxx

1
Na moim komputerze Ubuntu 14.04 konieczna była także zmiana Subsystem sftp /usr/lib/openssh/sftp-serverlinii naSubsystem sftp internal-sftp -f AUTH -l VERBOSE
— częściowo

@Magnus lub do innej Matchsekcji.
— roaima,

12

Chroot to dość prosta metoda. Ponieważ system operacyjny ma już tę funkcję bezpieczeństwa, autorzy demonów zwykle nie próbują jej ponownie wdrożyć.

Rssh zawiera przewodnik na temat zakładania więzienia chroot. Jest w CHROOTpliku w dystrybucji źródłowej. Krótko mówiąc, musisz mieć:

  • Kilka binarne, kopiowane z korzenia: /usr/bin/scp, /usr/libexec/openssh/sftp-server,/usr/bin/rssh_chroot_helper
  • Biblioteki ( {/usr,}/lib/lib*.so.[0-9]), których używają, również zostały skopiowane
  • A /etc/passwd(całkiem możliwe, że nie kopia, ale pochodząca od wzorca)
  • Kilka urządzeń: /dev/null, /dev/tty, a także /dev/loggniazdo do logowania (a trzeba powiedzieć demona syslog nasłuchuje na tym gnieździe)

Dodatkowa wskazówka, której nie ma w dokumentacji rssh: Jeśli potrzebujesz dostępu do niektórych plików w więzieniu chroot, możesz użyć bindfs lub Linuxa, mount --bindaby stworzyć dodatkowe hierarchie katalogów spoza więzienia. bindfspozwala przemontowanemu katalogowi mieć bardziej restrykcyjne uprawnienia, na przykład tylko do odczytu. ( mount --bindnie, chyba że zastosujesz łatkę do jądra; Debian zawarł tę łatkę od czasu wydania East Lenny, ale większość innych dystrybucji nie miała tego w 2011 roku.)


7

Możesz spojrzeć na scponly (lub ostatnio rssh ); jest to w zasadzie powłoka logowania, której można użyć tylko do uruchomienia scp lub podsystemu sftpd. W scponlycwariancie wykonuje chroot przed aktywacją danego podsystemu.


scponly wydaje się przestarzały, przynajmniej w Ubuntu
— tobixen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.