it-swarm.it

Limitazione di un utente SSH / SCP / SFTP a una directory

Esiste un modo semplice per limitare un utente SCP/SFTP a una directory? Tutti i metodi che ho incontrato mi richiedono di impostare un carcere chroot copiando i binari, ma non credo che dovrebbe essere necessario.

37
user4518

SSH Supporta il chrooting nativo di un utente SFTP. Hai solo bisogno di fornire

ChrootDirectory

Nel tuo file di configurazione sshd e riavvia sshd.

Se stai solo facendo sftp, non devi fare altro. Sfortunatamente, questo non funziona per SCP. Per Shell interattiva, dovrai copiare i binari e/i nodi dev nel chroot.

Un esempio di configurazione, per un solo utente, testuser:

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

Alcune cose da tenere presenti, dalla pagina man sshd_config:

 Tutti i componenti del percorso devono essere directory di proprietà root che non siano 
 Scrivibili da nessun altro utente o gruppo. Dopo il chroot, sshd (8) cambia la directory di lavoro 
 Nella home directory dell'utente. 

Cerca ChrootDirectory in man sshd_config per ulteriori informazioni.

30
gabe.

Un chroot è un metodo ragionevolmente semplice. Poiché il sistema operativo dispone già di questa funzionalità di sicurezza, gli autori di demoni tendono a non tentare di reimplementarla.

Rssh viene fornito con una guida per l'impostazione di un carcere chroot. È nel file CHROOT nella distribuzione di origine. In poche parole, devi avere:

  • Alcuni file binari, copiati dalla radice: /usr/bin/scp, /usr/libexec/openssh/sftp-server, /usr/bin/rssh_chroot_helper
  • Biblioteche ({/usr,}/lib/lib*.so.[0-9]) che usano, allo stesso modo copiati
  • A /etc/passwd (molto probabilmente non una copia ma derivata dal master)
  • Alcuni dispositivi: /dev/null, /dev/tty e anche un /dev/log socket per la registrazione (e devi dire al tuo demone syslog di ascoltare su quel socket)

Suggerimento extra che non è nella documentazione di rssh: se hai bisogno di alcuni file per essere accessibili in una prigione chroot, puoi usare bindfs o Linux mount --bind per creare gerarchie di directory aggiuntive dall'esterno della jail. bindfs consente alla directory rimontata di disporre di autorizzazioni più restrittive, ad esempio di sola lettura. (mount --bind no a meno che non applichi una patch del kernel; Debian ha incluso questa patch da East Lenny ma la maggior parte delle altre distribuzioni non lo hanno fatto dal 2011.)

Potresti voler guardare scponly (o più recentemente, rssh ); è essenzialmente una shell di login che può essere solo utilizzabile per avviare scp o il sottosistema sftpd. Nella variante scponlyc esegue un chroot prima di attivare il sottosistema in questione.

7
Shadur