SFTP経由で行った作業ログを記録する方法をご紹介します。
■作業内容
1.syslogに出力された内容をファイルへ出力するようにsyslogのコンフィグに追記する
1 2 3 4 |
# vi /etc/rsyslog.conf # This rule to save the log output of sftp local5.* /var/log/sftp.log |
ここでは、syslogに出力されるファシリティ(facility)をlocal5と利用者が自由に使えるファシリティを使う。
また、プライオリティ(priority)については*(アスタリスク)ということで、特に指定はしない。
2.出力先のファイルを予め作成する
1 2 |
# touch /var/log/sftp.log |
3.rsyslog.confを反映させるためrsyslogのデーモンを再起動する
CentOS6系まで
1 2 |
# service rsyslog restart |
CentOS7系から
1 2 |
# systemctl restart rsyslog |
4.opensshの設定ファイルを変更してsftpの操作ログをsyslogに出力するように編集する
1 2 3 |
# vi /etc/ssh/sshd_config Subsystem sftp /usr/libexec/openssh/sftp-server -f LOCAL5 -l VERBOSE |
「 -f LOCAL5 -l VERBOSE」を追記することでsyslogのlocal5に出力されるようになる
ここではログのレベルの「VERBOSE(INFO)」ということでクライアントのために実行した操作を記録することにします。
5.設定反映のためsshのデーモンを再起動する
※今回、sshの設定ファイルを変更しており、記述にミスがあった場合リモートで作業ができなくなる可能性が十分ありますので
設定の記述チェックを行ってから再起動するようにしましょう。
1 2 3 |
# which sshd /usr/sbin/sshd |
⇒sshdのフルパスをチェックする
1 2 |
# /usr/sbin/sshd -t |
⇒何も表示されなければOKだが、表示された場合は設定ファイルの記述を見直す。
CentOS6系まで
1 2 |
# service sshd restart |
CentOS7系から
1 2 |
# systemctl restart sshd |
6.ログの出力テスト WinSCP等のソフトを使ってsftpの機能を使う
1 2 3 4 5 6 7 |
# tailf -100 /var/log/sftp.log Jun 20 16:05:56 sv9 sftp-server[13210]: session opened for local user root from [192.168.0.1] Jun 20 16:05:56 sv9 sftp-server[13210]: received client version 5 Jun 20 16:05:56 sv9 sftp-server[13210]: realpath "." Jun 20 16:05:56 sv9 sftp-server[13210]: opendir "/root" Jun 20 16:05:56 sv9 sftp-server[13210]: closedir "/root" |
上記のようなログが流れれば正常にログを出力していることになる。
7.ログファイルのローテート設定を行う
1 2 3 |
# vi /etc/logrotate.d/syslog /var/log/sftp.log |
以上で、sftpのログ出力ができるようになる。