Perché SFTP? I Vantaggi
- Sicurezza: Utilizza la crittografia SSH per proteggere username, password e dati trasferiti.
- Autenticazione Forte: Supporta l'autenticazione tramite password e/o chiavi SSH.
- Integrità dei Dati: Protegge i dati da modifiche non autorizzate durante il trasferimento.
- Firewall-Friendly: Richiede solo la porta 22 (la stessa di SSH), semplificando la configurazione del firewall.
- Funzionalità SSH: Puoi sfruttare altre funzionalità SSH, come l'autenticazione a chiave, per una maggiore sicurezza.
Prerequisiti
- Un'installazione funzionante di Ubuntu Server (questa guida è testata su Ubuntu 22.04 LTS, ma è applicabile anche ad altre versioni recenti).
- Accesso SSH al server con un utente con privilegi sudo.
- Un client SFTP (es. FileZilla, WinSCP, o il comando sftp da terminale).
Fase 1: Aggiornamento del Sistema
È sempre una buona pratica iniziare con un sistema aggiornato per garantire la massima stabilità e sicurezza.
sudo apt update sudo apt upgrade -y
Bash
- Creare l'utente SFTP e assegnarlo al gruppo:
- Importante: Non assegnare una home directory all'utente (-m) e impostare la shell su /usr/sbin/nologin per impedire l'accesso alla shell.
- Sostituisci sftpuser1 con il nome utente desiderato.
- Ti verrà chiesto di inserire e confermare la password.
Ripeti i passaggi 2 e 3 per ogni utente SFTP che desideri creare.
Fase 3: Configurazione della Directory Root per SFTP (Chroot Jail)
Per un ambiente SFTP sicuro, confineremo gli utenti SFTP a una directory specifica. Questo significa che non potranno navigare al di fuori di quella directory, un meccanismo noto come "chroot jail".
- Creare la directory root per SFTP: Questa directory deve essere di proprietà di root e non scrivibile da nessun altro.Ripeti questo passaggio per ogni utente SFTP creato.
- Nota importante sui permessi: La directory padre del chroot (/var/sftp) e tutte le directory intermedie devono essere di proprietà di root e non devono essere scrivibili da nessun altro. Solo la directory più interna (/var/sftp/sftpuser1 nell'esempio) può essere di proprietà dell'utente SFTP e avere permessi di scrittura.
- sudo mkdir -p /var/sftp sudo chown root:root /var/sftp sudo chmod 755 /var/sftpBash
Fase 4: Configurazione del Server SSH (sshd_config)
Ora dobbiamo modificare il file di configurazione di SSH (sshd_config) per abilitare il chroot per gli utenti SFTP.
- Aprire il file di configurazione:Spiegazione delle direttive:
- Match Group sftpusers: Questa sezione di configurazione si applica solo agli utenti che appartengono al gruppo sftpusers.
- ChrootDirectory /var/sftp/%u: Confinena l'utente nella sua home directory SFTP. %u è una variabile che viene sostituita con il nome utente. Quindi, sftpuser1 sarà confinato in /var/sftp/sftpuser1.
- ForceCommand internal-sftp: Forza l'esecuzione del server SFTP interno, impedendo l'accesso alla shell SSH.
- Le direttive AllowTCPForwarding, X11Forwarding, AgentForwarding, GatewayPorts, PermitTunnel impostate su no disabilitano funzionalità SSH aggiuntive che non sono necessarie per l'SFTP e che potrebbero rappresentare potenziali vulnerabilità di sicurezza.
- sudo nano /etc/ssh/sshd_config
- Salva e chiudi il file (Ctrl+O, Invio, Ctrl+X in nano).
- Riavvia il servizio SSH per applicare le modifiche:Ti verrà chiesta la password. Una volta connesso, digita pwd per vedere la tua directory corrente (dovrebbe essere /). Prova a navigare con ls e cd ... Dovresti essere bloccato nella tua home directory SFTP.
- sudo systemctl restart sshBash
Fase 6: Opzionale - Autenticazione con Chiavi SSH (Consigliato)
Per una sicurezza ancora maggiore, puoi configurare l'autenticazione tramite chiavi SSH invece delle password. Questo elimina il rischio di attacchi a forza bruta sulle password.
- Genera una coppia di chiavi sul tuo client locale (se non l'hai già fatto):
- ssh-keygen -t rsa -b 4096Bash
- Copia il contenuto della tua chiave pubblica (~/.ssh/id_rsa.pub sul tuo client) e incollalo nel file authorized_keys sul server:
- sudo nano /var/sftp/sftpuser1/.ssh/authorized_keysBash
- Disabilita Autenticazione Password (se usi solo chiavi): Per massima sicurezza, dopo aver verificato che l'autenticazione a chiave funziona, puoi disabilitare l'autenticazione con password per gli utenti SFTP nel file sshd_config aggiungendo PasswordAuthentication no all'interno del blocco Match Group sftpusers.
- Monitoraggio dei Log: Controlla regolarmente i log di SSH (/var/log/auth.log) per rilevare tentativi di accesso non autorizzati.
- Limitazione delle Risorse: Per ambienti con molti utenti o traffico elevato, potresti considerare di limitare le risorse per ciascun utente SFTP per prevenire abusi.
- Backup: Implementa una strategia di backup regolare per i dati presenti sul server SFTP.
Configurare un server SFTP su Ubuntu in questo modo ti fornirà una soluzione di trasferimento file robusta e, soprattutto, sicura, fondamentale per proteggere i tuoi dati sensibili.