SFTP-Protokollierung: Gibt es einen Weg?


91

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 im Zusammenhang mit der Dateiübertragung enthalten.

Ich habe Probleme mit einem SFTP-Client und der Ersteller fordert Protokolle an, kann jedoch keine vorhandenen Protokolle finden.

Ich versuche, beide oder entweder CentOS oder OS X anzumelden (obwohl ich vermute, dass es bei beiden möglich ist).


Antworten:


94

In OpenSSH-Versionen 4.4p1 und höher (die die neueste Version mit CentOS 5 enthalten sollten) ist die SFTP-Protokollierungsfunktion integriert - 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 dem, was standardmäßig angezeigt wird - es enthält detaillierte Informationen zu Dateiübertragungen, Berechtigungsänderungen usw. Wenn Sie weitere Informationen benötigen, können Sie die Protokollstufe entsprechend anpassen. Die verschiedenen Ebenen (in der Reihenfolge der Details) sind:

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

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

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

systemctl restart sshd

1
Ich wusste nicht, dass Sie SFTP so protokollieren können, das ist was ich brauche. Wo werden die Protokolle gespeichert? /var/log/auth.log?
Rory

4
Dies hängt von Ihrer Syslog-Konfiguration ab. Unter Verwendung von INFO loglevel platzieren die meisten Standard-syslog.conf diese Einträge in / var / log / messages.
rvf

4
Ist dies über den internen SFTP-Server möglich?
Cian

Dies funktioniert perfekt für SFTP, aber was ist mit SCP? Ich habe im Protokoll keine Einträge für eine Datei gefunden, die mit dem Befehl scp kopiert wurde, obwohl das Protokoll für sftp
Ale

2
Unter Ubuntu sind diese Protokolle standardmäßig auf /var/log/auth.log. Fügen Sie -f USERdieser SubsystemKonfigurationszeile hinzu, an die sie gesendet werden sollen /var/log/syslog.
Konto

43

Die gleichen Schalter um die Protokollierung 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

Wenn die Protokollierung auf INFO-Ebene aktiviert ist, werden Nachrichten unter / var / log / messages angezeigt (zumindest unter Red Hat-basierten Distros):

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

2
Ich habe festgestellt, dass es in meinem Fall nur SFTP-Sitzungen für root protokolliert, nicht für meinen chrooted-Benutzertest. Ich verstehe nicht warum, hast du irgendwelche Ideen?
JohnnyFromBF

4
Es sieht so aus, als müssten Sie /dev/login Ihrer Chroot-Gegend sein. 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 dieses / dev / log, aber da es sich um einen Socket handelt, können sie nicht viel Schaden anrichten, wenn sie nur Zugriff auf dieses / dev / log haben sftp.
sch

1
Danke für den Tipp. Ich kann es jedoch anscheinend nicht zum Laufen bringen. Könnten Sie etwas genauer sein?
user1092608

4
FWIW: Im ArchLinux-Wiki gibt es eine gute Beschreibung, wie die Protokollierung in der Chroot-Umgebung aktiviert werden
Kaii

0

Um die obigen Kommentare zu verdeutlichen:

Wenn Sie SFTP mithilfe eines Jails (Chroot-Umgebung) konfiguriert haben, können Sie sich nicht ohne zusätzlichen Konfigurationsaufwand anmelden. Das Protokoll kann nicht in der Chroot-Umgebung geschrieben werden. Sie müssen eine Mount-Bindung oder einen Socket erstellen. Ich würde die Verwendung eines Sockets empfehlen, da dies eine Funktion ist, die sowohl von syslog-ng als auch von rsyslog (und möglicherweise von vielen anderen) bereitgestellt wird.

Für diejenigen, die syslog-ng verwenden, besuchen Sie https://wiki.archlinux.org/index.php/SFTP_chroot#Logging . Für diejenigen, die rsyslog verwenden, ist https://wiki.kairaven.de/open/os/linux/sftpssh Ihr Freund.

Ich hoffe, das hilft.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.