1.3. SELinux の例
Security-Enhanced Linux (SELinux) のセキュリティー上の利点は、多くの実用的なシナリオで有効です。プロセス分離とユーザー制限の実際の事例を検証することで、SELinux が特権昇格、設定エラー、および一般的な脆弱性をどのように軽減するのかが理解できます。
SELinux は、以下のようないくつかの方法でシステムセキュリティーを強化します。
- デフォルトのアクションは拒否です。アクセスを許可する SELinux のポリシールール (ファイルを開くプロセスなど) が存在しない場合は、SELinux によりアクセスが拒否されます。
-
制限付きユーザーは特権が限定されます。Linux ユーザーを制限付き SELinux ユーザーにマッピングして、セキュリティールールを適用できます。たとえば、Linux ユーザーを
user_uにマッピングすると、そのユーザーはsudoやsuなどの setuid アプリケーションを実行できなくなります。 - SELinux ドメイン は、プロセスとデータの分離を強化します。ドメインを使用して、どのプロセスが特定のファイルやディレクトリーにアクセスできるかを定義します。たとえば、攻撃者は Samba サーバーを侵害しても、そのサーバーを使用して、MariaDB データベースなど、他のプロセスで使用されるファイルにアクセスできません。
-
SELinux は設定エラーを軽減します。攻撃者は、Domain Name System (DNS) のゾーン転送を悪用して、偽の情報を注入できます。RHEL 上で Berkeley Internet Name Domain (BIND) を DNS サーバーとして実行し、ゾーン転送を制限しない場合、デフォルトの SELinux ポリシーにより、
namedデーモンやその他のプロセスがゾーン転送を使用してゾーンファイルを更新できなくなります。 [1]. -
SELinux はパストラバーサル攻撃を軽減します。攻撃者は、Apache Web サーバーの脆弱性を悪用して、
../などの特殊な要素を使用してファイルシステムにアクセスできます。SELinux を enforcing モードで実行する場合、ポリシーによりhttpdプロセスが不正なファイルにアクセスできないようにします。 -
SELinux は、SMAP 非対応プラットフォームでのカーネル NULL ポインター参照解除の悪用を防止します。攻撃者は、
mmap関数の脆弱性を悪用して、null ページに任意のコードを配置できます (CVE-2019-9213)。SELinux を enforcing モードで実行している場合、このポリシーによってこの種の攻撃が防止されます。 -
SELinux は *PTRACE_TRACEME の悪用を防止します。*
deny_ptraceブール値を使用すると、PTRACE_TRACEME の脆弱性 (CVE-2019-13272) からシステムを保護できます。これにより、攻撃者が root 特権を取得できないようにします。 -
SELinux は NFS の設定ミスを防ぎます。
nfs_export_all_rwおよびnfs_export_all_roブール値を使用すると、/homeディレクトリーを誤って共有するなど、ネットワークファイルシステム (NFS) の設定ミスを防ぐことができます。