web-dev-qa-db-ja.com

現在または過去にファイルを使用したプロセスを検出する方法

これは架空の質問であり、私が現在抱えている問題ではありません。

どのプロセスが現在ファイルを使用しているかをどのように検出しますかまたは過去

現在filenameにアクセスしているプロセスを確認するには、lsof filenameまたはfuser filenameが作業を行います。しかし、どのプロセスがfilename過去24時間以内にアクセスしたかを知りたい場合はどうでしょうか?

この醜い(*)ハックで逃れることができる

while true; do fuser filename; sleep 1; done

別の期間で24時間実行します。しかし、監査フレームワーク全体を設定せずに、実際にはより良いシステムがあるのでしょうか。



(*)fuserが1秒未満でアクセスを検出できない場合があることは言うまでもありません...

6
dr_

システムで監査が有効になっている場合は、そのサブシステムを使用して、特定のファイルへのアクセスを監査できます。

たとえば、/etc/shadowファイルを開いている(または開こうとしている)ファイルを監査するには、次のルールを使用できます。

auditctl -a exit,always -S open -F path=/etc/shadow

その後、このコマンドを使用して、このファイルへのアクセスに対応する監査済みイベントをリストできます。

ausearch -f /etc/shadow

監査システムを構成および照会するには、rootである必要があることに注意してください。

ルールの設定方法の詳細については auditctl(8) のマニュアルページを、監査ログのクエリ方法の詳細については ausearch(8) のマニュアルページを参照してください。

監査を有効にしていない場合は、詳細が異なるため、Linuxディストリビューションに固有の監査方法を調べる必要があります。

7
filbranden