/system
誰かが読み取り/書き込みモードで再マウントしようとするときに、マウント システム コールをブロックしたいと思います。つまり、次の実行を許可しないようにしたいと思いますmount -o remount,rw /system
。カーネルのコードを変更するにはどこを確認すればよいか、誰か知っていますか?/fs/namespace.c
マウントに関連する関数がどこにあるか調べてみましたが、よくわかりません。
答え1
SELinux や のようなものを使用することもできますseccomp
が、完全なルート権限があれば、パーティションをマウントせずに変更したり、その他の厄介な操作を行ったり、制限を回避するためにカーネル モジュールをロードしたりすることさえ可能なので、それほど簡単ではないかもしれません。少なくとも、一般的な穴をすべてブロックする包括的なルールセットが必要になります。
バイナリや C ライブラリを変更することmount
は解決策ではありません。既製のバイナリやライブラリを経由せずに、システム コールを直接呼び出す方が簡単だからです。
SELinux と通常の区画化および強化手段により、そもそもルートへの侵入が困難になり、他の理由でも役立つ可能性があります。
また、そのマウント ポイントに何があるかという疑問もあります。それがこのシステムにのみ関連するものであれば、誰かがそれを変更できるかどうかは問題ではありません。マシンの完全な管理者アクセス権を取得した場合、他のすべてを台無しにし、バックドアを残し、おそらく問題のパーティションを少なくとも破壊することができます。変更する必要がないと予想し、コンテンツの損失を防ぎたいだけであれば、読み取り専用ストレージに配置する方が簡単です。バックアップも作成します。
そこにあるファイル システムが複数のシステムで使用されている場合は、ネットワーク経由でマウントされている可能性があります。その場合、書き込みの防止はサーバー側で行う方がよいため、カーネルが読み取り/書き込みマウントを試行しても、動作しません。