SELinux のブール値を有効または無効にする方法は?
導入
SELinux (Security-Enhanced Linux) は、Linux ベースのシステムに強制アクセス制御 (MAC) を提供するセキュリティ モジュールです。 SELinux モジュールは、システム上の各プロセスとユーザーが必要なリソースのみにアクセスできるようにすることで機能します。これは、プロセス、ファイル、その他のシステム リソースのセキュリティ コンテキストを定義することによって行われます。
SELinux の重要な機能の 1 つは、ブール値の使用です。これらは、「オン」または「オフ」のいずれかに設定できるバイナリ オプションです。
SELinux のブール値の説明
SELinux ブール値は、特定のポリシーが強制されるかどうかを決定するバイナリ オプションです。各ブール値は、特定の SELinux ルールまたはポリシーに対応します。
たとえば、ブール値 httpd_can_network_connect は、Apache Web サーバーがネットワーク接続を行うことを許可するかどうかを制御します。ブール値は、Linux の setsebool コマンドを使用して設定できます。
SELinux ブール値の有効化
SELinux ブール値は、SELinux ポリシーのさまざまな側面を制御するフラグのセットです。これらのフラグを使用すると、特定のセキュリティ機能を有効または無効にしたり、システムの動作をカスタマイズしたりできます。
SELinux ブール値を有効にするためのステップバイステップの手順
SELinux ブール値を有効にする前に、システムのブール値の現在のステータスを確認することが重要です。これは、次のコマンドを実行することで実行できます-
semanage boolean -l
有効にするブール値を特定したら、次のコマンドを使用できます-
setsebool boolean_name on
たとえば、 httpd_can_network_connect ブール値を有効にしたい場合は、次を実行します-
setsebool httpd_can_network_connect on
SELinux ブール値の現在のステータスを確認する
特定のブール値が現在システムで有効になっているか無効になっているかを確認するには、次のコマンドを実行します-
getsebool boolean_name
たとえば、 httpd_can_network_connect が有効か無効かを確認するには、次を実行します-
getsebool httpd_can_network_connect
これは、ブール値が現在有効か無効かを示す「on」または「off」を返します。
特定のブール値を有効にする
特定の SELinux ブール値を有効にするには、次のコマンドを使用します。
setsebool BOOLEAN_NAME [VALUE]
ここで、BOOLEAN_NAME は特定のブール値の名前に置き換えられ、VALUE は「1」(有効にする) または「0」(無効にする) のいずれかになります。
ブール値が有効になっていることを確認する
SELinux ブール値を有効にした後、それが正常に有効になったことを確認することが重要です。これを行うには、前のセクションで説明したように、getsebool コマンドを使用してブール値のステータスをチェックします。ブール値が有効になっている場合は、コマンドを実行すると「on」が返されるはずです。
SELinux ブール値の無効化
SELinux ブール値を無効にすると、制限される可能性のある特定のシステム機能へのアクセスが許可されます。特定のブール値を無効にすると、以前は SELinux によって拒否されていた特定のアクションに対するアクセスが許可されます。ブール値の無効化は必要な場合にのみ行うべきであり、ユーザーは特定の値の無効化に伴う潜在的なセキュリティ リスクを確実に認識する必要があります。
SELinux ブール値を無効にするための詳しい手順:
-
まず、コマンド `semanage boolean -l` を使用して、SELinux ブール値の現在のステータスを確認します。これにより、使用可能なすべてのブール値のリストとその現在のステータスが表示されます。
リストを検索して、無効にする特定のブール値を特定します。
選択したブール値を無効にするには、コマンド `setsebool [boolean_name] off` を使用します。
ブール値を無効にしたら、コマンド `getsebool [boolean_name]` を使用してステータスをチェックして、ブール値がオフになっていることを確認します。
特定のブール値を無効にした後で、システムの機能に問題やエラーが発生していることがわかった場合は、コマンド `setsebool [boolean_name] on` を入力して前の状態に戻してください。
すべてのブール値を無効にできるわけではなく、無効にすべきではないことに注意してください。無効にすると、システムのセキュリティと機能が侵害される可能性があります。
SELinux ブール値の現在のステータスの確認
SELinux ブール値を無効にする前に、まずシステム上の現在のステータスを確認し、すでに「オフ」に設定されているかどうかを確認することが重要です。現在利用可能なすべてのブール値とそれぞれのステータスをリストするには、「-l」パラメータを指定して semanage ツールを使用します-
$ semanage boolean -l
これにより、利用可能な SELinux ブール値のリストとその現在のステータス (「オン」または「オフ」) が表示されます。無効にするブール値を確認したら、今後の参照のためにその名前とステータスをメモしておきます。
特定のブール値の無効化
特定の SELinux ブール値を無効にするには、「setsebool」コマンドの後にブール値の名前を指定し、パラメーターとして「off」を指定します。たとえば、 httpd_use_nfs ブール値を無効にするには、このコマンドを実行します-
$ setsebool httpd_use_nfs off
Enter キーを押す前に、ブール値の正しい名前を入力していることを確認してください。値が正しくないと、システムの機能に問題が発生する可能性があります。
ブール値が無効になっていることの確認
特定の SELinux ブール値を無効にした後、それが正常にオフになったことを確認することが重要です。このコマンドを使用して現在のステータスを確認します-
$ getsebool [boolean_name]
出力には、優先する SELinux ブール値が無効またはオフになっていることが表示されます。
SELinux ブール値に関するニッチなサブトピック
「semanage」コマンドを使用したブール値の管理
「semanage」コマンドは、ブール値を含む SELinux ポリシーを管理するための強力なツールです。これにより、ブール値を簡単に表示、追加、削除、変更できます。
このコマンドを使用するには、「policycoreutils-python-utils」パッケージがインストールされている必要があります。 semanage を使用して利用可能なすべてのブール値を表示するには、次のコマンドを入力します-
$ sudo semanage boolean -l
これにより、システム内で使用可能なすべてのブール値のリストが表示されます。
semanage を使用して特定のブール値を有効または無効にするには、次のコマンドを実行します-
$ sudo semanage boolean --modify --on
$ sudo semanage boolean --modify --off
ここで、「」は有効または無効にするブール値の名前です。
次を実行すると、ブール値が有効または無効になったことを確認できます-
$ getsebool
Selinux でのカスタム ブール値の作成
場合によっては、特定のセキュリティ要件を満たすために SELinux でカスタム ブール値を作成することが必要になる場合があります。これを行うには、「semanage」コマンドを使用できます。
semanage を使用して新しいブール値を作成するには、実行します-
$ sudo semanage boolean -m --on|off
ここで、「」は新しいカスタム ブール値の名前です。その後、新しいカスタムブール値が次のコマンドで作成されたかどうかを確認できます-
$ getsebool -a | grep ""
「-m」を使用して既存のカスタム ブール値を変更し、「-d」を使用して削除することもできます。
SELinux の問題のトラブルシューティング
SELinux は、特に初めて使用する場合、操作が難しい場合があります。 SELinux の問題のトラブルシューティングには時間がかかる場合がありますが、システムの安全性を確保することが不可欠です。 SELinux で問題が発生した場合、最初に行うことはログを確認することです。
SELinux ログは「/var/log/audit/audit.log」に保存されます。 「ausearch」コマンドを使用して、関連するログエントリを検索できます-
$ sudo ausearch -m avc -ts recent
これにより、最近の AVC (Access Vector Cache) 拒否がすべて表示されます。
「audit2allow」および「audit2why」コマンドを使用して、AVC 拒否が発生した理由を特定することもできます。もう 1 つの一般的な問題は、SELinux が有効になっていると一部のアプリケーションが正しく動作しない可能性があることです。
この場合、次を使用して SELinux を一時的に無効にしてみてください-
$ sudo setenforce 0
これにより、SELinux は強制モードではなく寛容モードになり、すべてのアクションが許可されますが、ログは記録されます。このようにして、問題の原因となっているアクションを特定し、それに応じてカスタム ポリシーを作成できます。
結論
SELinux は、必須のアクセス制御を強制することでシステムを保護できる重要なセキュリティ機能です。 SELinux ブール値の有効化または無効化は、特定のニーズに合わせてこれらのアクセス制御をカスタマイズするのに役立つツールです。 SELinux ブール値を有効または無効にするプロセス、およびカスタム ブール値の作成と問題のトラブルシューティングを理解することは、システムのセキュリティを最適化するのに役立ちます。