
ある時点でファイルを変更しているように見える(複雑な)スクリプトを実行しています。スクリプト/プログラムが書き込み、chmod、chown、または私が同意しない他の操作を試みたときに警告を受けたいと思います。プログラムがファイルシステムの残りの部分に正常にアクセスできることを願っています。
アクセスを拒否するのは解決策ですが、スクリプトを root として実行する必要があるため動作しません。このスクリプトはすべてのアクセス制御設定を上書きできます。ルート以外のユーザーとしてスクリプトを実行できてもアクセスが失敗した場合、スクリプトは別のブランチを使用することを決定できます。そのため、アクセス拒否の代わりにアクセス警告を優先します。ソリューション(例:SE Linux)はありますか?
答え1
これを行う方法はいくつかあります。
審査
次のコマンドを使用して、ファイルの auditd モニタリングをイネーブルにします(auditd
サービスが実行中であることを確認した後)。
auditctl -a 終了、常に -F パス=/パス/to/ファイル
/var/log/audit/audit.log
次に、何が起こっているかを確認してください。
完了したら、次のコマンドを使用してルールを削除します。
auditctl -d 終了、常に -F パス=/パス/to/ファイル
ファン通知
fanotifyは、ウイルススキャナ用に特別に設計されたシステムです。これにより、他のプログラムがファイルを開くと、あるプログラムがイベント通知を受け取ることができます。その後、モニタープログラムはファイルへのアクセスを拒否したり、単にファイルを記録したりするなどの操作を実行できます。ここの利点はウォッチドッグは何もせずに単にイベントを待つことができるので、ファイルを開こうとするプログラムが遅れるだけです。。ウォッチドッグが続行を許可するまで失敗または成功しません。
しかし、このパスの問題は、fanotifyが新しいことであり、それにアクセスするために使用できる単純なコマンドラインユーティリティがないことです。独自のスクリプト(スクリプトライブラリにインタフェースがある場合)またはプログラムを作成する必要があります。
答え2
Linuxの場合、chattr +i the-file
ファイルの変更操作も防止されますroot
(他の作業を除くchattr
)。
答え3
システムがdtrace(Solarisおよびその派生製品、FreeBSD、Oracle Linux、Mac OS X)をサポートしている場合、dtraceスクリプトはすべてのユーザー(ルートを含む)が目的のファイルに対して上記の操作を実行するのを記録または防止することができます。
dtraceを使用すると、有罪プロセスを凍結して再開または終了できます。
答え4
きめ細かいファイルシステムへのアクセスを必要とする小規模なスクリプト操作では、複雑な監査ツールを使用したくない場合は、Gentooの「サンドボックス」ユーティリティが役立ちます。特に、選択したファイルへの書き込みアクセスを対話的に有効または無効にする簡単な方法を提供します(テストおよび展開シナリオ用)。
Gentooではデフォルトで使用できますが、他のディストリビューションにインストールすることはそれほど難しくありません。
http://git.overlays.gentoo.org/gitweb/?p=proj/sandbox.git;a=summary
内部的には、ファイルシステム呼び出しを傍受してフィルタリングする "libsandbox.so"ライブラリによって導入されたLD_PRELOADメカニズムの上に実装されています。また、きれいなインタラクティブシェルラッパーが付属しているので、保護されたシェルに入るには「sandbox」と入力するだけです。
OPが特別に要求した機能(偽の書き込み)をサポートします。 http://devmanual.gentoo.org/function-reference/sandbox-functions/index.html