AppArmorはFirejail --net=noneと同じです。

AppArmorはFirejail --net=noneと同じです。

firejail --net=noneネットワークインターフェイスを持たないコンピュータのように見えるサンドボックスを作成します。

AppArmorを使って同じ結果を得ることはできますか? AppArmorはdeny networkすべてを拒否しますが、アプリケーションからネットワークインターフェイスを隠すことはないようです。

答え1

Firejailがネットワークインターフェースを「消える」のは、新しい環境でアプリケーションを実行するためです。ネットワークネームスペース:

説明する

ネットワークネームスペースは、ネットワーク関連のシステムリソース(ネットワークデバイス、IPv4およびIPv6プロトコルスタック、IPルーティングテーブル、ファイアウォールルール、ディレクトリ/proc/net(へのシンボリックリンク/proc/PID/net)、/sys/class/net ディレクトリの下のさまざまなファイル/proc/sys/net、ポート番号(ソケット))の分離を提供します。 、等。
[...]

新しいネットワークネームスペースには、最初はインターフェイス(独自のローカルインターフェイスインスタンスを除く)はありませんlo。これは、アプリケーションがインターフェイス(ローカルインターフェイスインスタンスを除くlo)を表示できず、便利なネットワーク関連タスクを実行できない理由です。

鎧を適用プログラムがリソースにアクセスするときにプログラムに対する追加の制限を作成し、プログラムを実行しているユーザーが通常許可する操作が成功しないようにします。したがって、アプリケーションが以前の引用で述べたさまざまなリソースに正常にアクセスまたは対話するのを防ぐようにAppArmorを設定できると想像できますが、これらのリソースは消えません。アプリケーションは異なる結果を得るでしょう。結果が空であるか、そのオブジェクトが存在しないという応答を受け取るのではなく、要求するとエラーが発生します。質問に対する答えは「いいえ」です。

注:firejail --net=noneネットワーク名前空間のみが分離されるわけではありません。これらのインターフェイスに対するクエリを回避し(試行中にエラーも発生します)、他のほとんどの名前空間(ユーザー、pid、マウント...)を分離するなど、はるかに多くの作業を行います。

分離に使用できる他のツールもたくさんあります。場合によっては、機能が重複する可能性がありますが、通常は一緒に使用されます。たとえば、FirejailはApparmorで使用できます。SELinux(AppArmorの代替)またはcgroup。または例えば2番目の計算(2)場合によっては、要求されたタスクが実際には完了していなくても正常に完了したことをアプリケーションに知らせるように欺くことができます。これは一例です。ネットワークインターフェイスが表示されないようにすることはできません。

関連情報