Chroot SFTP users
Obiettivo
l’obiettivo è quello di configurare degli utenti che possano accedere in ssh senza uscire dalla loro home.
Devono poter pubblicare i loro file, quindi i virtual host punteranno a tali home directory
Requisiti
- ssh >= 4.7
syna@serverweb-prod:/home$ aptitude show openssh-server
Pacchetto: openssh-server
Stato: installato
Installato automaticamente: no
Versione: 1:5.1p1-6ubuntu2
- Apache 2 con moduserdir
root@serverweb-prod:/etc/apache2/mods-enabled# aptitude show apache2
Pacchetto: apache2
Stato: installato
Installato automaticamente: no
Versione: 2.2.12-1ubuntu2.2
Implementazione
apache
utilizziamo il mod_userdir di apache per pubblicare i files presenti nelle directory pubbliche di ogni utente…
root@serverweb-prod:/# a2enmod userdir
Enabling module userdir.
Run '/etc/init.d/apache2 restart' to activate new configuration!
root@serverweb-prod:/etc/apache2/mods-enabled# /etc/init.d/apache2 restart
* Restarting web server apache2 ... waiting [ OK ]
sshd
Utilizzo le features di SSH per effettuare la jail…
Linked sftp-server into sshd. The internal sftp server is used when the command “internal-sftp” is specified in a Subsystem or ForceCommand declaration. When used with ChrootDirectory, the internal sftp server requires no special configuration of files inside the chroot environment.
Verranno imprigionati tutti gli utenti che appartengono al gruppo sftp
# groupadd sftp
Modifica alla configurazione di SSH
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
# Deve essere in coda al file di configurazione
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
Aggiungere nuovi utenti
aggiungere come al solito gli utenti con il comando adduser :
# adduser walter
Aggiungiamo il nuovo utente al gruppo sftp
# usermod -G sftp walter
Disabilitiamo la shell
# usermod -s /bin/false walter
NB: l’home directory deve appartenere a root altrimenti internal-sftp non puo’ funzionare correttamente
# chown root:root /home/walter
# chmod 0755 /home/walter
sarà sufficente creare con i diritti dell’utente una directory “public_html” o “www” dove l’utente metterà i file pubblici…
# mkdir /home/walter/public_html
# chown walter:walter /home/walter/public_html
2 risposte
mi piace molto, sintetico e diretto al punto
Ottimo, veloce e immediato con pochi fronzoli!