[Linux]SELinux とは?

SELinuxとは、Security-Enhanced Linuxの略で、Linuxのカーネルレベルでシステムのセキュリティ機能を強化するモジュールです。セキュリティを強化したLinuxディストリビューションではありません。またSEとLinuxの間にはスペースは入りません。

SELinuxは、root権限より強いアクセス制御を提供できるため、第三者にrootを不正に取得されても、特定のファイルやポートに対してアクセスを遮断することができます。一方で、十分な理解がないと意図しないアクセス制御によりトラブルの原因にもなります。SELinuxの主な目的は、システム上で実行されるプロセスとファイルに対するアクセス制御を強化して、セキュリティの脆弱性や攻撃からシステムを守ることです。これは、次の主要な機能を通じて実現されます。

MAC(Mandatory Access Control)

MAC(強制アクセス制御)は、システム管理者が設定したアクセスルールに基づいて強制的にアクセスを制御します。この仕組みは、ユーザーが設定できる権限を上回るため、不正アクセスや権限昇格を防ぐことができます。

RBAC(Role-Based Access Control)

RBAC(ロールベースのアクセス制御)では、ユーザーごとに特定の役割を割り当てることで、システムリソースへのアクセスを管理します。これにより、自分の役割に応じた権限だけを持ち、不必要なアクセスを防ぐことができます。

TE(Type Enforcement)

TE(タイプ強制)は、ファイルやプロセスにラベルを割り当ててアクセス制御ポリシーに従い、ラベル間のアクセスを制限する仕組みです。これにより不適切なアクセスを防ぎ、セキュリティを向上させます。例えば、Webサーバーのプロセスに「web_server_t」、設定ファイルに「web_server_config_t」とラベルを割り当てアクセス制御ポリシーを設定すると、「web_server_t」は、「web_server_config_t」しかアクセスできなくなり、意図しないファイルへのアクセスを防ぐことができます。


SELinuxは、Red Hatベースのディストリビューション(Fedora、CentOS、AlmaLinuxなど)で採用されています。一方、Debianベースのディストリビューション(Ubuntu、Mint Linuxなど)では、デフォルトでAppArmorという別のセキュリティフレームワークが採用されています。SELinuxのほうが設定が複雑ですが、AppArmorより高度な機能を提供します。AppArmorは、設定がシンプルで理解しやすいメリットがあるようです。