Introduzione
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, dobbiamo consentire agli utenti remoti di accedere al filesystem sul nostro sistema, ma non vuoi consentire loro di ottenere una shell. Ciò ti consentirà di un canale sicuro per fornire un accesso limitato a file e directory specifici.
Questo tutorial ti aiuterà a configurare solo l'accesso 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 privilegiato sudo con accesso alla shell
Se desideri installare creare un utente solo SFTP su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Creare un nuovo utente
Prima di tutto, crea un nuovo utente per connetterti con il server sftp. Il seguente comando creerà un nuovo account denominato sftpuser senza accesso alla shell. Puoi usare qualsiasi nome di tua scelta o requisito.
sudo adduser --shell /bin/false sftpuser
Creare 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ò una directory /var/sftp. La directory deve avere la proprietà di root per essere configurata come directory chroot. Quindi creeremo una sottodirectory sotto /var/sftp con accesso in scrittura all'account sftp.
Creare la struttura della directory con il seguente comando:
sudo mkdir -p /var/sftp/files
Successivamente, dobbiamo impostare i permessi appropriati 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 la directory "files"
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".
Configurare 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, modificare il file di configurazione SSH:
sudo nano /etc/ssh/sshd_config
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 salvare le modifiche e riavviare il servizio SSH per applicare le modifiche.
sudo systemctl restart ssh
Tutto fatto, l'uso del 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.
Connettersi 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, utilizzare il client Filezilla per connettere solo l'account sftp remoto sul sistema remoto.
Poiché questo account è configurato solo per la connessione SFTP. Quindi, se un utente ha provato a 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.noviello.it closed.
Conclusione
In questa guida, 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.