SCPを使用してコピーされたファイルのログを保持する方法はありますか?監視する必要のあるファイル(特定のフォルダーとそのサブフォルダー内)を含むサーバーを管理しているため、誰かがSSH経由でファイルをコピーする場合は、コピープロセスをログに記録する必要があります。
ユーザーのBashコマンド履歴を調べて、scp
で始まるコマンドを検索することを考えましたが、それはプライバシーの露骨な侵入であり、ユーザーがこの履歴を削除するのも非常に簡単です(悪意がなくても)。
誰かがこれの方法を知っていますか?ユーザー名/パスワードを使用してサーバーへのWebベースのインターフェイスを作成でき、ダウンロードのログ記録は簡単ですが、「ベアメタル」ソリューションがある場合はそれに興味があります。
編集:FascistLoggingやDebugloggingなどのSSHDのロギングオプションを調べましたが、それらはあまり適切ではなかったようです。それらは実際に解決策ですか?
編集2:この質問はStack Overflowではなく、Server Faultにあるべきだと私は信じ始めています...どうすればよいですか?
incron を使用します。 Linuxカーネルのinotify
サブシステムを利用しており、監視対象のディレクトリツリー/ファイルが変更された場合は、必要なものを実行できます。 incrontab
ファイル形式は、たとえば非常に単純です。
/your/directory IN_MODIFY /usr/local/bin/log_file_modifications.sh $@/$#
/usr/local/bin/log_file_modifications.sh
ディレクトリツリーで何かが変更されるたびに/your/directory
を実行し、フルパス($@
引数)と変更されたファイル($#
引数)を使用してスクリプトを呼び出します。 。
スクリプトは、ほぼ同じくらい単純である可能性があります
#!/bin/bash
logger -t modification_stalker "Yo dawg, these files got modified $1 $2 ..."
これはsftpのみであり、最初に要求されたscpではないことに気付きましたが、人々を助けるためにここに答えを残しています。
これに対する答えを自分で見つけようとしているので、ここに行きます。
まず、sshが使用するsftpサブプログラムのロギングを有効にする必要があります。
/ etc/ssh/sshd_config内
Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO
次に、sshdを再起動しますが、特定のディストリビューションで再起動します。
service sshd restart
これで、scpログメッセージが/ var/log/messagesのように表示されるか、syslogの設定に応じて/var/log/auth.logのように表示されるはずです。
Syslog-ngを使用しており、sftp転送のログをsshの残りのログとは別にしたいと考えています。
/etc/syslog-ng/syslog-ng.conf内:
#sftp configuration
destination sftp { file("/var/log/sftp.log"); };
filter f_sftp { program("sftp-server"); };
log { source(s_src); filter(f_sftp); destination(sftp); };
これは、ログが/var/log/sftp.logに移動することを意味します。さまざまなオプションがあるため、SSHで使用しているプログラムに一致するようにprogram( "sftp-server")を編集する必要がある場合があります。
最後に、ログがsshログにも入るのを防ぐために、それらをフィルターで除外します。
filter f_auth { facility(auth, authpriv) and not filter(f_debug) and not filter(f_sftp); };
Syslog-ng(またはsyslogデーモン)を再起動します。*変更を再読み込みしようとしても機能しなかったため、再起動する必要がありました。
service syslog-ng restart
ここではsshdオプションは役に立ちません。 scpは、リモートホストで「scp-t--dest_file」のようなものを実行するだけです。
最も簡単な方法-コマンドライン引数をログに記録するために、実際のscpプログラムのラッパーを作成します。
OpenSSH
は、scp
のロギングをサポートします。したがって、VERBOSE
モードをオンにすると、クライアントが通過したディレクトリも表示されます。
ログチェックを表示するには
/var/log/auth.log
Sshdの詳細なログレベルを設定し、いくつかの監査ソフトウェアを使用できます。ログメッセージに基づいてレポートを作成するためにauditd。