web-dev-qa-db-ja.com

SSH経由で行われたSCPでファイルコピーを監視する

SCPを使用してコピーされたファイルのログを保持する方法はありますか?監視する必要のあるファイル(特定のフォルダーとそのサブフォルダー内)を含むサーバーを管理しているため、誰かがSSH経由でファイルをコピーする場合は、コピープロセスをログに記録する必要があります。

ユーザーのBashコマンド履歴を調べて、scpで始まるコマンドを検索することを考えましたが、それはプライバシーの露骨な侵入であり、ユーザーがこの履歴を削除するのも非常に簡単です(悪意がなくても)。

誰かがこれの方法を知っていますか?ユーザー名/パスワードを使用してサーバーへのWebベースのインターフェイスを作成でき、ダウンロードのログ記録は簡単ですが、「ベアメタル」ソリューションがある場合はそれに興味があります。

編集:FascistLoggingやDebugloggingなどのSSHDのロギングオプションを調べましたが、それらはあまり適切ではなかったようです。それらは実際に解決策ですか?

編集2:この質問はStack Overflowではなく、Server Faultにあるべきだと私は信じ始めています...どうすればよいですか?

2
CamilB

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 ..." 
7

これは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プログラムのラッパーを作成します。

1
Andrew Filonov

OpenSSHは、scpのロギングをサポートします。したがって、VERBOSEモードをオンにすると、クライアントが通過したディレクトリも表示されます。

ログチェックを表示するには

/var/log/auth.log
0
Silviu

Sshdの詳細なログレベルを設定し、いくつかの監査ソフトウェアを使用できます。ログメッセージに基づいてレポートを作成するためにauditd。

0
DukeLion