Journalisation SFTP: existe-t-il un moyen?

92

Je me demande s'il existe un moyen de consigner les commandes reçues par le serveur. Il peut s'agir de toutes les commandes SSH, à condition qu'il contienne des informations sur les commandes liées au transfert de fichiers.

J'ai un problème avec un client SFTP et le créateur demande des journaux, mais je ne parviens pas à en trouver.

Je cherche à me connecter à la fois sur CentOS ou OS X (bien que je soupçonne que si c'est possible, ce serait similaire sur les deux).

Darryl Hein
la source

Réponses:

94

Les versions OpenSSH 4.4p1 et supérieures (qui devraient inclure la dernière version de CentOS 5) ont une fonctionnalité de journalisation SFTP intégrée - il vous suffit de la configurer.

Trouvez ceci dans votre sshd_config (en centos, fichier / etc / ssh / sshd_config ):

Subsystem       sftp    /usr/libexec/openssh/sftp-server

et le changer pour:

Subsystem       sftp    /usr/libexec/openssh/sftp-server -l INFO

INFO n'est qu'un niveau de détail par rapport à ce que vous voyez par défaut. Il fournit des informations détaillées sur les transferts de fichiers, les modifications d'autorisation, etc. Si vous avez besoin d'informations supplémentaires, vous pouvez ajuster le niveau de journalisation en conséquence. Les différents niveaux (par ordre de détail) sont:

QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3

Tout ce qui concerne VERBOSE représente probablement plus d’informations que vous ne le souhaitez, mais cela pourrait être utile.

Enfin, redémarrez le service SSH pour mettre à jour les modifications (centos):

systemctl restart sshd
rvf
la source
1
Je ne savais pas que vous pouviez vous connecter à SFTP comme ça, c'est ce dont j'ai besoin. Où stocke-t-il les journaux? /var/log/auth.log?
Rory
4
Cela dépend de votre configuration syslog. À l'aide du niveau de journalisation INFO, la plupart des syslog.conf par défaut placent ces entrées dans / var / log / messages.
rvf
4
Est-il possible de faire cela en utilisant le serveur sftp interne?
Cian
cela fonctionne parfaitement pour SFTP, mais qu'en est-il de SCP? Je n'ai trouvé aucune entrée dans le journal pour un fichier copié avec la commande scp, bien que le journal ait réussi pour sftp
Ale
2
Sur Ubuntu, ces journaux par défaut sont /var/log/auth.log. Ajoutez -f USERà cette Subsystemligne de configuration pour les envoyer /var/log/syslog.
Compte
43

Les mêmes commutateurs concernant la journalisation pour sftp-server fonctionnent également pour internal-sftp. Voici un exemple de mon / etc / ssh / sshd_config:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

Avec la journalisation de niveau INFO activée, les messages commencent à apparaître sous / var / log / messages (au moins sous Distros basé sur Red Hat):

May 27 05:58:16 test-server sshd[20044]: User child is on pid 20049
May 27 05:58:16 test-server sshd[20049]: subsystem request for sftp by user test-user
May 27 05:58:16 test-server internal-sftp[20050]: session opened for local user test-user from [192.168.1.1]
May 27 05:58:16 test-server internal-sftp[20050]: received client version 3
May 27 05:58:16 test-server internal-sftp[20050]: realpath "."
May 27 05:58:21 test-server internal-sftp[20050]: opendir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: closedir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: lstat name "/home/test-user/upload"
May 27 05:58:21 test-server internal-sftp[20050]: realpath "/home/test-user/upload/"
May 27 05:58:21 test-server internal-sftp[20050]: stat name "/home/test-user/upload"
May 27 05:58:24 test-server internal-sftp[20050]: open "/home/test-user/upload/test-file.pdf" flags WRITE,CREATE,TRUNCATE mode 0664
May 27 05:58:25 test-server internal-sftp[20050]: close "/home/test-user/upload/test-file.pdf" bytes read 0 written 1282941
slm
la source
2
J'ai découvert que dans mon cas, il ne consignait que les sessions sftp pour root mais pas pour mon test d'utilisateur en mode chrooté. Je ne comprends pas pourquoi, avez-vous des idées?
JohnnyFromBF
4
Il semble que vous ayez besoin /dev/logde votre chroot. Quelque chose comme sudo mkdir /chrooted/area/dev, sudo touch /chrooted/area/dev/log, sudo chmod 511 /chrooted/area/dev, sudo chattr +i /chrooted/area/dev, sudo mount --bind /dev/log /chrooted/area/dev/log. Les utilisateurs auront toujours un accès en écriture à ce répertoire / dev / log, mais comme il s'agit d'un socket, ils ne peuvent pas faire beaucoup de mal si tout ce qu'ils ont accès est sftp.
Sch
1
Merci pour l'allusion. Je n'arrive pas à le faire fonctionner, cependant. Pourriez-vous être un peu plus précis?
user1092608
4
FWIW: Dans le wiki d’ArchLinux, vous trouverez une bonne description de la procédure de
Kaii
0

Afin de clarifier les commentaires ci-dessus:

Si vous avez configuré sftp à l'aide d'un environnement jail (environnement chroot), vous ne pouvez pas vous connecter sans profil de configuration supplémentaire. Le journal ne peut pas être écrit dans l'environnement chroot, vous devez créer une liaison de montage ou un socket. Je recommanderais d'utiliser un socket, car c'est une fonctionnalité fournie par syslog-ng ainsi que par rsyslog (et peut-être beaucoup plus).

Pour ceux qui utilisent syslog-ng, consultez https://wiki.archlinux.org/index.php/SFTP_chroot#Logging . Pour ceux qui utilisent rsyslog, https://wiki.kairaven.de/open/os/linux/sftpssh est votre ami.

J'espère que ça t'as aidé.

Phil
la source