OpenSSH

De Sn4kY
Aller à : navigation, rechercher

SFTP

Activer un chroot SFTP avec OpenSSH

dans /path/to/sshd_config

Subsystem       sftp    internal-sftp
Match group sftp
       ChrootDirectory /home/sftpusers/%u
       ForceCommand internal-sftp
       AllowTcpForwarding no
       GatewayPorts no
       X11Forwarding no

Mettre l'user dans le bon home directory à la connexion

groupadd -g 3000 sftp
mkdir /home/sftpusers/
mkdir -p /home/sftpusers/sftp-user/sftp-user
useradd -g sftp -M -b / -s /sbin/nologin sftp-user

L'idée est d'avoir dans /etc/passwd un utilisateur comme ceci :

sftp-user:x:500:3000::/sftp-user:/sbin/nologin

/sbin/nologin peut être remplacé par /bin/false, le shell est forcé par le ForceCommand de la sous section d'OpenSSH

Autoriser l'utilisation d'une clé RSA

dans /path/to/sshd_config

AuthorizedKeysFile      /home/sftpusers/%u/.ssh/authorized_keys

Attention, l'utilisateur "sftp-user" doit impérativement pouvoir lire le fichier authorized_keys (les droits de l'intégralité du path doivent au moins contenir read pour le groupe sftpusers, le chroot étant réalisée une fois les credentials obtenus.


Ajouter du log verbeux

Dans la rubrique Match, ajouter -f AUTH -l INFO à la fin de la ligne ForceCommand internal-sftp. Cela va avoir pour effet de forcer l'user à écrire dans son /dev/log, qui n'existe pas, il faut donc créer le répertoire mkdir /home/sftpusers/sftp-user/dev et demander à rsyslog d'aller y écouter. Dans /etc/rsyslog.d/chroot.conf :

$AddUnixListenSocket /home/sftpusers/sftp-user/dev/log

Un restart du tout et c'est OK.

Il est possible de changer le niveau de verbosité (configuré à INFO) et le syslogfacility (AUTH), mais il faudra également penser à adapter rsyslog pour traiter cette facility.