Linuxでのファイル監査:ディレクトリツリーの削除を監視する方法は?


9

サーバーでフォーラムスクリプトを実行していますが、どういうわけか少数の添付ファイルが失われ始めます。何が何を削除しているのかを知りたい。Linuxのauditd(auditctl)を設定して、ディレクトリツリー(添付ファイルはマルチレベルのディレクトリツリー内に保存されます)を監視して、ファイルの削除を監視する方法を教えてください。

これには他のツールを使用する必要がありますか?

回答:


8

これは私が前の質問に書いた答えです:

一般に、lsofを24時間年中無休で実行する必要なしに、プロセス/ユーザー/ファイルが何をしているかを知りたい場合は、auditctlを使用します。

最近のカーネルの監査制御があると仮定すると、制御は単純な操作であるはずです。(これは、Debian-fuにあります。RedHatを実行している場合は、適切に変換してください)

# apt-get install auditd

実行中であることを確認してください(/etc/init.d/auditd status)。

auditctl -a entry,always -F arch=b64 -S open -F pid=<process id>

32ビットarchを実行している場合は、b64をb32に置き換えます。openは、任意のシステムコールまたは「all」という単語で置き換えることができます。

詳細については、auditctlのマンページを参照してください。

このメソッドを使用して、「リンク解除」システムコールを監視するように要求できます。

-wパラメータはファイル/ディレクトリを監視するのに役立ちますが、manページで説明されているように、注意事項があります。

-w pathファイルシステムオブジェクトの監視をpathに挿入します。ウォッチを最上位ディレクトリに挿入することはできません。これはカーネルによって禁止されています。ワイルドカードもサポートされておらず、警告が生成されます。監視の方法は、inodeを内部的に追跡することです。つまり、ディレクトリにウォッチを置くと、ファイルイベントのように見えますが、これは実際にはメタデータの更新にすぎません。これを行うと、いくつかのイベントを見逃す可能性があります。ディレクトリ内のすべてのファイルを監視する必要がある場合は、各ファイルに個別の監視を配置することをお勧めします。syscall監査規則とは異なり、監視はカーネルに送信される規則の数に基づいてパフォーマンスに影響を与えません。


私は:(私は、PHPはCGIモードで動作していることができないことがある。また、常に新たなプロセスだ、私は単一のプロセスを見ますが、変更のため、ファイルシステムの特定の部分を見ていないしたい。。。
ウラジスラフRastrusny

はい、編集を参照してください、私が作った、ファイルシステムのディレクトリを監視するためのパラメータがありますが、警告またはファイルがあります。
アーロン・テート、

約1000のフォルダーと約50kのファイルがあります。したがって、これも機能しません... :(
Vladislav Rastrusny

一般に、警告に気づいている限り、先に進んで、監視したいフォルダを含む最上位のディレクトリに監視を置くことができるはずです。
アーロン・テート、

私は同じことをする必要があります(フォルダーの削除を監視して、削除したPID /プロセス名を見つけることができます)が、これは機能していないようです(少なくとも3.xカーネルでは)。「auditctl -a entry、always -F arch = b64 -S unlink -w / path / to / dir」を実行して削除を追跡すると、「syscallではwatchオプションを指定できません」というメッセージが表示されます。誰かアイデアはありますか?
IBBoard 2012


0

いくつかのアイデア。を使用straceしてアプリケーションの動作を確認できますが、ログのログが生成され、システムの速度が低下する場合があります。

もう1つのアイデアは、を使用してから、ファイルinotifywaitでそれを使用lsof/fuserしているものを確認することです。このスクリプトを高い優先度で実行して(可能な場合)、情報をできるだけ正確にすることができます。unlinkイベントが配信される前にファイルが失われるため、おそらく呼び出しをキャッチしません。


私はできない。しばらくすると削除されたファイルを見つけるため、straceを実行するプロセスがわかりません。PHPがCGIとして実行されており、IDが異なる多数のPHPプロセスが存在するため、inotifywaitも機能しません。
Vladislav Rastrusny、2010年

inotifyは、実行中のプロセスではなく、ファイルシステムの監視に使用されます。straceの場合-f、子を追跡するには、フラグを使用してマスター親プロセスをトレースする必要があります。
Dan Andreattaが2010年

0

fenixのauditdの推奨事項は理想的なようですが、AIDEなどのファイルシステムIDSが役立つ場合があります。残念ながら、分離しようとしているものを十分に細かくすることはほとんどありません。

私はあなたが説明するような問題の解決策としてスクリプトを書くことがよくあります。推奨されるソリューションで目的を達成できない場合は、自分で書いてください。多くの場合、それほど複雑ではありません。


どうやら、それはファイルの変更を見つけるためだけのものです。リアルタイム監視用ではありません。
Vladislav Rastrusny、2010年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.