Frage SFTP-Protokollierung: Gibt es einen Weg?


Ich frage mich, ob es eine Möglichkeit gibt, vom Server empfangene Befehle zu protokollieren. Dies können alle SSH-Befehle sein, sofern sie Informationen zu Befehlen enthalten, die sich auf die Dateiübertragung beziehen.

Ich habe Probleme mit einem SFTP-Client und der Ersteller fragt nach Protokollen, aber ich kann keine vorhandenen Protokolle finden.

Ich suche beide, entweder CentOS oder OS X (obwohl ich vermute, wenn es möglich ist, wäre es auf beiden ähnlich).


82
2017-10-11 01:42


Ursprung




Antworten:


OpenSSH-Versionen ab 4.4p1 (die die neueste Version mit CentOS 5 enthalten sollten) verfügen über integrierte SFTP-Protokollierungsfunktionen - Sie müssen sie nur konfigurieren.

Finden Sie dies in Ihrer sshd_config (in Centos, Datei / etc / ssh / sshd_config):

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

und ändere es in:

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

INFO ist nur eine Detailebene über das, was Sie standardmäßig sehen - es enthält detaillierte Informationen zu Dateiübertragungen, Berechtigungsänderungen usw. Wenn Sie weitere Informationen benötigen, können Sie die Protokollierungsstufe entsprechend anpassen. Die verschiedenen Ebenen (in der Reihenfolge des Details) sind:

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

Alles über VERBOSE ist wahrscheinlich mehr Informationen als Sie suchen, aber es könnte nützlich sein.

Starten Sie den SSH-Dienst neu, um die Änderungen zu aktualisieren (Centos):

systemctl restart sshd

86
2017-10-13 23:21



Ich wusste nicht, dass du SFTP so aufzeichnen kannst, das ist es, was ich brauche. Wo speichert es die Protokolle? /var/log/auth.log? - Rory
Dies hängt von Ihrer Syslog-Konfiguration ab. Wenn Sie den INFO-Loglevel verwenden, werden diese Einträge in den meisten Standard-syslog.conf-Ordnern in / var / log / messages abgelegt. - rvf
Ist es möglich, dies über den internen sftp-Server zu tun? - Cian
das funktioniert perfekt für SFTP, aber was ist mit SCP? Ich habe keine Einträge im Protokoll für eine Datei gefunden, die mit dem Befehl scp kopiert wurde, obwohl das Protokoll für sftp erfolgreich war - Ale
Unter Ubuntu sind diese Protokolle standardmäßig auf /var/log/auth.log. Hinzufügen -f USER dazu Subsystem Konfigurationszeile, an die sie gesendet werden sollen /var/log/syslog. - Throwaway Account 3 Million


Die gleichen Switches um Logging für SFTP-Server funktionieren auch für Internal-SFTP. Hier ist ein Beispiel aus meiner / etc / ssh / sshd_config:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

Bei der Protokollierung der INFO-Ebene werden die Meldungen unter / var / log / messages (zumindest unter Red Hat-basierten Distros) angezeigt:

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

39
2018-05-29 12:42



Ich habe festgestellt, dass es in meinem Fall nur SFTP-Sitzungen für root, aber nicht für meinen chrooted user test protokolliert. Ich verstehe nicht warum, hast du irgendwelche Ideen? - JohnnyFromBF
Es sieht so aus als ob du es brauchst /dev/log in deinem Chroot-Bereich. So etwas wie 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. Benutzer haben weiterhin Schreibzugriff auf / dev / log, aber da es sich um einen Socket handelt, können sie nicht viel schaden, wenn sie nur Zugriff darauf haben sftp. - sch
Danke für den Tipp. Ich kann es jedoch nicht funktionieren lassen. Könntest du etwas genauer sein? - user1092608
FWIW: Im ArchLinux Wiki gibt es eine gute Beschreibung, wie man das Einloggen in die Chroot-Umgebung aktiviert: wiki.archlinux.org/index.php/SFTP_chroot#Logging - Kaii