SFTPロギング:方法はありますか?


91

サーバーが受信したコマンドをログに記録する方法があるかどうか疑問に思っています。ファイル転送に関連するコマンドに関する情報が含まれている限り、すべてのSSHコマンドを使用できます。

SFTPクライアントに問題があり、作成者がログを要求していますが、既存のログを見つけることができません。

私は両方またはCentOSまたはOS Xのいずれかでログオンしようとしています(可能であれば疑いがありますが、両方で同じようになるでしょう)。


回答:


94

OpenSSHバージョン4.4p1以降(CentOS 5の最新バージョンを含む必要があります)には、SFTPロギング機能が組み込まれています。設定するだけです。

sshd_configでこれを見つけます(centosで、ファイル/ etc / ssh / sshd_config):

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

次のように変更します。

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

INFOは、デフォルトで表示される内容の単なる1レベルの詳細です。ファイル転送、許可の変更などに関する詳細情報を提供します。詳細情報が必要な場合は、それに応じてログレベルを調整できます。さまざまなレベル(詳細順)は次のとおりです。

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

VERBOSEを超えるものは、おそらくあなたが探しているよりも多くの情報ですが、役に立つかもしれません。

最後にSSHサービスを再起動して、変更(centos)を更新します。

systemctl restart sshd

1
そのようにSFTPをログに記録できるとは知りませんでした。それが必要です。ログはどこに保存されますか?/var/log/auth.log?
ロリー

4
syslogの構成に依存します。INFOログレベルを使用すると、ほとんどのデフォルトのsyslog.confはこれらのエントリを/ var / log / messagesに配置します。
rvf

4
内部sftpサーバーを使用してこれを行うことは可能ですか?
チアン

これはSFTPには完全に機能しますが、SCPはどうですか?ログは、SFTPのために成功しましたが、私は、scpコマンドでコピーしたファイルのログにエントリが見つかりませんでした
エール

2
Ubuntuでは、これらのログはデフォルトでになり/var/log/auth.logます。config行に追加-f USERしてSubsystem、それらをに送信します/var/log/syslog
アカウントをスローする

43

sftp-serverのロギングに関する同じスイッチは、internal-sftpでも機能します。/ etc / ssh / sshd_configの例を次に示します。

Subsystem   sftp    internal-sftp -f AUTH -l INFO

INFOレベルのロギングを有効にすると、メッセージは/ var / log / messagesの下に表示され始めます(少なくとも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

2
私の場合は、rootのsftpセッションのみを記録し、chrootedユーザーテストは記録しないことを発見しました。理由はわかりませんが、何かアイデアはありますか?
JohnnyFromBF

4
/dev/logchrootエリアで必要なようです。何かのようにsudo mkdir /chrooted/area/devsudo touch /chrooted/area/dev/logsudo chmod 511 /chrooted/area/devsudo chattr +i /chrooted/area/devsudo mount --bind /dev/log /chrooted/area/dev/log。ユーザーはその/ dev / logへの書き込みアクセス権を保持しますが、ソケットであるため、アクセス権がすべての場合はそれほど害はありませんsftp
sch

1
ヒントをありがとう。しかし、私はそれを機能させることができないようです。もう少し具体的に教えていただけますか?
user1092608

4
FWIW:ArchLinuxウィキでchroot環境でのログを有効にする方法について適切な説明があります:wiki.archlinux.org/index.php/SFTP_chroot#Logging
魁夷

0

上記のコメントを明確にするために:

jail(chroot環境)を使用してsftpを構成している場合、追加の構成作業なしではログに記録できません。ログをchroot環境に書き込むことはできません。マウントバインドまたはソケットを作成する必要があります。ソケットを使用することをお勧めします。これは、syslog-ngとrsyslog(およびそれ以上)によって提供される機能です。

syslog-ngを使用している場合は、https://wiki.archlinux.org/index.php/SFTP_chroot#Loggingをご覧ください。rsyslogを使用している人にとって、https: //wiki.kairaven.de/open/os/linux/sftpssh はあなたの友達です。

お役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.