CentOSを使用していますが、SFTPロギングを有効にする方法はすでにわかりました。その後、FileZilla(ユーザー側から)とtail -f /var/log/sftp.log
をサーバーから使用してテストすると、ユーザーからのすべてのアクティビティが確実にログに記録されます。よくできました!
しかし、私はこれに関連して、以下のようにいくつかの重要な質問をまだ持っています:
例えば:
Feb 27 02:59:31 myhostname sftp-server[13307]: session opened for local user michael from [10.xxx.xxx.xxx]
Feb 27 03:01:00 myhostname sftp-server[13312]: session opened for local user jimmy from [10.xxx.xxx.xxx]
...
...
Feb 27 04:00:34 myhostname sftp-server[13307]: mkdir name "/var/www/html/nnnnn" mode 0777
...
Feb 27 04:01:30 myhostname sftp-server[13307]: rmdir name "/var/www/html/nnnnn"
Feb 27 04:01:30 myhostname sftp-server[13307]: opendir "/var/www/html"
Feb 27 04:01:30 myhostname sftp-server[13307]: closedir "/var/www/html"
言及されたユーザー名はありません行自体に。 (ログイン/ログアウトアクションを除く)
そして別の質問は:
何かアイデアはありますか?
次に、ログファイルの出力例をいくつか示します。
Feb 26 23:04:55 pegasus internal-sftp[32524]: session opened for local user joeuser from [123.123.123.123]
Feb 26 23:04:57 pegasus internal-sftp[32524]: opendir "/home/joeuser"
Feb 26 23:04:58 pegasus internal-sftp[32524]: closedir "/home/joeuser"
Feb 26 23:05:01 pegasus internal-sftp[32524]: opendir "/home/joeuser/"
Feb 26 23:05:01 pegasus internal-sftp[32524]: closedir "/home/joeuser/"
Feb 26 23:05:02 pegasus internal-sftp[32524]: opendir "/home/joeuser/upload"
Feb 26 23:05:02 pegasus internal-sftp[32524]: closedir "/home/joeuser/upload"
Feb 26 23:05:07 pegasus internal-sftp[32524]: opendir "/home/joeuser/upload"
Feb 26 23:05:07 pegasus internal-sftp[32524]: closedir "/home/joeuser/upload"
Feb 26 23:05:09 pegasus internal-sftp[32524]: session closed for local user joeuser from [123.123.123.123]
上記の出力に注目すると、角括弧internal-sftp[32524]
の間に数字があります。番号は32524です。これはユーザーjoeuserのセッションIDを表すため、この文字列をどのユーザーのログインに関連するメッセージと一緒に使用できます。
/etc/logrotate.d/*
の下で、さまざまなログのログローテーションスケジュールを変更できます。通常、各ログファイルには、このディレクトリに対応するファイルがあります。したがって、たとえばsyslog
ファイルを変更したり、sftp.log
ログファイル用に独自に作成したりできます。
また、logrotate
には、次の行を含む構成ファイル/etc/logrotate.conf
があります。
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
これらは、独自の設定がない場合に、/etc/logrotate.d
ディレクトリ内のファイルが使用するものです。したがって、ほとんどのファイルは毎週ローテーションされ、そのうち4つが保持されます。 6か月間保持したい場合、rotate
オプションで6か月間おおまかに保持すると、4 * 6 = 24になります。
syslog
を介して/var/log/sftp.log
にログインしている場合、このファイル/etc/logrotate.d/syslog
に変更を加える必要があります。必要な変更を加えると、ファイルは次のようになります。
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/sftp.log
{
rotate 24
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
syslog
を使用しているため、これらすべてのログファイルもローテーションする必要があります。これらのログも24週間保持してください。これが受け入れられない場合、他の唯一の行動は、このファイルにsyslog
のように別のセクションを作成することです。
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
/var/log/sftp.log
{
rotate 24
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
これにはいくつかの副作用があります。1つは、syslog
デーモンを毎週1回ではなく毎週2回再起動することです。ただし、logroate構文では、ログファイルが同じサービス、つまりsyslog
によって生成されている場合、特定のログファイルのローテーションスケジュールを細かく制御して他のログファイルをローテーションすることはできません。