SFTP (SSH File Transfer Protocol) è un protocollo di file sicuro utilizzato per accedere, gestire e trasferire file su una sessione di trasporto SSH crittografata. La sicurezza prima di tutto è una regola pratica per gli amministratori di sistema. In alcuni casi, è necessario consentire agli utenti remoti di accedere al filesystem sul nostro sistema, ma non si desidera consentire loro di ottenere una shell. Ciò ti consentirà un canale sicuro per fornire un accesso limitato a file e directory specifici.
Questo tutorial ti aiuterà a configurare l'accesso solo SFTP (senza accesso alla shell) sul sistema Debian 11. Creerà un ambiente chroot sul tuo sistema per limitare l'utente SFTP solo a una directory specifica. Inoltre, consentirà solo l'accesso SFTP senza l'accesso SSH all'utente.
Prerequisiti
- Un sistema Debian 11 Bullseye Linux in esecuzione
- Devi avere un account sudo privilegiato con accesso alla shell
Fase 1:crea un nuovo utente
Prima di tutto, crea un nuovo utente per connettersi con il server sftp. Il comando seguente creerà un nuovo account denominato sftpuser senza accesso alla shell. Puoi utilizzare qualsiasi nome a tua scelta o requisito.
sudo adduser --shell /bin/false sftpuser
Fase 2:crea una directory per l'accesso SFTP
Hai creato un utente per sftp. Ora, crea una directory da configurare come chroot per sftp. Per questo esempio creerò un /var/sftp directory. La directory deve avere la proprietà root per essere configurata come directory chroot. Quindi creeremo una sottodirectory in /var/sftp con accesso in scrittura all'account sftp.
Crea la struttura delle directory con il seguente comando:
sudo mkdir -p /var/sftp/files
Successivamente, dobbiamo impostare l'autorizzazione appropriata sulle directory da configurare come accesso chroot con accesso in scrittura all'utente. Qui /var/sftp deve avere la proprietà root e il gruppo con i permessi appropriati. Per impostare tale autorizzazione, digita:
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
Ora, cambia l'autorizzazione per i "files"
directory per consentire l'accesso in scrittura a sftpuser. Per impostare tali autorizzazioni, digita:
sudo chown sftpuser:sftpuser /var/sftp/files
Una volta che sftpuser si connette al server, otterrà /var/sftp come directory principale. Non può accedere al filesystem al di fuori di esso. Inoltre, l'utente può leggere/scrivere file solo nella directory "files".
Passaggio 3:configura sshd solo per SFTP
Successivamente, è necessario configurare il server SSH per consentire a "sftpuser" di connettere il server solo con sFTP senza accesso alla shell. Per apportare le modifiche necessarie, modifica il file di configurazione SSH.
sudo nano /etc/ssh/sshd_config
e aggiungi le seguenti impostazioni alla fine del file.
Match User sftpuser ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Ricontrolla che tutte le impostazioni siano corrette. Quindi salva le modifiche e riavvia il servizio SSH per applicare le modifiche.
sudo systemctl restart ssh
Fatto tutto, l'uso solo SFTP è stato creato con successo sul tuo sistema Debian. Ora prova ad accedere al sistema remoto con le credenziali del nuovo utente e controlla se tutto funziona correttamente.
Fase 4:connessione a SFTP
È possibile connettersi a un server SFTP remoto utilizzando una riga di comando o applicazioni grafiche come Filezilla o WinSCP. In questo tutorial, ti mostrerò entrambi i modi per connettere il server SFTP.
Gli utenti Linux possono utilizzare l'utilità della riga di comando sftp per connettersi a istanze sftp remote.
sftp [email protected]
[email protected]'s password:
sftp>
L'interfaccia GUI o gli utenti Windows possono utilizzare client sftp grafici. Ad esempio, utilizza il client Filezilla per connettere un account solo sftp remoto sul sistema remoto.
Non verificare l'accesso alla shell:
Poiché questo account è configurato per la sola connessione SFTP. Pertanto, se un utente ha tentato di connettersi tramite SSH verrà disconnesso immediatamente dopo l'autenticazione riuscita. L'utente riceverà il messaggio di seguito:
ssh [email protected]
[email protected]'s password:
This service allows sftp connections only.
Connection to sftp.tecadmin.net closed.
Conclusione
In questa guida pratica, hai imparato a creare un ambiente jail chroot per utenti SFTP senza accesso shell al server. L'ambiente Chroot protegge il filesystem impedendo agli utenti di accedere ai file al di fuori della directory definita. Questo tutorial è stato creato e testato con il sistema Debian 11 Bullseye, ma funzionerà su altre versioni di Debian.