SFTP サーバーから追加の操作ログを収集しようとしています。インターネット上の多くの投稿の指示に従って、/etc/ssh/sshd_config に次の行を追加しました。
Subsystem sftp internal-sftp -l VERBOSE -f LOCAL6
Match Group sftponly
ChrootDirectory /data/%u
ForceCommand internal-sftp -l VERBOSE -f LOCAL6
X11Forwarding no
AllowTcpForwarding no
次に、ログ情報を収集するために、次の行を含む /etc/rsyslog.d/60-sftp.conf を作成しました。
# Parse the data logged at level INFO and facility LOCAL6 into /var/log/sftp
local6.* /var/log/sftp
# Report logins and logoffs
:syslogtag,startswith,"internal-sftp" /var/log/sftp
# Log internal-sftp in a separate file
:programname, isequal, "internal-sftp" -/var/log/sftp
この時点では、/var/log/sftp にログが記録されないようです。すべて /var/log/messages に記録され続けており、詳細はまったく表示されていないようです。以下は、私が取得しているログの一部です。
Sep 28 16:46:11 ftp sshd[10060]: Accepted publickey for root from 172.25.50.117 port 54836 ssh2
Sep 28 16:46:11 ftp sshd[10060]: Received disconnect from 172.25.50.117: 11: disconnected by user
Sep 28 16:46:16 ftp sshd[10109]: Accepted keyboard-interactive/pam for account1000002664 from 172.25.50.86 port 34255 ssh2
次のコマンドを実行して、システムが rsyslogd を実行していることを確認しました。
ftp:~ # ps ax | grep syslog
9205 ? Sl 0:00 /sbin/rsyslogd -c 5 -f /etc/rsyslog.conf
したがって、私の知る限り、正しいファイルを編集しています。次のステップは、期待されるログが local6 に送信されていることを確認することだと考えています。ここでの目標は、vsftpd によって作成された xferlog とまったく同じではないにしても、同様のログを出力するために必要なデータを取得することです。
どのように進めればよいか、何かご意見はありますか? ちなみに、これは OpenSuse 12.1 で実行されています。
答え1
ログを記録する場合は、 にログ ソケット ( /dev/log
)を用意chroot
するか、実行中にファイル記述子を永続化する方法の実装が必要ですinternal-sftp
。
現在のRHELで動作するはずです(少なくともテストしたところ、文書化された) ですが、SUSE についての知識はありません。
この機能は完全には実装されていないかもしれませんが、常にソケットを作成しchroot
、このソケットでメッセージを受け入れるように設定rsyslog
できます。コメントで提案されているように、ロガーでテストできます。