ウェブサイト検索

CentOS/RHEL 7 で SELinux を有効にする方法?


導入

セキュリティはシステム管理者にとって最大の関心事です。 SELinux (Security-Enhanced Linux) は、Linux カーネルに追加のセキュリティ層を提供する必須アクセス制御 (MAC) セキュリティ メカニズムです。

CentOS/RHEL 7 ではデフォルトで SELinux が有効になっていますが、許容モードで実行されます。つまり、システム アクティビティはブロックされず、ログに記録されるだけです。この記事では、CentOS/RHEL 7 で SELinux を有効にする方法を学びます。

CentOS/RHEL 7 で SELinux を有効にすることの重要性

SELinux を有効にすると、攻撃や不正アクセスからのサーバーの保護が強化されます。サービス拒否 (DoS) 攻撃や権限昇格の試みなど、さまざまな種類の悪意のあるアクティビティに対する追加の防御層が追加されます。 SElinux を無効にすると、SELinux のポリシーやルールによって課される追加の制限に従って動作する必要がなくなるため、一部のアプリケーションの実行がスムーズになる場合があります。

SELinuxとは何ですか?

SELinux は、ポリシーの適用を通じて強制的なアクセス制御を提供する Linux カーネル用のセキュリティ モジュールです。これは、従来の Unix スタイルの任意アクセス制御の上に追加の保護層として Red Hat と協力して NSA によって開発されました。 SELinux は、プロセスやユーザーが実行できるアクションを制限するポリシーを適用することで、悪意のあるソフトウェアや不正なアクティビティに関連するリスクを軽減します。

どのように機能するのでしょうか?

SELinux は、ファイル、ディレクトリ、ソケット、デバイスなどのリソースに割り当てられた事前定義されたラベルに基づいて、システム上のプロセスおよびユーザーが実行できるアクションを管理するポリシーを強制することによって機能します。これらのラベルは、プロセスが動作するコンテキストを定義するために使用されます。どのリソースにアクセスできるか、どのようなアクションを実行できるかをきめ細かく制御できます。 SELinux ポリシーは、これらのコンテキストがラベルに基づいて相互に対話する方法に関するルールを定義します。これらのポリシーを強制するために、SELinux は、setroubleshootd や Auditd などのユーザー空間ツールと組み合わせて、システム コール制限やファイル アクセス許可チェックなどのカーネル レベルの制御を組み合わせて使用します。

SELinux を使用する利点:

  • セキュリティの向上 - カーネル レベルとユーザー レベルの両方で必須のアクセス制御を実装することにより、selinux は従来の任意のアクセス制御と比較してより高いレベルのセキュリティを提供します。

  • プロセスを制限する機能 - プロセスは、システム上の特定のリソースのみにアクセスするように制限できます。これにより、悪意のあるソフトウェアによる不正アクセスや操作のリスクが軽減されます。

  • 監査と説明責任の向上 − Selinux は、システム上の不審なアクティビティの特定と追跡に使用できる詳細なログ エントリを生成し、従来の任意のアクセス制御と比較して可視性と説明責任を向上させます。

SELinux の現在のステータスを確認する

SELinux の現在のステータスを確認することは、システムで SELinux を有効にする前に重要な手順です。この手順により、有効化プロセス中に問題を引き起こす可能性がある SELinux に関する既存の問題がシステムに存在しないことが保証されます。 SELinux の現在のステータスを確認する 1 つの方法は、getenforce コマンドを使用することです。

getenforce コマンドの使用

getenforce コマンドは、SELinux の現在の動作モードを表示する CentOS/RHEL 7 の組み込みツールです。これを使用するには、ターミナル ウィンドウを開いて「getenforce」と入力し、Enter キーを押します。

コマンドは、3つの可能な出力のうちの1つを表示します-

  • 強制 - これは、SELinux が強制モードで実行されていることを意味し、システム上のファイルやプロセスへの不正アクセスを防ぎます。

  • Permissive -これは、SELinux が Permissive モードで実行されていることを意味します。このモードでは、不正なアクセスは許可されますが、違反はログに記録されます。

  • 無効 - これは、SELinux が現在システムで有効になっていないことを意味します。

CentOS/RHEL 7 での SELinux の有効化

/etc/selinux/config ファイルの編集

CentOS/RHEL 7 で SELinux を有効にするには、/etc/selinux/config ファイルを編集する必要があります。これを行うには、任意のテキスト エディタを使用できます。

この例では、vi エディターを使用します。ターミナルを開いて次のコマンドを入力します-

sudo vi /etc/selinux/config 

これにより、vi エディターで構成ファイルが開きます。

このようなものが表示されます-

# This file controls the state of SELinux on the system. 
# SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. 
# permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. 
SELINUX=enforcing 

ご覧のとおり、SELINUX が取り得る値は、enforcing、permissive、disabled の 3 つです。

現在の値は enforcing に設定されています。これは、SELinux がすでに有効になっていることを意味します。ただし、システムで有効になっていない場合は、この値を変更する必要があります。

SELINUX の値を enforcing に変更する

SELinux を有効にし、再起動後も有効な状態を維持するには、SELINUX の値を enforcing に変更する必要があります。これを行うには、カーソルを「enforcing」の上に移動し、キーボードの「i」(挿入)キーを押します。

これにより、vi が挿入モードになり、ファイル内のテキストを編集できるようになります。ここで、以前に存在していた値 (enforcing/permissive/disabled) を削除し、「enforcing」と入力します。

ここで変更を保存し、`ESC` を押してから `:wq` を押して Enter を押して vi エディターを終了します。

SELinux が有効で実行されていることの確認

CentOS/RHEL 7 システムで SELinux を正常に有効にしたら、SELinux が適切に実行されていることを確認する必要があります。 SELinux のステータスを確認する方法の 1 つは、「getenforce」コマンドを使用することです。

このコマンドは、システム上の SELinux の現在のステータス (強制か許可か) を表示します。 「getenforce」コマンドを使用するには、新しいターミナル ウィンドウを開いて「getenforce」と入力するだけです。

出力は、enforcing、permissive、disabled の 3 つの値のいずれかになります。 「enforcing」と表示されている場合、SELinux はシステムにポリシーをアクティブに適用しています。

「permissive」と表示されている場合、SELinux はまだ実行中ですが、ポリシーを積極的に適用していません。違反をブロックするのではなく、ログに記録するだけです。 「無効」と表示される場合、SELinux はまったく実行されていません。

getenforce コマンドを再度使用してステータスの変化を確認する

/etc/selinux/config ファイル内の SELINUX の値を変更するには、変更を有効にするために再起動が必要であることに注意することが重要です。サーバーを再起動して再度ログインした後、getenforce コマンドを再度実行して、変更が正しく適用されたことを確認します。上記の手順 4 に従って構成を変更し、再起動した後も出力に「permissive」が表示される場合は、CentOS/RHEL 7 サーバー上の 1 つ以上のサービスが SElinux ポリシーで正しく構成されていないことに問題があることを示している可能性があります。

すべてのサービスが適切に実行されていることの確認

SELinux が「enforcing」に設定されていることを確認したら、ログをチェックするか、systemctl などのコマンド ライン ツールを使用して、すべてのサービスが適切に実行されていることを確認します。 SElinux ポリシーに関連するアラートやエラー メッセージには、特定のサービスごとに必要な追加手順を示す可能性があるので注意してください。 CentOS/RHEL 7 システム上のすべてのサービスが SElinux ポリシーで構成されていることが重要です。

サービスが適切に構成されていない場合、正しく動作しない可能性があり、システムにセキュリティ上の脆弱性が発生する可能性もあります。したがって、各サービスがスムーズに実行されていること、およびその構成ファイルが SELinux ポリシーで更新されていることを確認する必要があります。

結論

Selinux はデフォルトで CentOS/RHEL 7 とともにインストールされますが、そのままでは有効にならない場合があります。現在蔓延しているさまざまな種類の攻撃に対する保護層を追加します。

selinux を有効にすると、サーバー上で実行されているアプリケーションとサービス間の強力な分離が保証されます。 selinux には、役割ベースのアクセス制御 (RBAC)、強制アクセス制御 (MAC)、プロセス分離など、いくつかの便利な機能があります。

関連記事: