特定のリソースに対するアプリケーションアクセスの制限

特定のリソースに対するアプリケーションアクセスの制限

AndroidやiOSなどのモバイルオペレーティングシステムは、ユーザーが特定のタスクを実行するためにアプリケーションに具体的に付与する必要がある権限のセット(連絡先の読み取り/テキストメッセージの送信/カメラアクセスなど)を定義します。

Linuxカーネルレベルでも同様の概念を使用できますか?たとえば、いくつかのフラグを設定し、いくつかのメタファイルを指定し、読み取り/書き込み/実行よりも細かい特定のユーザーまたはグループのルールを定義することによって、プログラムを利用可能なシステムコールのサブセットに制限することによってセキュリティを保護します。改善できます。 。

プログラムがI / Oやネットワークアクセス(必ずしもそうではないと確信している)などの操作を実行できない場合は、状況によってはより安全になる可能性があります。

答え1

Androidモデルのアプローチをしたい場合は、サンドボックスでアプリケーションを実行できます。あるいは、それに加えて、、chroot(任意アクセス制御)を使用するか、権限のない別のユーザーを使用して特定のプロジェクトをさらに分離することもできます。これにより、他のユーザーやシステムに影響を与えることなく制限を簡単に適用できます。グループにも同様に適用されます。特定の権限を持つグループを作成し、そのグループにユーザーを追加します。SELinuxDAC

https://developer.android.com/guide/topics/permissions/requesting.html

Androidのアプローチは、サンドボックス内でアプリケーションを実行し、アプリケーションが特定の機能を実行できるようにすることです。外部そのサンドボックス。これと「カーネルレベルで」プロセス操作を制限するという概念との間には明らかな違いがあります。

これまでの回答は、そのようなシナリオで使用できるツールやユースケースの完全なリストではありません。たとえば、ファイアウォールを使用することは、インバウンドおよびアウトバウンドのネットワークアクセスを制限するもう1つの確実な方法です。sysctlたとえば、カーネル自体には、カーネルの構築方法やツールで有効/無効にできる多くの項目があります。しかし、ほとんどの場合、これは1つのアプリケーションではなくシステム全体に影響を与えます。

アプリケーションが安全でない可能性があると思われる場合は、そのアプリケーションを実行しないでください。あるいは、仮想マシンで実行することも、ある程度Dockerコンテナとして実行することもできます。ただし、後者は慎重に構成する必要があります。

最後に、ソースコードでアプリケーションの機能を確認したり、すでにこれを行った人から関連情報を見つけてください。最終的には、何をインストールしているのかを把握し、Linuxディストリビューションの公式リポジトリを維持するように努力する必要があります。

関連情報