← Tutti gli articoliLinux e strumenti

Linux e strumenti

Debootstrap: ambiente Debian e accesso SFTP confinato

Matteo Galacci ·

Con debootstrap puoi preparare un filesystem Debian separato. Nell’esempio lo userai localmente con chroot e offrirai a un utente soltanto accesso SFTP a una sottocartella. Serve una VM Debian 13 di prova con sudo; il percorso /srv/debian-demo deve essere nuovo. Un chroot non è una macchina virtuale né una barriera sufficiente per eseguire codice ostile.

1. Prepara Debian

sudo apt update
sudo apt install debootstrap openssh-server
sudo debootstrap --variant=minbase trixie /srv/debian-demo https://deb.debian.org/debian
sudo chroot /srv/debian-demo /bin/cat /etc/debian_version

L’ultimo comando deve mostrare la versione Debian del sistema interno. Per una shell locale usa sudo chroot /srv/debian-demo /bin/bash ed esci con exit. Questo test non richiede mount permanenti di /proc o modifiche globali a PAM.

2. Crea un utente SFTP

sudo adduser --no-create-home --home /upload --shell /usr/sbin/nologin demo-sftp
sudo install -d -o demo-sftp -g demo-sftp -m 750 /srv/debian-demo/upload

La radice /srv/debian-demo e tutte le directory superiori devono appartenere a root e non essere scrivibili da gruppo o altri. Solo upload appartiene all’utente. Aggiungi questo blocco in fondo a /etc/ssh/sshd_config, conservando prima una copia del file:

Match User demo-sftp
    ChrootDirectory /srv/debian-demo
    ForceCommand internal-sftp -d /upload
    DisableForwarding yes
    PermitTTY no

Usa il metodo di autenticazione già previsto dal server. Se le password sono disabilitate, configura la chiave attraverso il meccanismo amministrato del server, senza riabilitare globalmente l’accesso con password.

3. Controlla e prova

sudo sshd -t && sudo systemctl reload ssh
sftp demo-sftp@localhost

Mantieni aperta la sessione amministrativa. Da SFTP prova pwd, put file-di-prova.txt e ls: devi essere in /upload e vedere il file inviato. L’utente può vedere il filesystem interno Debian ma non uscire dalla sua radice. Una normale sessione shell SSH non deve essere disponibile.

SFTP interno non necessita di debootstrap: se vuoi solo trasferire file puoi usare un chroot vuoto con upload. Non concediamo qui una shell remota nel chroot. Per annullare la configurazione rimuovi il blocco Match, ricontrolla sshd -t e ricarica SSH; conserva i file caricati.

Fonti e approfondimenti