Come limitare gli utenti SFTP alle directory home utilizzando chroot Jail
In questo tutorial discuteremo come limitare gli utenti SFTP alle loro directory home o a directory specifiche. Ciò significa che l'utente può accedere solo alla rispettiva directory home, non all'intero file system.
Limitare le directory home degli utenti è vitale, soprattutto in un ambiente server condiviso, in modo che un utente non autorizzato non possa sbirciare nei file e nelle cartelle dell'altro utente.
Importante: tieni inoltre presente che lo scopo di questo articolo è fornire solo l'accesso SFTP, non gli accessi SSH, seguendo questo articolo avrai le autorizzazioni per eseguire il trasferimento di file, ma non è consentito eseguire una sessione SSH remota.
Lettura consigliata: limita l'accesso degli utenti SSH a determinate directory utilizzando il jail chroot
Il modo più semplice per farlo è creare un ambiente jail chroot per l'accesso SFTP. Questo metodo è lo stesso per tutti i sistemi operativi Unix/Linux. Utilizzando l'ambiente chroot, possiamo limitare gli utenti alla loro directory home o a una directory specifica.
Limita gli utenti alle directory home
In questa sezione creeremo un nuovo gruppo chiamato sftpgroup e assegneremo la proprietà e le autorizzazioni corrette agli account utente. Esistono due scelte per limitare gli utenti alla home o a directory specifiche, vedremo entrambe le modalità in questo articolo.
Crea o modifica utenti e gruppi
Limitiamo l'utente esistente, ad esempio tecmint
, alla sua directory home denominata /home/tecmint
. Per questo, devi creare un nuovo gruppo sftpgroup utilizzando il comando groupadd come mostrato:
groupadd sftpgroup
Successivamente, assegna l'utente 'tecmint' al gruppo sftpgroup.
usermod -G sftpgroup tecmint
Puoi anche creare un nuovo utente utilizzando il comando useradd, ad esempio senthil
e assegnare l'utente al gruppo sftpusers.
adduser senthil -g sftpgroup -s /sbin/nologin
passwd tecmint
Modifica il file di configurazione SSH
Apri e aggiungi le seguenti righe al file di configurazione /etc/ssh/sshd_config
.
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory /home
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
Salva ed esci dal file, riavvia il servizio sshd per rendere effettive le nuove modifiche.
systemctl restart sshd
OR
service sshd restart
Se esegui il chroot di più utenti nella stessa directory, dovresti modificare i permessi della directory home di ciascun utente per impedire a tutti gli utenti di sfogliare le directory home degli altri utenti.
chmod 700 /home/tecmint
Verifica l'accesso degli utenti SSH e SFTP
Ora è il momento di verificare l'accesso da un sistema locale. Prova a ssh il tuo sistema remoto dal tuo sistema locale.
ssh [email
Qui,
- tecmint: nome utente del sistema remoto.
- 192.168.1.150 – Indirizzo IP del sistema remoto.
Output di esempio:
[email 's password:
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.
Quindi, accedi al sistema remoto utilizzando SFTP.
sftp [email
Output di esempio:
[email 's password:
Connected to 192.168.1.150.
sftp>
Controlliamo la directory di lavoro corrente:
sftp> pwd
Remote working directory: /
sftp> ls
tecmint
Qui, tecmint
è la directory home. Passa alla directory tecmint e crea i file o le cartelle di tua scelta.
sftp> cd tecmint
Remote working directory: /
sftp> mkdir test
tecmint
Limita gli utenti a una directory specifica
Nel nostro esempio precedente, limitiamo gli utenti esistenti alla directory home. Ora vedremo come limitare un nuovo utente a una directory personalizzata.
Crea gruppo e nuovi utenti
Crea un nuovo gruppo sftpgroup
.
groupadd sftpgroup
Successivamente, crea una directory per il gruppo SFTP e assegna le autorizzazioni per l'utente root.
mkdir -p /sftpusers/chroot
chown root:root /sftpusers/chroot/
Successivamente, crea nuove directory per ciascun utente, a cui avrà pieno accesso. Ad esempio, creeremo l'utente tecmint
e la sua nuova directory home con l'autorizzazione di gruppo corretta utilizzando la seguente serie di comandi.
adduser tecmint -g sftpgroup -s /sbin/nologin
passwd tecmint
mkdir /sftpusers/chroot/tecmint
chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
chmod 700 /sftpusers/chroot/tecmint/
Configura SSH per l'accesso SFTP
Modifica o aggiungi le seguenti righe alla fine del file:
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory /sftpusers/chroot/
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
Salvare ed uscire dal file. Riavviare il servizio sshd per rendere effettive le modifiche salvate.
systemctl restart sshd
OR
service sshd restart
Questo è tutto, puoi verificare accedendo al server SSH e SFTP remoto utilizzando il passaggio fornito sopra in Verifica accesso SSH e SFTP.
Tieni presente che questo metodo disabiliterà l'accesso alla shell, ovvero non potrai accedere alla sessione della shell del sistema remoto utilizzando SSH. È possibile accedere ai sistemi remoti solo tramite SFTP ed eseguire il trasferimento di file da e verso i sistemi locali e remoti.
Conclusione
Ora sai come limitare le directory home degli utenti utilizzando un ambiente Chroot in Linux. Se lo trovi utile, condividi questo articolo sui tuoi social network e facci sapere nella sezione commenti qui sotto se esistono altri metodi per limitare le directory home degli utenti.