SELinux のマニュアル ページの設定方法 |
インストールされた SELinux ポリシーの SELinux マニュアル ページは、デフォルトでは RHEL 7 および CentOS 7 にインストールされません。必要なツールをインストールし、マニュアル ページを自分で生成する必要があります。
このチュートリアルでは、SELinux 環境を構成するために必要なすべての手順を説明し、簡単に参照してストレスなく SELinux トラブルシューティングを行うためのマニュアル ページを追加します。
新しくインストールされた CentOS 7 については、「CentOS 7 の新規インストール後に行うべき主な作業」を参照してください。
Linux で SELinux を有効にする方法
SELinux が実行されているかどうかを確認したい場合は、ターミナルで次のコマンドを入力します。
[root@server1 ~]# getenforce
Enforcing
上記の出力から、SELinux が実行されており、すべてのポリシー ルールが適用されていることがわかります。 /etc/selinux/config を編集して selinux を永続的にセットアップしました。
[root@server1 ~]# sudo vim /etc/selinux/config
# 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
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
ファイルを手動で編集せずに SELinux を永続的に有効にしたい場合は、root ユーザーとしてターミナル ウィンドウを開き、以下のコマンドを入力します。
sudo sed -i 's/SELINUX=disabled/SELINUX=enforcing/' /etc/selinux/config
以下のコマンドを入力すると、次回起動時に自動再ラベル付けを有効にできます。
sudo touch /.autorelabel
次に、変更を有効にするためにシステムを再起動します。
sudo reboot
再起動が成功したら、SELinux のステータスを確認すると、強制モードで実行されているはずです。
[root@server1 ~]# getenforce
Enforcing
必要なSELinuxパッケージのインストール
SELinux はポリシー ルールを強制できるようになったので、selinux を効率的に管理するのに役立つパッケージをインストールしましょう。
- setroubleshoot-server パッケージをインストールします。
- このパッケージは、SELinux の問題の診断に役立つツールを提供します。
- AVC メッセージが生成されると、問題に関する情報を提供し、解決策の追跡に役立つアラートを生成できます。
- インストールするには、以下のコマンドを入力します
sudo yum install setroubleshoot-server -y
- policycoreutils-python パッケージには、SELinux 環境の管理に使用する管理ツールが含まれています。
- setroubleshoot-server をインストールすると、policycoreutils-python が依存関係としてインストールされるため、setroubleshoot-server パッケージをインストールした場合はこの手順をスキップできます。
### RHEL 7 based systems ###
sudo yum install policycoreutils-python
### RHEL 8 based systems ###
sudo yum install policycoreutils-python3
- インストールする別のパッケージはpolicycoreutils-develです。
- Policycoreutils-devel パッケージには、SELinux 環境でポリシーを開発するために使用する管理ツールが含まれています。
- このパッケージは、selinux man ページの生成に役立ちます。
- 実際には、policycoreutils-devel パッケージによって提供される SELinux マニュアル ページ生成ユーティリティである sepolicy を提供するものを確認してください。
sudo yum provides */sepolicy
sudo yum install policycoreutils-devel
これで、必要なパッケージがすべて揃いました。 SELinux のマニュアル ページを生成しましょう。
SELinux マニュアルページを生成する方法
コマンドsepolicy manpage は、インストールされた SELinux ポリシーに基づいてマニュアル ページを生成するために使用されます。
使用可能な一般的なオプションは次のとおりです。
- -a、-all – すべてのドメインのマニュアル ページを生成します
- -d、-domain – 指定されたドメインのマニュアル ページを生成します。 (複数のコマンドをサポート)
- -h、-help – ヘルプ メッセージを表示します。
- -p、 –path – 作成したマニュアル ページを保存するディレクトリを指定します。 (デフォルトは /tmp)-r,
- -r、 –root – マニュアル ページの生成元となる代替ルート ディレクトリを指定します。 (デフォルトは/)
- -w、-web – 指定したドメインに対して追加の HTML マニュアル ページを生成します。
次のように入力して、selinux man ページを生成します。
sudo sepolicy manpage -a -p /usr/share/man/man8/
上記で使用したオプションから、すべてのドメインのマニュアル ページを生成するように sepolicy マンページに指示し、マニュアル ページを保存するパスは /usr/share/man/man8/ になります。
マニュアル ページを生成したら、sepolicy manpage コマンドによって生成されたマニュアル ページを利用できるように、マニュアル ページ データベースを更新します。
マニュアルページデータベースを更新できるようになりました。コマンド mandb を使用します。これは、通常は人によって維持されるインデックス データベース キャッシュを初期化または手動で更新するために使用されます。
sudo mandb
すべての selinux man ページを検索すると、長いリストが表示されます。以下のコマンドを入力して自分で試してみてください。
$ man -k _selinux
検索を少しだけ絞り込むには、出力を grep コマンドにパイプして、以下の例を見てください。
- man -k _selinux | grep httpd > selinux httpd 関連のマニュアル ページを検索するには
- man -k _selinux | egrep ‘samba|smb’ > Samba 関連の selinux man ページを検索するには
- man -k _selinux | egrep *nfs > nfs デーモン関連の selinux マニュアル ページを検索するには
grep を使用すると、必要な SELinux マニュアル ページを簡単に取得できることがわかりました。
$ man -k _selinux | grep httpd
apache_selinux (8) - Security Enhanced Linux Policy for the httpd processes
httpd_helper_selinux (8) - Security Enhanced Linux Policy for the httpd_helper processes
httpd_passwd_selinux (8) - Security Enhanced Linux Policy for the httpd_passwd processes
httpd_php_selinux (8) - Security Enhanced Linux Policy for the httpd_php processes
httpd_rotatelogs_selinux (8) - Security Enhanced Linux Policy for the httpd_rotatelogs processes
httpd_selinux (8) - Security Enhanced Linux Policy for the httpd processes
httpd_suexec_selinux (8) - Security Enhanced Linux Policy for the httpd_suexec processes
httpd_sys_script_selinux (8) - Security Enhanced Linux Policy for the httpd_sys_script processes
httpd_unconfined_script_selinux (8) - Security Enhanced Linux Policy for the httpd_unconfined_script processes
httpd_user_script_selinux (8) - Security Enhanced Linux Policy for the httpd_user_script processes
それが今日のすべてです。次回の記事では、SELinux を強制モードで実行している Linux システム上でファイルとポートを管理する方法を見ていきます。この記事がお役に立てば幸いです。読んでいただきありがとうございます。何か問題や困難が発生した場合は、コメント欄にコメントを残してお知らせください。
その他のセキュリティ関連ガイド:
- Ansible を使用して SELinux ステータス、コンテキスト、ポート、ブール値を管理する
- Podman カスタム グラフルート ディレクトリの SELinux コンテキスト ラベルを設定する
- RHEL 8|CentOS 8|Rocky Linux 8|AlmaLinux 8 で SELinux を無効にする