第1章 SELinux の使用


Security Enhanced Linux (SELinux) の基本概念を理解することで、システムのセキュリティーを強化します。SELinux のアーキテクチャー、パッケージ、および動作モードに関する知識は、システムポリシーを効果的に管理するのに役立ちます。

1.1. SELinux の概要

Security Enhanced Linux (SELinux) は、システムセキュリティーを強化する強制アクセス制御 (MAC) の実装です。SELinux は、プロセスがファイルやネットワークリソースとどのようにやり取りするかを制限するきめ細かなポリシーを適用することで、侵害されたアプリケーションの影響を軽減し、不正アクセスを防止します。

標準任意アクセス制御 (DAC) は、ユーザー、グループ、およびその他の権限に基づいてアクセスポリシーを設定します。このモデルでは、システム管理者が、特定のアプリケーションにはログファイルの閲覧のみを許可し、他のアプリケーションにはログファイルへのデータ追加を許可するなど、きめ細かなセキュリティーポリシーを作成できなくなります。

SELinux は、強制アクセス制御 (MAC) ポリシーを適用することで、保護のレイヤーを追加します。MAC ポリシーは、Web サーバーはユーザーのホームディレクトリー内のファイルにアクセスしてもよいか? などの <対象> は <オブジェクト> に対して <アクション> を実行してもよいか? という質問に答えます。すべてのプロセスおよびシステムリソースには、SELinux コンテキスト と呼ばれる特別なセキュリティーラベルがあります。SELinux コンテキスト (SELinux ラベル とも呼ばれる) は、システムレベルの詳細を抽象化し、エンティティーのセキュリティー特性に焦点を当てるための識別子です。この識別子は、SELinux ポリシー内のオブジェクトを参照するための一貫した方法を提供し、他の識別方法に見られる曖昧さを解消します。たとえば、バインドマウントを使用するシステムでは、1 つのファイルに複数の有効なパス名が存在する可能性があります。

SELinux ポリシーは、プロセスがシステムリソースにアクセスする方法を定義するルールの中で、コンテキストを使用します。デフォルトでは、ルールによって明示的にアクセスが許可されない限り、ポリシーはすべての操作を拒否します。

詳細は、selinux(8) の man ページ、および selinux-policy-doc パッケージがシステムにインストールされている場合に man -k selinux コマンドで表示される man ページを参照してください。

注記

SELinux ポリシールールは、DAC ルールの後にチェックされます。DAC ルールがアクセスを拒否した場合、SELinux ポリシールールは評価されず、SELinux によるアクセス拒否はログに記録されません。

SELinux のコンテキストには、ユーザー、ロール、タイプ、セキュリティーレベルの 4 つのフィールドがあります。SELinux ポリシーにおいて最も重要なのはタイプフィールドです。理由は、プロセスとリソース間の許可される操作を定義する際、一般的なポリシールールではコンテキスト全体ではなく、このタイプが判断基準として用いられるからです。SELinux のタイプの名前は、最後に _t が付きます。たとえば、Web サーバーのタイプコンテキストは httpd_t です。/var/www/html/ 内のファイルとディレクトリーは httpd_sys_content_t タイプを、/tmp および /var/tmp/ 内のファイルとディレクトリーは tmp_t を使用します。Web サーバーポートのタイプは http_port_t です。

Apache (httpd_t として実行する Web サーバープロセス) を許可するポリシールールがあります。このルールでは、通常 /var/www/html/ にあるコンテキストを持つファイルおよびディレクトリーと、その他の Web サーバーディレクトリー (httpd_sys_content_t) へのアクセスを許可します。通常、/tmp および /var/tmp/ にあるファイルに対する許可ルールはポリシーにないため、アクセスは許可されません。SELinux を使用すれば、Apache が危険にさらされ、悪意のあるスクリプトがアクセスを得た場合でも、/tmp ディレクトリーにアクセスすることはできなくなります。

図1.1 Apache と MariaDB を安全に実行するのに SELinux がどのように役立つかの例

SELinux_Apache_MariaDB_example

前述の図が示すように、SELinux は httpd_t として実行されている Apache プロセスが /var/www/html/ ディレクトリーにアクセスすることを許可しますが、httpd_t および mysqld_db_t タイプのコンテキストに対して許可ルールが存在しないため、/data/mysql/ へのアクセスを拒否します。逆に、mysqld_t として実行されている MariaDB プロセスは /data/mysql/ にアクセスできますが、httpd_sys_content_t とラベル付けされている /var/www/html/ へのアクセスは拒否されます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る