LoginSignup
5
6

More than 5 years have passed since last update.

rsyslogを使ってsftpサーバの操作ログを出力する。

Posted at

About

sftpサーバのクライアントの操作履歴を出そうという試みです。

Environment

Centos7
rsyslog 7.4.7
openssh

doing

rsyslog自体のログを出す

  • rsyslog自体のログがデフォルトでは出ておらず、問題発生時に困ったので検証時はオンにしておくと良さそうです。
/etc/rsyslog.conf
...
logger /var/log/messages
...

deprecateなオプションみたいですが、とりあえず出しておきます。

sftpサーバの設定をする

/etc/ssh/sshd_config
# override default of no subsystems
Subsystem       sftp    internal-sftp -f local5 -l INFO

Match group sftp-user
        PasswordAuthentication yes
        X11Forwarding no
        AllowTcpForwarding no
        ChrootDirectory /home/%u/chroot/

rsyslogで設定する

ログを出力させるために必要な設定は下記です。

/etc/rsyslog.conf
$ModLoad imuxsock 

# sftp log
local5.*                                                /var/log/sftp.log

AddUnixListenSocket /home/test001/chroot/dev/log

最初の行でsocketの利用を有効化し最後の行でchroot配下のユーザがsocketにアクセスできるようにリンクを貼っています。リンクのもとは/dev/logのようです。

真ん中の行で受信するログのファシリティと送信先を指定しています。

これらの設定の後にsshとrsyslogを再起動してあげると、socketが作成されログ出力が可能になります。

socketが作れる数に上限があるらしく、全てのユーザでログが取れない。

/etc/rsyslog.d/user.conf
AddUnixListenSocket /home/test001/chroot/dev/log
AddUnixListenSocket /home/test002/chroot/dev/log
...
AddUnixListenSocket /home/test100/chroot/dev/log

というように指定したのですが、001-049までしかsocketが作られませんでした。調べるとrsyslogの7.4.7時点では50未満?が上限だったようです。

CHANGELOG見ると7.5.4から修正されているとのことだったので、バージョンアップで対応しました。

バージョンアップ方法

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6