Linux を実行しているデバイスがあり、これで信頼できないアプリケーションを実行する必要があります。私たちは、次のセキュリティ上の懸念を軽減しようとしています -
- 信頼されていないアプリケーションがコア OS データとバイナリに悪影響を与えることはできません。
- 信頼されていないアプリケーションが、別のアプリケーションのデータとバイナリに悪影響を与えることができないようにする必要があります
- 信頼できないアプリケーションは、CPU、メモリ、またはディスクを過剰に消費して、コア OS または他のアプリケーションに DoS/リソース不足のような状況を引き起こすことができないようにする必要があります。
信頼されていないアプリケーションの観点からは、独自のディレクトリと、おそらくマウントされた USB ドライブに対して読み書きできる必要があるだけです。
次のいずれかのアプローチを使用することを考えています -
アプローチ 1 - SELinux をサンドボックスとして使用する
- これは可能ですか?SELinux を少し読んだことがありますが、ポリシー ファイルの設定や実行時の強制など、少し複雑に見えます。クォータ制限を設定しますか?
アプローチ 2 - 自分で新しいサンドボックスを作成する
インストール時間中
- 信頼されていないアプリケーションごとに新しいアプリ ユーザーを作成する
- アプリケーション ユーザーのみが読み書きできるように、アプリケーション ディレクトリとファイル全体にアクセス許可をスタンプします。
- ulimit/quota を使用してアプリケーション ユーザーのクォータを設定する
実行時に、次を使用して信頼できないアプリケーションを起動します
- 開いているすべてのファイル記述子/ハンドルを閉じます
- chroot を使用して、ルートをアプリケーション ディレクトリに設定します。
- アプリケーション ユーザーのコンテキストでアプリケーションを起動する
上記についての考え?どちらのアプローチが他のアプローチよりも安全ですか? よりうまくいくかもしれない別のアプローチはありますか?何らかの理由で Android を移動する選択肢がないため、Android がネイティブで提供するサンドボックス機能を使用できません...
お知らせ下さい
ありがとう、