Korzystam ze stabilnej wersji Debiana i chcę ustanowić następujące środowisko dla użytkowników w mojej grupie „sftponly”:
- osadzony w więzieniu
- można przesyłać za pomocą SFTP
- może przesyłać z SCP
- nie można zalogować się interaktywnie za pomocą SSH
Z moich eksperymentów i badań wynika, że następująca zwrotka w sshd_config prowadzi mnie tam w 90%:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
To daje mi więziony SFTP i brak SSH, co jest dobre. Ale wyłącza również SCP, co jest mniej niż idealne, ponieważ sporo klientów to starsze, skrypty, które używają SCP zamiast SFTP (serwer, który zastępujemy, obsługuje oba protokoły), a ponieważ ci klienci nie są pod naszą kontrolą i łatwo zmodyfikowane, prawdopodobnie nie jest możliwe całkowite wyłączenie SCP.
Ma to sens, że ta konfiguracja wyłączyłaby SCP, ponieważ przychodzące połączenia SCP powodują, że sshd odradza proces `scp 'za pośrednictwem powłoki logowania użytkownika, tak jak ten użytkownik. Wydaje się, że to samo zwykle dotyczy SFTP, gdyby nie specjalny moduł obsługi „wewnętrznego sftp”.
Przypuszczam, że moje pytanie brzmi: czy istnieje sposób na uzyskanie takiego samego efektu jak „wewnętrzny-sftp”, ale w przypadku SCP, bez uciekania się do korzystania z narzędzi innych firm, takich jak scponly i rssh? Naprawdę fajną rzeczą w „Internal-sftp” jest to, że nie wymaga konfigurowania więzienia z plikami pomocniczymi lub radzenia sobie z potencjalnie możliwymi do wykorzystania plikami binarnymi setuid stron trzecich (w szczególności rssh ma historię exploitów).