マウントシステムコールのブロック

マウントシステムコールのブロック

/system誰かが読み取り/書き込みモードで再マウントしようとするときに、マウント システム コールをブロックしたいと思います。つまり、次の実行を許可しないようにしたいと思いますmount -o remount,rw /system。カーネルのコードを変更するにはどこを確認すればよいか、誰か知っていますか?/fs/namespace.cマウントに関連する関数がどこにあるか調べてみましたが、よくわかりません。

答え1

SELinux や のようなものを使用することもできますseccompが、完全なルート権限があれば、パーティションをマウントせずに変更したり、その他の厄介な操作を行ったり、制限を回避するためにカーネル モジュールをロードしたりすることさえ可能なので、それほど簡単ではないかもしれません。少なくとも、一般的な穴をすべてブロックする包括的なルールセットが必要になります。

バイナリや C ライブラリを変更することmountは解決策ではありません。既製のバイナリやライブラリを経由せずに、システム コールを直接呼び出す方が簡単だからです。

SELinux と通常の区画化および強化手段により、そもそもルートへの侵入が困難になり、他の理由でも役立つ可能性があります。

また、そのマウント ポイントに何があるかという疑問もあります。それがこのシステムにのみ関連するものであれば、誰かがそれを変更できるかどうかは問題ではありません。マシンの完全な管理者アクセス権を取得した場合、他のすべてを台無しにし、バックドアを残し、おそらく問題のパーティションを少なくとも破壊することができます。変更する必要がないと予想し、コンテンツの損失を防ぎたいだけであれば、読み取り専用ストレージに配置する方が簡単です。バックアップも作成します。

そこにあるファイル システムが複数のシステムで使用されている場合は、ネットワーク経由でマウントされている可能性があります。その場合、書き込みの防止はサーバー側で行う方がよいため、カーネルが読み取り/書き込みマウントを試行しても、動作しません。

関連情報