ウェブサイト検索

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 を効率的に管理するのに役立つパッケージをインストールしましょう。

  1. setroubleshoot-server パッケージをインストールします。
  • このパッケージは、SELinux の問題の診断に役立つツールを提供します。
  • AVC メッセージが生成されると、問題に関する情報を提供し、解決策の追跡に役立つアラートを生成できます。
  • インストールするには、以下のコマンドを入力します
sudo yum install setroubleshoot-server -y
  1. 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
  1. インストールする別のパッケージは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 を無効にする

関連記事: