2012-02-17 12 views
0

外部のプログラムやユーザがファイルを編集しないようにするにはどうすればよいのでしょうか?私が保護しなければならないファイルFがあるとしましょう。デフォルトでは、ルートとユーザだけがFを実行し、読み書きすることができ、他のすべてのユーザは読み取り権限しか持ちません。ファイルをlinuxで編集しないようにする

私は、重要なファイルFを保護しているプログラムがあり、編集の状況が異常であり、システムのセキュリティが侵害されているように見えるとします。ファイルFの変更を保存しないようにするには、可能であれば、その変更を試みたそのプログラムを終了してください。

私はfuserがそのプロセスを殺すことができることを知りましたが、修正が行われる前にはダメージがかかっていませんでした。私はinotifyを使って変更を検出します。私の問題は、エディタのほとんどが一時ファイルを作成し、変更して元のファイルに保存することです。私はIN_OPEN、IN_CLOSENOWRITEなどのようなイベントを受け取っていますが、イベントが完了した後にのみIN_CLOSEWRITEとIN_CLOSEMODIFYを取得します。ファイルを停止するにはどうすればいいですか?

誰かがシステムに入った後に私のプログラムが殺されるかもしれないと私は理解します。

編集:私は言及することを忘れました。私は監視されているファイルのアクセス許可を変更することはできません。

編集#2:私は絶えず監視されなければならない一連のファイルを持っています。私のプログラムはバックグラウンドで実行され、それらのファイルの変更が記録されます。私が以前に書いたすべてのファイルは、rootで編集して実行することができますが、望ましくない可能性のあるアクション(変更)があり、誰かがルートアクセス権を得て、それらの重要なファイルを編集している可能性があります。私はこれらの有害な変化を止める必要があります。答えから私は何とかそれらのファイルのスナップショットを取得しなければならないと推測します。しかし問題は、ファイルの数が約1〜400万巨大になる可能性があることです。スナップショットソリューションより効率的なソリューションは大歓迎です。

+0

あなたがしようとしていることを説明する質問を書く方が良いと思います。 – MarkR

+0

ファイルを*不変*: 'chattr + i file_to_protect'にします。詳細は 'man chattr'を参照してください。 – pmg

+0

pmg、私はchattr + iを調べました。問題は、監視しなければならないファイルです。つまり、いくつかのファイルに対して、それは法的措置です。他人の場合と同じように、データはいくつかのファイルに書き込まれます。有害な変化。 – bsd

答えて

0

あなたは、あなたのアプリケーションからファイルをロックしたり、それは「攻撃者は」ルートを持っている場合は、ファイルを保護する方法はありませんACLRWX

+0

私は言及することを忘れた私は監視されている任意のファイルのアクセス許可を変更することはできません – bsd

2

です変更する必要がありますどちらか。あなたが何をしても、ルートは元に戻すことができます。 あなたがそれを難し​​くしたいのであれば、そのファイルをCDROMのような読み取り専用のファイルシステムに置くことができます。

+0

質問は、ルートが行うことができますまたは元に戻すことができない何かがプログラムは、 cdromを入れるのは問題外です。 – bsd

+0

あなたは正確に何をしようとしているかについていくつかの追加情報を提供するべきでしょうが、一度ファイルが書き込まれると少ししかできないようです。 「既知の良い」バージョンを保存するために、ある種のLVMスナップショットを使用する可能性があります。あるいは、DragonlyBSDのハンマーファイルシステムを使用してください。 この種のアイデアの詳細については、http://en.wikipedia.org/wiki/Versioning_file_systemを参照してください。 – AntonioD

+0

バージョン管理システムを検討しました。私はこれまで使用していないので、 acプログラムから呼び出せるAPIを持つファイルシステムのバージョン管理ではありません)。応答を見て、可能な限り元に戻すことができますが、予防ではないようですか? – bsd

1

ルートが悪意のある場合、データの完全性を保証する方法はありません。理想的には、このような重要なシステムでは、誰もシステムをオフラインにしたりメンテナンス環境に陥らずにrootにする必要があります(一定の稼働時間が重要な場合はオフラインの間に代理システムに置き換えることも可能です)。

0

私はchattr + i(属性を不変に変更する)を実行して、ルートでさえもファイルを編集できないと信じています。ルートは常にこれを元に戻すことができますが、chattrについて知らないスクリプトキディからファイルを保護することができます。

0

あなたの監視アプリケーションが監視している各ファイルにロックを取得したらどうなりますか? flock、fctnlなどが動作する可能性があります。その後、他のアプリケーションはファイルを編集できなくなります。

これがどのように削除に影響を与えるかはわかりません(これは有効かもしれません)。

関連する問題