SELinux (Security-Enhanced Linux) とは

URL をコピー

SELinux (Security-Enhanced Linux) は、システムにアクセスできるユーザーを管理者がよりきめ細かく制御するための、Linux® システム向けセキュリティ・アーキテクチャです。もともとは、Linux Security Modules (LSM) を使用した Linux カーネルへの一連のパッチとして、アメリカ国家安全保障局 (NSA) によって開発されました。 SELinux は 2000 年にオープンソース・コミュニティにリリースされ、2003 年にアップストリームの Linux カーネルに統合されました。

 セキュリティとコンプライアンスに対する Red Hat のアプローチ (動画の再生時間:2:21)

SELinux 対応のオペレーティングシステムを無料で試す

SELinux は、システム上のアプリケーション、プロセス、ファイルに対するアクセス制御を定義します。アクセス可能な範囲とそれ以外を指定した一連のルール (セキュリティポリシー) を使用することで、ポリシーベースのアクセス制御を強制します。 

サブジェクト (アプリケーションやプロセス) が、オブジェクト (ファイルなど) にアクセスリクエストを行うと、SELinux はアクセス・ベクター・キャッシュ (AVC ) を使って検証します。AVC では、サブジェクトとオブジェクトの権限がキャッシュされています。

キャッシュされた権限に基づいてアクセス許可を決定できない場合、SELinux はセキュリティサーバーにリクエストを送ります。セキュリティサーバーは、アプリケーションやプロセスとファイルのセキュリティ・コンテキストを確認します。セキュリティ・コンテキストの確認では SELinux ポリシーデータベースを参照します。その後、許可の可否が決定されます。 

許可が拒否された場合、「avc: denied」というメッセージが /var/log.messages に表示されます。

SELinux の設定方法 

システムを保護するために SELinux を設定する方法はいくつかあります。最も一般的な方法は、ターゲットポリシーやマルチレベル・セキュリティ (MLS) です。

ターゲットポリシーはデフォルトのオプションで、さまざまなプロセス、タスク、サービスに対応します。MLS は非常に複雑であり、主に政府機関のみが使います。 

システムのモードは、etc/sysconfig/selinux ファイルを見れば把握できます。ファイルの特定のセクションに、SELinux のモード (Permissive モード、Enforcing モード、無効) や読み込むポリシーが記述されています。

SELinux におけるラベル付けと Type Enforcement 

SELinux において、Type Enforcement (TE) とラベル付けは最も重要な概念です。

SELinux はラベル付けシステムとして機能します。これにより、システム内のすべてのファイル、プロセス、ポートに SELinux ラベルが割り当てられることになります。ラベルとは、要素をグループ化する論理的な方法のことです。カーネルは、ブート中にラベルを管理します。

ラベルの形式は、user:role:type:level (level はオプション) になります。user、role、level は、MLS といった、SELinux のより高度な実装で使用されます。ラベルの種類は、ターゲットポリシーにとって最も重要です。 

SELinux は、システム上で定義されたポリシーを強制するために、Type Enforcement (TE) を使用します。Type Enforcement は SELinux ポリシーの一部で、あるタイプで実行されているプロセスが、どのタイプでラベル付けされたファイルにアクセスできるかを定義します。

SELinux を有効にする方法

現在の環境で SELinux が無効になっている場合、/etc/selinux/config を編集して SELINUX=permissive と設定することで、SElinux を有効にすることができます。ただし SELinux を有効化した直後に Enforcing モードに切り替えることは避けてください。正常にラベル付けされず、システムが起動しなくなる危険性があるからです。  

ルートディレクトリに .autorelabel という空のファイルを作成し、再起動することで、システムがファイルシステムを自動的に再度ラベル付けできます。システムにエラーが多すぎる場合は、正常に起動できるよう、Permissive モードで再起動する必要があります。再度のラベル付けが終わったら、/etc/selinux/config で SELinux を Enforcing モードに設定し、再起動するか、setenforce 1 を実行します。 

コマンドラインに不慣れの場合、SELinux 管理用のグラフィックツールを利用できます。 

SELinux は、Linux ディストリビューションに組み込まれているシステムにセキュリティレイヤーを追加します。万が一システムが危険にさらされた場合にも保護できるよう、常に有効にしておくべきです。

Red Hat® Enterprise Linux がどのようにセキュリティ向上に役立つかを知る

Red Hat のリソース

従来、Linux と UNIX システムは DAC を使ってきました。SELinux は、Linux 用の MAC システムの一例です。 

DAC では、ファイルとプロセスに所有者 (ユーザーやグループなど) が指定されます。ユーザーは自身が所有するファイルの権限を変更することができます。

DAC システムでは、root ユーザーは完全なアクセス権限を持つことになります。root 権限があれば、他のユーザーのファイルにアクセスするなど、制限なくシステムを操作できます。 

対照的に SELinux のような MAC システムでは、管理目的でアクセスポリシーが設定されます。ホームディレクトリの DAC 設定が変更されても、他のユーザーやプロセスがディレクトリにアクセスできないように SELinux ポリシーが設定されていれば、システムの安全性が保たれます。 

SELinux ポリシーは具体的に定義することが可能で、数多くのプロセスに対応することができます。SELinux を変更することで、ユーザー、ファイル、ディレクトリなどの間でアクセスを制限できます。

先進的なツールとテクニックで Linux 環境を管理する方法を見る

SELinux でエラーが出る場合、大半は次の問題のいずれかに該当します。

  1. 正しくラベル付けされていない:ラベル付けが正しくない場合は、ツールを使って修正できます。
  2. ポリシーを修正する必要がある:変更が SELinux に反映されていないか、ポリシーを調整する必要があります。ポリシーはブール値やポリシーモジュールを使って修正できます。
  3. ポリシーにバグが含まれている:ポリシーにバグがあり、修正が必要なことがあります。
  4. システムが侵入された:SELinux は多くのシナリオでシステムを保護できますが、侵入される可能性がゼロになることはありません。侵入された疑いがある場合は、直ちに対処してください。

ブール値とは

SELinux の機能のオン/オフは、ブール値で指定します。対象となる項目は何百もありますが、その多くは事前に設定されています。設定済みのブール値については、getsebool -a を実行することで確認できます。

Red Hat Enterprise Linux は世界有数のオープンソース Linux プラットフォームです。リスクの緩和、セキュリティ構成とポリシーの適用、コンプライアンス戦略の最適化の実現を支援します。

Red Hat Enterprise Linux システムロールは、サポートされている Ansible® ロールのコレクションであり、一貫したワークフローを提供し、手動タスクの実行を最適化します。システムロールは、セキュリティのワークフローを自動化し、それらを一定期間、大規模に、また最小限のリソースで維持するのに役立ち、ガバナンスとコンプライアンス要件を最適化します。SELinux システムロールを使って、SELinux のデプロイメントと管理を自動化できます。これには以下が含まれます。 

  • SELinux で Enforcing または Permissive モードを有効にし、制御の一貫性を確保する。
  • SELinux ポリシーのブール値、ファイルのコンテキスト、ポートおよびログインをカスタマイズして要件に対応する。
  • システムロールを使用して、特定のファイルまたはディレクトリについてファイルのコンテキストを調整する。
Red Hat Enterprise Linux システムロールの詳細
ハブ

Red Hat 公式ブログ

Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。

すべての Red Hat 製品のトライアル

Red Hat の無料トライアルは、Red Hat 製品をハンズオンでお試しいただける無料体験版です。認定の取得に向けた準備をしたり、製品が組織に適しているかどうかを評価したりするのに役立ちます。

関連情報

Kubernetes セキュリティとは

Kubernetes は、比較的新しいテクノロジーとして近年非常に多く導入されていますが、セキュリティへの投資は必ずしも追いついていません。

API セキュリティとは | Red Hat

API セキュリティとは、API をサイバー攻撃などのリスクから保護するための対策を指し、ユーザー独自の API と使用する API の両方の整合性を保護する機能などが必要です。

CI/CD セキュリティとは

CI/CD セキュリティは、自動化されたチェックとテストによってコードパイプラインを保護し、ソフトウェア提供における脆弱性を防ぐために使用されています。

セキュリティリソース

関連記事