|
|
1 2 3 次のページ
|
|
SELinuxの歴史
|
SELinux(Security-Enhanced Linux)は、米国国家安全保障局(NSA)を中心に開発されたオープンソースのセキュアOSです。
2000年にはじめて公開され、当初はLinux Kernel 2.2用のカーネルパッチ方式でした。しかし、Linux Kernel 2.6でLSM(第2回を参照)が採用されたことにより、Linux Kernel 2.6用からLSM方式となり、標準添付されるようになりました。その後、カーネルパッチ方式であったLinux Kernel 2.4用のSELinuxは開発が停止し、現在はLinux Kernel 2.6用の開発のみが継続されています。
|
SELinuxの概要
|
それでは、SELinuxの概要を説明します。SELinuxの機能の基本的な考え方を理解していただき、その長所、短所をみてみましょう。
|
SELinuxの機能と特徴
|
SELinuxは、「プロセスに対するアクセス制御」と「ユーザに対するアクセス制御」を実現しています。前者はTE(Type Enforcement)とドメイン遷移と呼ばれるもので実現され、後者はRBAC(Role Based Access Control)と呼ばれるもので実現されています。また、監査ログ機能を備え、システムコールレベルでのログ取得が可能になっています。
|
アクセス制御設定の基本的な考え方
|
SELinuxでは、プロセスにドメインと呼ばれるラベルを、リソースにタイプと呼ばれるラベルを付けます。WebサーバアプリケーションであるApacheを例にすると、図1のように、httpdプロセスに「httpd_t」というドメインを、コンテンツを置く/var/www/ディレクトリ以下に「httpd_sys_content_t」というタイプを付けるようなものです。
|
図1:アクセス制御設定の基本
|
そして、ドメインとタイプの間にアクセスベクタと呼ばれるパーミッションを設定します。図1では、読み込みのための「read」というアクセスベクタを設定しています。このような設定を行うことで、やっとhttpdプロセスがコンテンツにreadのアクセスができるようになります。仮に、書き込みも必要であれば、「write」というアクセスベクタを追加して設定する必要があります。
|
詳細なアクセス制御
|
SELinuxでは、ファイルやディレクトリだけでなく、通信ソケットやメモリなど、約30種類のリソースに対してアクセス制御が可能です。当然リソースの種類によって、設定するアクセスベクタの種類や数が異なります。
ファイルやディレクトリに対しては、readやwriteだけでなく、追記のためのappendや名前変更のためのrenameなど、約20種類のアクセスベクタが存在します。TCP通信ソケットの場合は、bindなど約30種類のアクセスベクタが存在します。
このため、リソースごとに詳細なアクセス制御が可能となっています。
|
SELinux設定の特徴
|
SELinuxは、設定されてないアクセスはすべて拒否する仕様で、一つひとつ許可設定を与えていくことでアクセス制御設定を行います。このため、アクセス制御設定をしていないアプリケーションは、動作しない、もしくは、動作しても何もできない状態となり、安全サイドに倒れるようになっています。
|
SELinuxの長所と短所
|
SELinuxの長所は、権限分割の粒度が細かく、一つひとつ許可設定を与えるため、非常にセキュアなシステム構築が可能な点です。
しかし、あるアプリケーションを動作させるためには、多種多様なリソースに対し、多数の許可設定を行う必要があります。設定にはマクロなどが用意されていますが、ライブラリファイルへのアクセスなど、通常はあまり考慮しない動作についても設定を行う必要があり、設定は非常に大変です。
|
1 2 3 次のページ
|
|
|
|
著者プロフィール
日立ソフトウェアエンジニアリング株式会社 才所 秀明
技術開発本部研究部にて、セキュリティ関連研究に従事。現在セキュアOS「SELinux」の調査研究を担当。セキュアOS「SELinux」の普及推進を目指し、講演、執筆、WG活動などにおいて活動中。
Linuxコンソーシアム セキュリティ部会リーダー
日本オープンソース推進機構 SELinux専門委員会メンバー
|
|
|
|