第 23章SELinux(Security Enhanced Linux)

23.1. SELinux の概要

インターネット上に公開したサーバーは、常にクラッカーからの脅威にさらされています。ネットワークサービスのセキュリティホールはしばしば発見され、その度に対応を迫られるシステム管理者の労力とコストを無視することはできません。不正アクセスに対する様々な防御手段が存在しますが、近年、OS 自体のセキュリティ機能を拡張した「セキュア OS」と呼ばれる OS が注目を集めています。SELinux(Security Enhanced Linux)もその 1 つであり、Linux システムのセキュリティ機構を拡張するためのモジュールです。米国の国家安全保障局が GNU GPL ライセンスで配布しており、Turbolinux 10 Server のカーネルには、標準で SELinux が組み込まれています(ただし、初期設定では、SELinux の機能は無効にしています)。

セキュア OS とは、一般的に以下の要件を満たしている OS のことを呼びます。SELinux もこれらの機能を実装しています。

強制アクセス制御

SELinux の環境下においては、root ユーザーといえども、もはや特権ユーザーではありません。通常の Linux では、ファイルやディレクトリに対して「所有者・グループ・その他」に基づいたアクセス制御の設定を行います。しかし、強制アクセス制御が機能している SELinux では、自分の所有しているファイルでさえアクセス可能であるとは限りません。これは root ユーザーでも例外ではありません。すべては、セキュリティ管理者によって定義されるセキュリティポリシーに基づいて、アクセス制御が行われます。

最小特権

SELinux では、プロセスやユーザーが必要以上の権限を持つことのないように、プロセスやユーザーに対して独自の権限を与えることが可能です。SELinux では、各プロセスがアクセス可能なリソースは TE(TypeEnforcement) と呼ばれる機能で制御されます。また、各ユーザーがアクセス可能なリソースは、RBAC(Role Based Access Control)と呼ばれる機能で制御されます。ソフトウェアの脆弱性を突く攻撃により、たとえ root 権限が奪取されたとしても、そのプロセスやユーザーがアクセス可能なリソースは、これらのアクセス制御機能により許可された範囲内であるため、被害を最小限に抑えることができます。

この章では、SELinux のアクセス制御を理解する上で必要な TE(TypeEnforcement)、RBAC(Role Based Access Control)の概要と、Turbolinux 10 Server における SELinux の起動方法とログイン、そして、基本的な SELinux コマンドのいくつかを紹介します。