web-dev-qa-db-ja.com

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

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

1
dimalukas

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

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

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

また、そのマウントポイントに何があるかについての質問がありますか?それがこのシステムにのみ関連するものである場合、誰かがそれを変更できるかどうかは重要ですか?マシンの完全な管理アクセスを取得した場合、他のすべてを台無しにし、バックドアをそのままにして、少なくとも問題のパーティションを破壊する可能性があります。変更する必要がなく、内容が失われないようにしたい場合は、読み取り専用ストレージに配置する方が簡単です。そして、バックアップを取るために。

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

1
ilkkachu