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.
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.
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.)
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.
Subsystem sftp /usr/lib/openssh/sftp-server
linii naSubsystem sftp internal-sftp -f AUTH -l VERBOSE
Match
sekcji.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
CHROOT
pliku w dystrybucji źródłowej. Krótko mówiąc, musisz mieć:/usr/bin/scp
,/usr/libexec/openssh/sftp-server
,/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
), których używają, również zostały skopiowane/etc/passwd
(całkiem możliwe, że nie kopia, ale pochodząca od wzorca)/dev/null
,/dev/tty
, a także/dev/log
gniazdo 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 --bind
aby stworzyć dodatkowe hierarchie katalogów spoza więzienia.bindfs
pozwala przemontowanemu katalogowi mieć bardziej restrykcyjne uprawnienia, na przykład tylko do odczytu. (mount --bind
nie, 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.)źródło
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
scponlyc
wariancie wykonuje chroot przed aktywacją danego podsystemu.źródło