SFTP chrootato e relativo logging

SFTP

SFTP

Dietro una richiesta di un cliente ho implementato un servizio SFTP con relativo log per far sì che si possa avere qualche info in più in caso di contestazioni, visto che nella stessa area devono accedervi più utenze.

Dapprima la cosa sembrava fosse abbastanza banale ma invece la parte che più mi ha fatto perdere tempo è stata quella del logging. Ho seguito diversi link che allegherò in fondo e ovviamente quelli che ho seguito sono quelli con ambiente Debian.

In soldoni questi sono i passi seguiti per un’area condivisa fra più utenze.

Il primo step è stata la creazione del gruppo:

groupadd sftp-group

successivamente l’area di condivisione:

mkdir -p /secure/ftp

e creazione di un’utenza di test:

useradd  -g sftp-group  -d /ftp  -s /sbin/nologin testsftp

per la quale creaiamo una password mediante il relativo comando:

passwd testsftp

Lato configurazione queste sono le parti modificate sul daemon SSH e RSYSLOG.

Nel file di configurazione di SSH vado a modificare la Subsystem

Subsystem sftp /usr/lib/openssh/sftp-server

in

Subsystem sftp internal-sftp -l VERBOSE

e, in fondo allo stesso file di configurazione (sshd_conf) aggiungo

Match Group sftp-group
ChrootDirectory /secure/ftp
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp -l VERBOSE

In questo modo sto espressamente dichiarando una root chrootata condivisa, infatti non inserisco alcun parametro %u che indica l’utente.

Fatto questo dei restart dovrebbero essere sufficienti per far attivare le nuove regole lato SSH.

Per il logging invece è necessario non solo la direttiva “-l VERBOSE” già aggiunta lato SSH ma insieme anche l’aggiunta del file di configurazione all’interno di /etc/rsyslog.d/ ovvero:

~# cat /etc/rsyslog.d/sshd.conf
# Create an additional socket for some of the sshd chrooted users.
$AddUnixListenSocket /secure/ftp/dev/log

# Log internal-sftp in a separate file
:programname, isequal, “internal-sftp” -/var/log/sftpd.log
:programname, isequal, “internal-sftp” ~
~#

In cui in pratica indico qual è il file col logging.

Ovviamente dopo aver creato la directory /secure/ftp/dev.

Anche qui è sufficiente un restart del daemon e la modifica dovrebbe essere suffciente per avere delle info circa le operazioni svolte dell’utenza ogni volta che entra nel sistema con SFTP.

Come ultima cosa ovviamente bisogna non trascurare la rotation del log con la seguente direttiva lato logrotate:

~# cat sftpd_log.conf
/var/log/sftpd.log {
weekly
missingok
rotate 52
compress
delaycompress
postrotate
invoke-rc.d rsyslog reload > /dev/null
endscript
}
~#

Ed è tutto, o almeno così dovrebbe essere.

In coda aggiungo i link che ho seguito:

OpenSSH SFTP chroot() with ChrootDirectory
OpenSSH logging with ChrootDirectory
OpenSSH/Cookbook/SFTP
Secure chroot() remote file access via SFTP and SSH
Debian Linux chroot SFTP directory
SFTP setup on Debian Wheezy

 

 

About the Author: glycerin