chrootされたSFTP専用ユーザのFTP転送logを簡単に/var/log/sftp.logへはきだす


Socketを使って出す とか色々あるみたいだけど、
タイトル通り、簡単に実現したい方向け。

環境
CentOS6.5
Filezilla3.28(最新版)

1.sshd_config設定ファイルの変更

vim /etc/ssh/sshd_config を以下に変更↓

sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server -f LOCAL5 -l VERBOSE`
Subsystem sftp internal-sftp```
Match Group sftp_group
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp -f AUTH -l INFO
#PasswordAuthentication yes
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server

2.ssh_config再起動

service sshd restart

解説:
・chroot化 →/data/sftp/クライアント名 以下みられない
・SSHログイン不可 →SFTP送受信専用ユーザ完成。セキュリティ上SSHでTeraTermとかで入れないように。

3.rsyslog.conf設定ファイルの変更

vim /etc/rsyslog.conf

↓以下を追加↓

rsyslog.conf
if $syslogfacility-text == 'authpriv' and $msg contains 'flags WRITE,CREATE,TRUNCATE mode 0666' then /var/log/sftp.log

4.rsyslog.conf再起動

service rsyslog restart

解説:
/var/log/secure より出力したいlogの一部を上記のように記載
例1)ファイルのダウンロードだけsftp/logに書き込みたい →上記を追加
例2)/var/log/secureの全てをsftp.logに書き込みたい →if $syslogfacility-text == 'authpriv' then /var/log/sftp.log

とりあえず上記1.~4.を実施することでタイトル通りのことはできます。

あとはお好みでローテーション設定も追加すればよいと思います。

5.logrotate.d/syslogファイルの編集

vim /etc/logrotate.d/syslog

↓以下を追加↓

/var/log/sftp.log

詳しくは以下のサイトで情報があるので参考にしてください。
http://fanblogs.jp/kumon/archive/18/0

以上