Ricerca nel sito web

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,

  1. tecmint: nome utente del sistema remoto.
  2. 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&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

Qui, tecmint è la directory home. Passa alla directory tecmint e crea i file o le cartelle di tua scelta.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt 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.