SFTP sta per Secure File Transfer Protocol / SSH File Transfer Protocol, è uno dei metodi più comuni utilizzati per trasferire file in modo sicuro su ssh dal nostro sistema locale al server remoto e viceversa. Il vantaggio principale di sftp è che non è necessario installare alcun pacchetto aggiuntivo eccetto "openssh-server ', nella maggior parte delle distribuzioni Linux il pacchetto 'openssh-server' è la parte dell'installazione predefinita. Un altro vantaggio di sftp è che possiamo consentire all'utente di utilizzare solo sftp e non ssh.
Recentemente è stato rilasciato Debian 10, nome in codice 'Buster', in questo articolo dimostreremo come configurare sftp con Chroot 'Jail' come ambiente in Debian 10 System. Qui l'ambiente simile a Chroot Jail significa che gli utenti non possono andare oltre le rispettive directory home o gli utenti non possono cambiare directory dalle loro directory home. Di seguito i dettagli del laboratorio:
- OS =Debian 10
- Indirizzo IP =192.168.56.151
Passiamo ai passaggi di configurazione SFTP,
Passo:1) Crea un gruppo per sftp usando il comando groupadd
Apri il terminale, crea un gruppo con un nome “sftp_users ” usando il comando groupadd sotto,
[email protected]:~# groupadd sftp_users
Passaggio:2) Aggiungi utenti al gruppo "sftp_users" e imposta i permessi
Nel caso in cui desideri creare un nuovo utente e desideri aggiungere quell'utente al gruppo "sftp_users", esegui il comando seguente,
Sintassi: # useradd -m -G sftp_users
Supponiamo che il nome utente sia "Jonathan"
[email protected]:~# useradd -m -G sftp_users jonathan
imposta la password usando il seguente comando chpasswd,
[email protected]:~# echo "jonathan:<enter_password>" | chpasswd
Nel caso in cui desideri aggiungere utenti esistenti al gruppo "sftp_users", quindi eseguire sotto il comando usermod, supponiamo che il nome utente già esistente sia "chris"
[email protected]:~# usermod -G sftp_users chris
Ora imposta le autorizzazioni richieste su Utenti,
[email protected]:~# chown root /home/jonathan /home/chris/
Crea una cartella di caricamento nella directory home dell'utente e imposta la proprietà corretta,
[email protected]:~# mkdir /home/jonathan/upload [email protected]:~# mkdir /home/chris/upload [email protected]:~# chown jonathan /home/jonathan/upload [email protected]:~# chown chris /home/chris/upload
Nota: Utenti come Jonathan e Chris possono caricare file e directory per caricare le cartelle dai loro sistemi locali.
Fase:3) Modifica il file di configurazione sftp (/etc/ssh/sshd_config)
Come abbiamo già affermato, le operazioni sftp vengono eseguite su ssh, quindi il suo file di configurazione è "/etc/ssh/sshd_config “, Prima di apportare qualsiasi modifica suggerirei di eseguire prima il backup e poi modificare questo file e aggiungere il seguente contenuto,
[email protected]:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config-org [email protected]:~# vim /etc/ssh/sshd_config ……… #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftp_users X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp …………
Salva ed esci dal file.
Per apportare le modifiche precedenti all'effetto, riavvia il servizio ssh usando il seguente comando systemctl
[email protected]:~# systemctl restart sshd
Nel file "sshd_config" sopra abbiamo commentato la riga che inizia con "Subsystem" e aggiunto la nuova voce "Subsystem sftp internal-sftp" e nuove righe come,
"Abbina gruppo sftp_users" –> Significa che se un utente fa parte del gruppo "sftp_users", applica le regole menzionate di seguito a questa voce.
"CrootDierctor %h ” –> Significa che gli utenti possono cambiare le directory solo all'interno delle rispettive home directory, non possono andare oltre le loro home directory, o in altre parole possiamo dire che gli utenti non sono autorizzati a cambiare directory, avranno un ambiente simile a jai all'interno delle loro directory e possono 'non accedere a nessun altro utente e directory di sistema.
"ForceCommand interno-sftp ” –> Significa che gli utenti sono limitati al solo comando sftp.
Passaggio:4) Testare e verificare sftp
Accedi a qualsiasi altro sistema Linux che si trova sulla stessa rete del tuo server sftp e quindi prova a ssh server sftp tramite gli utenti che abbiamo mappato nel gruppo "sftp_users".
Password di[[email protected] ~]# ssh [email protected] [email protected]'s password: Write failed: Broken pipe [[email protected] ~]# ssh [email protected] [email protected]'s password: Write failed: Broken pipe [[email protected] ~]#
Sopra conferma che gli utenti non sono autorizzati a SSH , ora prova sftp usando i seguenti comandi,
[[email protected] ~]# sftp [email protected] [email protected]'s password: Connected to 192.168.56.151. sftp> ls -l drwxr-xr-x 2 root 1001 4096 Sep 14 07:52 debian10-pkgs -rw-r--r-- 1 root 1001 155 Sep 14 07:52 devops-actions.txt drwxr-xr-x 2 1001 1002 4096 Sep 14 08:29 upload
Proviamo a scaricare un file usando sftp 'get ' comando
sftp> get devops-actions.txt Fetching /devops-actions.txt to devops-actions.txt /devops-actions.txt 100% 155 0.2KB/s 00:00 sftp> sftp> cd /etc Couldn't stat remote file: No such file or directory sftp> cd /root Couldn't stat remote file: No such file or directory sftp>
L'output sopra conferma che siamo in grado di scaricare file dal nostro server sftp alla macchina locale e, a parte questo, abbiamo anche testato che gli utenti non possono cambiare directory.
Proviamo a caricare un file in "carica cartella ",
sftp> cd upload/ sftp> put metricbeat-7.3.1-amd64.deb Uploading metricbeat-7.3.1-amd64.deb to /upload/metricbeat-7.3.1-amd64.deb metricbeat-7.3.1-amd64.deb 100% 38MB 38.4MB/s 00:01 sftp> ls -l -rw-r--r-- 1 1001 1002 40275654 Sep 14 09:18 metricbeat-7.3.1-amd64.deb sftp>
Ciò conferma che abbiamo caricato correttamente un file dal nostro sistema locale al server sftp.
Ora prova il server SFTP con lo strumento winscp, inserisci l'indirizzo IP del server sftp insieme alle credenziali dell'utente,
Fare clic su Accedi e quindi provare a scaricare e caricare file
Ora prova a caricare i file nella cartella di caricamento,
La finestra sopra conferma che anche il caricamento funziona correttamente, questo è tutto da questo articolo. Se questi passaggi ti aiutano a configurare il server SFTP con l'ambiente chroot in Debian 10, condividi il tuo feedback e commenti.