GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare SFTP in chroot in Linux

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 /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

Linux
  1. Come aggiornare un collegamento simbolico Linux

  2. Come caricare o scaricare file/directory utilizzando sFTP in Linux

  3. Come rinominare una directory su Linux

  4. Come configurare Chroot SFTP in Linux (consenti solo SFTP, non SSH)

  5. Come ottenere la dimensione della directory in Linux

Come contare i file nella directory in Linux

Come configurare l'ultimo Oracle OpenJDK su Linux

Come eseguire tutti gli script in una directory in Linux

Come copiare la directory su Linux

Come contare i file nella directory su Linux

Come abilitare sFTP in un VPS Linux?