はじめに
AppArmor や SELinux などの強制アクセス制御 (MAC) システムを使用すると、システム管理者はリソースへのアクセスを許可または拒否し、Linux カーネルに組み込まれたシステムを制御できます。どちらも同じタスクを実行しますが、これらのシステムは動作が異なり、さまざまな機能を提供します。
この記事では、AppArmor と SELinux の違いについて説明し、2 つのシステムの主な機能を示します。
AppArmor と SELinux の比較
SELinux と AppArmor はどちらも、アプリケーションを分離し、システムの一部を侵害した攻撃者へのアクセスを制限するセキュリティ ツールを提供します。
AppArmor は、最初にアクセスを許可し、次に制限を適用することで機能します。ただし、SELinux はデフォルトですべてのアプリケーションへのアクセスを制限し、適切な証明書を提示するユーザーにのみアクセスを許可します。
2 つのシステムには多くの共通点がありますが、いくつかの相違点もあります。
比較ポイント | AppArmor | SELinux |
---|---|---|
アクセス制御 | パスに基づくセキュリティ プロファイルを使用します。 | ファイル ラベルに基づくセキュリティ ポリシーを使用します。 |
可用性 | どのディストリビューションでも利用できますが、主に SUSE と Ubuntu で使用されます。 | どのディストリビューションでも使用できますが、主に RHEL/Fedora システムで使用されます。 |
習得の難しさ | 学習曲線が短く、セットアップと管理が簡単です。 | より複雑で直感的ではありません。 |
独立した検証 | 可能です。 | できません。 |
複雑な構成が必要 | いいえ | はい |
MLS/MCS | いいえ | はい |
システム パフォーマンスへの影響 | ありませんが、起動時間が長くなります. | なし |
ポリシー ルール | 柔軟性に欠ける | 柔軟。 |
コントロールのレベル | ミディアム。 | 高い |
AppArmor
AppArmor は、バージョン 7.10 以降の Ubuntu にデフォルトで含まれている実用的な Linux セキュリティ モジュールです。このモジュールにより、開発者はアプリケーションが特定のファイルを使用することを制限できます。したがって、AppArmor は潜在的に脆弱なアプリケーションへの損害を防ぎ、Web サーバーなどの悪用されやすいソフトウェアを保護します。
モジュールは、セキュリティ プロファイルを使用して、アプリケーションに必要なアクセス許可を決定します。プロファイルは、通常は起動時にカーネルに読み込まれるテキスト ファイルです。
AppArmor は、主に 2 種類のルールをプロファイルに適用します:
- パス エントリ .アプリケーションがアクセスできるファイルを決定します。
- 機能エントリ .これらのルールは、限定されたプロセスが使用できる権限を指定します。
プロファイルは特定のアプリを制限するように設計されており、2 つのモードで動作します。
で- 苦情モード .このモードでは、システムはポリシー違反の試みを報告しますが、ルールは適用しません。
- 強制モード .強制モードでは、新しいプロファイルが検査され、すべての違反が停止されます。
AppArmor は次のコンポーネントで構成されています:
- サーバー アナライザー .ポートをスキャンし、それらをリッスンしているアプリケーションを自動的に見つけます。また、プロファイルのないアプリケーションや、AppArmor が制限する必要のあるアプリケーションも検出します。
- プロフィール ジェネレーター .アプリケーションを分析してプロファイル テンプレートを作成する静的プロセス
- オプティマイザー .このコンポーネントは、イベントをログに記録し、通常の動作のプロファイルに収集します。
Ubuntu とは別に、AppArmor はデフォルトで Debian、SUSE Enterprise Server、OpenSUSE ディストリビューション、およびその他のディストリビューションで実行されます。モジュールのステータスを確認するには、次を実行します:
sudo apparmor_status
出力は、AppArmor がシステムでアクティブであることを示しています。このコマンドは、インストールされているプロファイルとアクティブな限定プロセスのリストも出力します。
AppArmor の利点
AppArmor の主な利点は、シンプルさと短い学習曲線です。このモジュールは SELinux よりもはるかに複雑ではないため、セットアップと管理が簡単です。
このツールは、アクセス制御のためにプロファイル (テキスト ファイル) を直接操作し、ファイル操作はより簡単です。この機能により、AppArmor はセキュリティ ポリシーを備えた SELinux よりもユーザー フレンドリーになります。
パスベースの実装により、AppArmor はシステム上のあらゆるファイルを保護し、まだ存在しないファイルに対してもルールを指定できるようにします。プログラムの学習モードにより、AppArmor は変更に適応できるようになり、優先されるアプリケーションの動作が強制されます。
AppArmor の欠点
AppArmor では、複数のパスが同じアプリケーションを参照できます。同じ実行可能ファイルへのこれらの異なるパスにより、1 つのアプリに対して複数のプロファイルが作成され、セキュリティ上の問題が発生する可能性があります。
さらに、AppArmor の最大の強みであるシンプルさも、このプログラムの安全性が低いと見なされている理由です。
AppArmor には、Multi-Level Security (MLS) と Multi-Category Security (MCS) がありません。 MCS サポートがないため、AppArmor は MLS を必要とする環境ではほとんど効果がありません。
もう 1 つの欠点は、ポリシーの読み込みにも時間がかかるため、システムの起動が遅くなることです。
SELinux
SELinux (Security Enhanced Linux) は、Linux カーネルに組み込まれている Linux セキュリティ モジュールです。このシステムにより、システム管理者は誰がリソースにアクセスできるかをより詳細に制御できます。
SELinux は、システムのファイル、プロセス、およびポートにラベルを割り当てます。 ラベルの種類 的を絞ったポリシーには不可欠ですが、タイプの施行 SELinux で 2 番目に重要な概念です。
ラベル付けは、さまざまなタイプのラベルをファイルおよびプロセスに付与するグループ化メカニズムとして機能します。タイプ強制セキュリティ モデルは、SELinux が特定のラベル タイプのプロセスが別のラベル タイプのファイルにアクセスできるかどうかを判断するのに役立ちます。
システムは、(AppArmor とは対照的に) デフォルトでアクセスを制限します。リソースにアクセスするには、ユーザーを適切に構成する必要があります。
SELinux は以前の決定を Access Vector Cache にキャッシュします (AVC )、たとえば、アクセスを許可または制限します。キャッシングの決定により、アクセス制御プロセスが高速化されます。たとえば、アプリケーションがファイルにアクセスしようとすると、SELinux は AVC をチェックし、以前の決定に基づいてアクセスを許可または拒否します。
RHEL、CentOS、および Fedora には、SELinux がインストールされているか、デフォルトで使用可能です。 SELinux の現在のステータスを確認するには、次のコマンドを実行してください:
sudo sestatus
注意 :ガイドに従って、CentOS で SELinux を有効にするか、CentOS で SELinux を無効にします。
SELinux の利点
複雑なポリシーにもかかわらず (そしてそのせいで)、SELinux は Linux セキュリティのより安全なオプションと見なされています。
ラベル付けとタイプの適用により、SELinux は、ポリシー ルールで許可されている場合にのみアクセスを許可できます。このプロセスにより、より堅牢で詳細なアクセス制御が実装されます。
MLS 互換であることにより、SELinux はより優れたアクセス機能を提供します。たとえば、基本的な MLS 原則の 1 つは、ユーザーが機密レベル以下のファイルのみを読み取ることができるというものです。ただし、SELinux を使用すると、システム管理者は独自の機密レベルとより低い機密レベルでファイルを読み書きできます。
デフォルトでは、システムはファイルを相互およびホストから分離し、分離を維持します。たとえば、ファイルには次のようなさまざまな権限のセットがあります:
- 所有者 (ユーザー)。
- ファイルを保持するグループ
- ファイルにアクセスしている他のユーザー/グループ
注意 :プロセスの効率が向上するため、アクセス決定をキャッシュすることも大きなメリットです。
SELinux の欠点
SELinux は、システム管理者に多用途のアクセス制御ツールを提供します。ただし、このセキュリティ モジュールにはいくつかの欠点があります。
SELinux の学習、セットアップ、および管理は非常に困難です。プログラムはアプリケーションやファイルへのアクセスを効率的に制御しますが、初心者にとって潜在的な問題のトラブルシューティングは困難です。エラー メッセージが実際に何を意味し、どこで問題を探すべきかを判断することは必ずしも容易ではありません。全体として、SELinux はユーザーフレンドリーではなく、経験の浅い管理者は急な学習曲線に直面する可能性があります。
重要 :SELinux は、ファイルのラベルが正しくない場合、アクションを拒否することがよくあります。
結論
このテキストを読めば、SELinux と AppArmor の長所と短所がわかります。どちらのシステムも、Linux セキュリティに対して異なるアプローチを提供し、システム リソースの不正アクセスや変更からマシンを保護します。
不変のバックアップを使用してランサムウェアと戦ったり、データベースを保護するためのさまざまな手順を使用するなど、システムを保護する他の方法について学習することをお勧めします。