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.
    sudo useradd -g sftpusers -s /usr/sbin/nologin sftpuser1Bash
  • 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".

  1. 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.
  2. 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.

  1. 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.
  2. sudo nano /etc/ssh/sshd_config
  3. Salva e chiudi il file (Ctrl+O, Invio, Ctrl+X in nano).
  4. 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.
  5. 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.

    1. Genera una coppia di chiavi sul tuo client locale (se non l'hai già fatto):
    2. ssh-keygen -t rsa -b 4096Bash
    3. Copia il contenuto della tua chiave pubblica (~/.ssh/id_rsa.pub sul tuo client) e incollalo nel file authorized_keys sul server:
    4. sudo nano /var/sftp/sftpuser1/.ssh/authorized_keysBash
    5. 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.
    6. Monitoraggio dei Log: Controlla regolarmente i log di SSH (/var/log/auth.log) per rilevare tentativi di accesso non autorizzati.
    7. Limitazione delle Risorse: Per ambienti con molti utenti o traffico elevato, potresti considerare di limitare le risorse per ciascun utente SFTP per prevenire abusi.
    8. 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.