it-swarm.com.de

Wie richte ich die SFTP-Dateizugriffsprotokollierung für OpenSSH ein?

Ich habe ein SFTP-Setup mit dem eingebauten SFTP-Subsystem von OpenSSH mit chroot-Benutzern.

Früher, als ich FTP verwendet habe, konnte ich in den Protokollen sehen, auf welche Dateien Benutzer zugegriffen haben.

Wie erreiche ich dasselbe mit OpenSSH/SFTP?

Relevante Teile meines /etc/ssh/sshd_config:

Subsystem sftp internal-sftp
Match group sftponly
    ChrootDirectory /home/%u
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
4
kraxor

Standardmäßig sshd protokolliert in den Systemprotokollen mit Protokollebene INFO und Syslog-Einrichtung AUTH. Der Ort, an dem nach Protokolldaten von sshd gesucht werden soll, ist also

/var/log/auth.log

Diese Standardeinstellungen können mit den Anweisungen SyslogFacility und LogLevel überschrieben werden. Unten finden Sie einen typischen Eintrag für den Serverstart im Autorisierungsprotokoll.

In den meisten Fällen ist die Standardprotokollierungsstufe in Ordnung.

Das Folgende sollte Ihnen nur ssh-bezogene Protokollzeilen geben

grep 'sshd' /var/log/auth.log

Um auf der sicheren Seite zu sein, holen Sie sich die letzten paar hundert Zeilen und suchen Sie dann.

tail -500 /var/log/auth.log | grep 'sshd'

BEARBEITEN:

Aus man sshd_config

 LogLevel
         Gives the verbosity level that is used when logging messages from
         sshd(8).  The possible values are: QUIET, FATAL, ERROR, INFO,
         VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3.  The default is INFO.
         DEBUG and DEBUG1 are equivalent.  DEBUG2 and DEBUG3 each specify
         higher levels of debugging output.  Logging with a DEBUG level
         violates the privacy of users and is not recommended.

sie können diesen Parameter also in sshd_config ändern. Aber es scheint, dass es keine Dateien verfolgt.

Sie können jedoch ein wenig nachforschen:

1) Um alle Dateien zu finden, die NICHT Ihrem angemeldeten Benutzer gehören, geben Sie Folgendes ein:

find ~ -type f ! -user $USER

1.1) Um alle Dateien zu finden, die keinem legitimen Benutzer gehören (sie sollten nicht existieren), geben Sie Folgendes ein:

find ~ -type f -nouser

2) Da Dateien auf dem System drei Zeitstempel haben, die als mtime (Dateiänderungszeit), ctime (Inode-Änderungszeit und Berechtigungen) und atime (Dateizugriffszeit) bezeichnet werden, können diese sein abgefragt, um herauszufinden, wie Dateien geändert wurden. Es wird oft diskutiert, welche davon am besten zu verwenden sind. Der wahrscheinlich beste Weg, um herauszufinden, wann auf Dateien zugegriffen oder diese geändert wurden, besteht darin, mit dem Befehl find nach atime und mtime zu suchen. , mit dem Sie vor Tagen angeben, und den zusätzlichen find Optionen amin und mmin, mit denen Sie vor Minuten angeben.

Für jeden dieser Befehle werden dieselben Befehlsschalter verwendet: Zum Beispiel stimmt -atime 1 mit den Dateien überein, auf die vor gena 1 Tag zugegriffen wurde; Um more oder less than anzugeben, fügen Sie einen + bzw. einen - hinzu. Die folgenden Beispiele können all dies verdeutlichen (-type d für Verzeichnisse angeben):

find ~ -type f -atime 1 
find ~ -type f -amin -23
find ~ -type f -mtime 2    
find ~ -type f -mmin -45

Um meine bisherigen Ansätze zu kombinieren, können Sie die folgenden Befehle aus Ihrem Basisordner eingeben. Der erste sucht nach Dateien, auf die eine Person zugreift, die NICHT Ihr Benutzer ist, und der zweite nach Dateien, die vor weniger als zwei Tagen von einer anderen Person als Ihrem Benutzer geändert wurden.

find ~ -type f -atime -2 ! -user $USER
find ~ -type f -mtime -2 ! -user $USER
6

Versuchen Sie in Ihrer sshd_config (meistens/etc/ssh/sshd_config) etwas wie

Subsystem   sftp    internal-sftp -f AUTH -l INFO

oder

Subsystem   sftp    internal-sftp -l INFO

Ich denke, das sind die Protokollierungsstufen:

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

Wenn Sie weitere Details zur Protokollierung benötigen, erhöhen Sie die Protokollierungsstufe

3
Midhun Jose

Sie können einen Wrapper um die ausführbare Datei Ihres SFTP-Servers verwenden:

`    
#!/bin/sh
# sftpd wrapper script for executing pre/post session actions

# pre session actions and logging here
SOURCE_IP=${SSH_CLIENT%% *}
MSG_SESSION_START="user $LOGNAME session start from $SOURCE_IP"
logger -p local5.notice -t sftpd-wrapper -i "$MSG_SESSION_START"

# start actual SFTP session
/usr/libexec/openssh/sftp-server

# add post session actions here
`

... und dann passen Sie Ihre syslogd.conf-Konfiguration an, um die local5.notice auf eine richtige Protokolldatei als solche zu leiten:

local5.*                                                /var/log/sftpd.log

Und zu guter Letzt können Sie in sshd_config global anpassen, um zu sehen, welche Dateien übertragen werden. oder pro Benutzer, indem Sie das obige Skript anpassen, indem Sie einfach die folgende Einstellung hinzufügen, damit der SFTP-Unterprozess die übertragenen Dateien protokolliert:

/usr/libexec/openssh/sftp-server -f local5 -l info

hoffe das hilft ! : p

2
Selt Mitchell