Oracle LinuxでのSELinuxの管理
SELinuxについて説明し、Oracle LinuxでのSELinuxの管理に関するガイダンスを提供します。
従来の Linuxセキュリティは任意アクセス制御(DAC)ポリシーに基づきます。システム・セキュリティのDACモデルでは、ファイルやプロセスなどのリソースへのアクセスは、ユーザー・アイデンティティと所有権のみに基づきます。システムにマルウェアまたは破損したソフトウェアが存在する場合、プロセスを開始したユーザーが実行する権限を持つファイルおよびリソースに対しては何でも実行できます。ユーザーがrootの場合、またはアプリケーションがrootにsetuidまたはsetgidの昇格された権限で実行されている場合、プロセスはファイル・システム全体に対するrootアクセス制御を持つできます。
この問題に対処するために、国家安全保障機関は、Linux OSのファイル、プロセス、ユーザー、アプリケーションに関するより詳細な制御を可能にするために、Security Enhanced Linux (SELinux)を策決しました。LinuxカーネルのSELinux拡張により、強制アクセス制御(MAC)ポリシーが適用されます。これにより、すべてのユーザー、プログラム、プロセス、ファイル、デバイスに対してきめ細かな権限を構成するセキュリティ・ポリシーを定義できるようになります。カーネルのアクセス制御の決定は、認証されたユーザーIDだけではなく、セキュリティーの観点からリソースがどの程度機密であるかに基づきます。
プロセスがファイルを開くなど、セキュリティ関連アクセスが発生すると、SELinuxはカーネルの操作をインターセプトします。MACポリシー・ルールで操作が許可されている場合、操作は続行されます。それ以外の場合、SELinuxは操作をブロックし、プロセスにエラーを返します。カーネルは、MACルールの前にDACポリシー・ルールを確認して実施するため、DACルールでリソースへのアクセスが拒否された場合、SELinuxポリシー・ルールは確認されません。
SELinuxパッケージの説明
SELinuxにはいくつかのパッケージがあり、各パッケージには、Oracle LinuxシステムでSELinuxを管理するために使用できる特定のユーティリティが含まれています。一部のパッケージはデフォルトでインストールされますが、その他のパッケージはオプションです。
次の表に、デフォルトでOracle LinuxにインストールされているSELinuxパッケージをリストします。
|
パッケージ |
説明 |
|---|---|
|
|
|
|
|
SELinuxアプリケーションがプロセスやファイル・セキュリティのコンテキストを取得および設定したり、セキュリティ・ポリシー決定を取得するために使用するAPIを提供します。 |
|
|
SELinuxアプリケーションを開発するためのPythonバインディングが含まれます。 |
|
|
SELinux targetedポリシーなどのポリシーの基礎として使用される、SELinux Referenceポリシーを提供します。 |
|
|
SELinuxターゲット・ポリシーを提供します。このポリシーでは、ターゲット・ドメイン外のオブジェクトがDACの下で実行されます。 |
|
|
|
次の表に、デフォルトではインストールされていない有用なSELinuxパッケージをリストします。dnfコマンドを使用して、必要なパッケージをインストールします。
|
パッケージ |
説明 |
|---|---|
|
|
|
|
|
|
|
|
厳密に限定されたSELinuxドメインでコマンドを実行するためのSELinuxサンドボックスを作成するためのサンドボックス・ユーティリティを提供します。 |
|
|
SELinux targetedポリシーのかわりに厳格なMulti-Level Security (MLS)ポリシーをサポートします。 |
selinux-policy-doc
|
多数のSELinuxポリシー要素についてのマニュアル・ページを提供します。 |
|
|
|
|
|
|
|
|
Tresys TechnologyのSEToolsツールおよびライブラリ・ディストリビューションを提供します。これを使用して、ポリシーの分析および問合せ、監査ログの監視およびレポート、ファイル・コンテキストの管理を行うことができます。 |
詳細は、SELinuxプロジェクトのWiki、selinux(8)およびその他のSELinuxコマンドのマニュアル・ページを参照してください。
SELinuxユーティリティ
次の表に、SELinuxの管理に使用できる主要なユーティリティと、それらを含むパッケージを示します。
|
ユーティリティ |
パッケージ |
説明 |
|---|---|---|
|
|
|
拒否された操作の監査ログからSELinuxポリシーの |
|
|
|
拒否ログを分析してアクセスがブロックされた理由を説明し、関連するSELinux調整を推奨します。 |
|
|
|
SELinuxアクセス・ベクター・キャッシュ(AVC)の統計を表示します。 |
|
|
|
ファイルまたはユーザーのセキュリティ・カテゴリを変更または削除します。 |
|
|
|
ファイルおよびディレクトリのSELinuxコンテキストを変更します。 |
|
|
|
ファイル・システムのセキュリティ・コンテキストを修正します。 |
|
|
|
現在のSELinuxモードをレポートします。 |
|
|
|
SELinuxのブール値をレポートします。 |
|
|
|
新しいSELinuxポリシーをカーネルにロードします。 |
|
|
|
システム・ポリシーを問い合せ、ファイル・パスに関連付けられているデフォルトのセキュリティ・コンテキストを表示します。 |
|
|
|
1つ以上のファイルでセキュリティ・コンテキストをリセットします。 |
|
|
|
ファイル作成を監視し、デフォルトのファイル・コンテキストを設定するデーモン。 |
|
|
|
指定されたコンテキスト内でコマンドを実行します。 |
|
|
|
SELinuxサンドボックス内でコマンドを実行します。 |
|
|
|
SELinux AVC拒否の診断および説明、およびこのような拒否を防ぐ方法に関する推奨事項の提供のために、 |
|
|
|
SELinuxのポリシーを確認します。 |
|
|
|
ファイル、プログラムまたはユーザー入力のSELinuxコンテキストを表示します。 |
|
|
|
SELinuxのポリシーを比較します。 |
|
|
|
SELinuxのポリシーを問い合せます。 |
|
|
|
ユーザーがアクセスできるすべてのSELinuxコンテキストを表示します。 |
|
|
|
ユーザーのデフォルトのSELinuxコンテキストを表示します。 |
|
|
|
SELinuxが有効かどうかを示します。 |
|
|
|
SELinuxのポリシーを管理します。 |
|
|
|
SELinuxポリシー・モジュールを管理します。 |
|
|
|
SELinuxポリシー・パッケージ間の依存関係を表示します。 |
|
|
|
SELinuxポリシー・モジュール・パッケージを拡張します。 |
|
|
|
複数のSELinuxポリシー・モジュール・パッケージを1つに結合します。 |
|
|
|
SELinuxポリシー・モジュール・パッケージを作成します。 |
|
|
|
SELinuxのポリシーを問い合せます。 |
|
|
|
使用されているSELinuxモードとSELinuxポリシーを表示します。 |
|
|
|
SELinuxモードを変更します。 |
|
|
|
SELinuxのブール値を設定します。 |
|
|
|
1つ以上のファイルのセキュリティ・コンテキストを設定します。 |
SELinuxモードの設定
SELinuxは、enforcingモードまたはpermissiveモードで実行されます。
-
enforcing -
SELinuxセキュリティ・ポリシー・ルールによって権限が付与されていない場合、カーネルはユーザーおよびプログラムへのアクセスを拒否します。拒否メッセージはすべて、AVC (アクセス・ベクター・キャッシュ)拒否として記録されます。これがデフォルト・モードです。
-
permissive -
カーネルはセキュリティ・ポリシー・ルールを強制しませんが、SELinuxは拒否メッセージをログ・ファイルに送信します。これにより、SELinuxが
enforcingモードで実行されている場合に拒否されるアクションを確認できます。このモードは、システムにSELinuxを効果的に実装する場合に役立ちます。
現在のSELinuxモードを表示するには、次のコマンドを実行します。
getenforce
現在のモードをenforcingに設定するには、次のコマンドを実行します:
sudo setenforce enforcing
現在のモードをpermissiveに設定するには、次のコマンドを実行します:
sudo setenforce permissive
setenforceを使用してモードに設定した値は、リブート後は維持されません。デフォルトのSELinuxモードを構成するには、SELinuxの構成ファイル/etc/selinux/configを編集して、SELINUXディレクティブの値をenforcing、permissiveに設定します。
SELinuxの無効化
selinuxカーネル・パラメータをゼロに設定することで、SELinuxを完全に無効にできます。
Oracleでは、本番システムでSELinuxを無効にすることはお薦めしません。かわりにpermissiveモードを使用します。
ポリシー・ドキュメントのインストール
SELinuxは複雑で、ポリシーを使用してアクセスを構成するための多くのオプションがあります。使用可能なポリシーの詳細は、selinux-policy-docパッケージが提供するマニュアル・ページから入手できます。このタスクでは、この情報にアクセスする方法を示します。
ポリシー・ドキュメントには、ユーザーとロールに関する情報も含まれています。たとえば、user_selinux(8)マニュアル・ページで、SELinux権限のないuser_uユーザー、およびuser_rロールについて詳細を参照できます。ポリシー・ドキュメントでは、様々なセキュリティ・コンテキストに適用する制限と、使用環境のポリシーをカスタマイズするために使用できるブール型オプションについて、概要を示します。