Questa guida spiega come configurare Chrooted SFTP in Linux per limitare l'accesso degli utenti SSH alla home directory oa qualsiasi directory particolare. Per dirla in altre parole, forzeremo gli utenti a una directory specifica e imposteremo la loro shell su /bin/nologin
o qualche altra shell che nega l'accesso a un login ssh. Una volta configurato l'SFTP con chroot, gli utenti possono accedere solo alla directory home assegnata, ma non all'intero filesystem
L'abilitazione dell'accesso SFTP in chroot offre i seguenti vantaggi:
- Consenti agli utenti di connettersi solo tramite SFTP, ma non consentire loro di connettersi tramite SSH.
- Limita una sessione utente SSH alla sua home directory oa una directory specifica a tua scelta.
- Limita l'accesso SSH a determinati utenti e consenti comunque loro di trasferire file tra sistemi locali e remoti.
- Nega l'accesso dell'utente all'intero file system.
Ora, andiamo avanti e configuriamo Chrooted SFTP per limitare gli utenti SSH alla home directory e/o a qualsiasi altra directory con Chrooted jail in Linux.
Questa guida è ufficialmente testata sulle distribuzioni Debian 11 bullseye, Ubuntu 20.04 LTS e Ubuntu 18.04 LTS. Tuttavia, i passaggi indicati di seguito dovrebbero funzionare su qualsiasi distribuzione Linux che supporta openSSH .
Impostazione SFTP con chroot in Linux
A partire dalla versione 4.9, openSSH ha una funzionalità nota come sottosistema interno-sftp che consente solo l'accesso SFTP, ma non l'accesso SSH. Pertanto, gli utenti possono accedere solo ai dati dal server, ma non possono accedervi tramite SSH.
Crea directory Chrooted
Innanzitutto, crea una directory con chroot usando il comando:
$ sudo mkdir /sftp
Rendi questa directory di proprietà di root
utente che utilizza il comando:
$ sudo chown root:root /sftp/
In questa directory, crea directory separate per ogni utente, come /sftp/user1
, /sftp/user2
e /sftp/user3
e così via.
Ai fini di questa guida, creerò una directory chiamata ostechnix
sotto /sftp
directory.
$ sudo mkdir /sftp/ostechnix
Questa è la directory in cui gli utenti possono salvare i dati. Inoltre, gli utenti non possono andare oltre questa directory. È proprio come il loro $HOME directory.
Crea un gruppo sftp e assegna gli utenti a quel gruppo
Ora, dobbiamo creare gli utenti per poter accedere alla directory chrooted SFTP.
Crea un gruppo chiamato sftponly
come mostrato nel comando seguente:
$ sudo groupadd sftponly
Quindi, crea nuovi utenti SFTP o assegna utenti esistenti a "sftponly"
gruppo come mostrato di seguito.
Fammi creare un nuovo utente, ad esempio senthil e assegnalo al "sftponly"
gruppo. E poi, imposta la sua home directory come /sftp/ostechnix
e la shell predefinita come /sbin/nologin
.
Possiamo farlo usando il seguente comando online:
$ sudo useradd -g sftponly -d /ostechnix -s /sbin/nologin senthil
Imposta la password per l'utente appena creato usando il comando:
$ sudo passwd senthil
Per modificare l'utente esistente, usa "usermod"
invece di "useradd"
comando come di seguito:
$ sudo usermod -g sftponly -d /ostechnix -s /sbin/nologin senthil
Assegna i permessi appropriati alla directory chroot
Devi assegnare le autorizzazioni appropriate agli utenti SFTP per accedere alla loro directory HOME come di seguito.
$ sudo chown senthil:sftponly /sftp/ostechnix
$ sudo chmod 700 /sftp/ostechnix/
Gli altri utenti SFTP non possono accedere a questa directory.
Allo stesso modo, assegna le autorizzazioni appropriate anche a tutti gli altri utenti SFTP.
Download consigliato - Ebook gratuito:"Impara Linux in 5 giorni"
Configura SFTP con chroot
Modifica /etc/ssh/sshd_config
file:
$ sudo vi /etc/ssh/sshd_config
Trova e commenta le righe seguenti (ad es. aggiungi l'asterisco # davanti ad esso per commentare).
#Subsystem sftp /usr/libexec/openssh/sftp-server
In alcune distribuzioni, ad esempio Ubuntu 18.04 LTS , trova e commenta la seguente riga:
#Subsystem sftp /usr/lib/openssh/sftp-server
Quindi, aggiungi le seguenti righe alla fine del file:
Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /sftp/ X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Configura SFTP con chroot
Se vuoi limitare gli utenti a $HOME
directory, sostituisci semplicemente /sftp
con /home
nel codice sopra. Assicurati di aver specificato il percorso corretto della directory sftp. Premi ESC e digita :wq
per salvare il file ed uscire.
Riavvia ssh
servizio per aggiornare le modifiche.
$ sudo systemctl restart sshd
Ora, prova a eseguire l'SSH su questo sistema da qualsiasi altro sistema sulla rete utilizzando l'utente sftp (ovvero senthil nel nostro caso).
$ ssh [email protected]1
Verrà visualizzato il seguente messaggio di errore.
[email protected]'s password: This service allows sftp connections only. Connection to 192.168.122.181 closed.
Qui, 192.168.122.181 è l'indirizzo IP del mio sistema Debian remoto in cui ho configurato SFTP.
Puoi accedere al sistema remoto solo utilizzando sftp come mostrato di seguito.
$ sftp [email protected] [email protected]'s password: Connected to 192.168.43.2. sftp>
Vedere? L'utente "senthil" può connettersi tramite sftp, ma non tramite ssh.
Per conoscere la directory di lavoro corrente, usa 'pwd'
comando:
sftp> pwd Remote working directory: /ostechnix sftp>
Imposta SFTP con chroot in Linux
Comandi SFTP di base
Possiamo connetterci usando una porta alternativa usando -p
bandiera.
$ sftp -P <port_number> [email protected]_host
Per trasferire il file remoto al sistema locale, procedere come segue:
sftp> get /path/remote_file
Possiamo trasferire il file locale al sistema remoto usando il comando:
sftp> put /path/local_file
Per trasferire ricorsivamente la cartella remota al sistema locale:
sftp> get -R /path/remote_folder
Per visualizzare l'elenco dei file sul computer locale:
sftp> lls
Per visualizzare l'elenco dei file sulla macchina remota:
sftp> ls
Per maggiori dettagli sull'utilizzo di sftp, fare riferimento alle pagine di manuale.
$ man sftp
Conclusione
In questa guida abbiamo discusso di come configurare e configurare SFTP con chroot nei sistemi operativi Linux come Debian e Ubuntu.
Lettura consigliata:
- Come cambiare la porta FTP predefinita in una porta personalizzata
- Installa il server VSFTPD in Ubuntu
- Server VSFTPD sicuro con crittografia TLS/SSL in Ubuntu
- Configura il server FTP passo dopo passo in CentOS
- FTP_Manager:un semplice script per installare e gestire il server FTP in CentOS