SELinuxサポート

Security-Enhanced Linux (SELinux) は、米国防総省スタイルの強制アクセス制御 (MAC) などのアクセス制御セキュリティポリシーをサポートするメカニズムを提供する、Linux カーネルセキュリティモジュールです。

CentOS Linux の公式ビルドはすべて、SELinux が有効化され、強制モードに設定された状態で事前に構成されています。SELinux が有効なシステムでエージェントを実行するには、次の2つのアプローチがあります。

  • SELinux を許可モードに設定するか、SELinux を完全に無効にする

  • モジュールとエージェントが通信できるように SELinux を設定する

SELinux が強制モードで有効になっているか確認する

システム管理者は、モジュールをエージェントに接続しようとした際に次のようなエラーが発生するまで、SELinux がインストールされていることに気付かない場合があります。

2016/05/11 22:16:29 [crit] 3193#3193: *10 connect()
to unix:/var/run/sigsci.sock failed
(13: Permission denied), client: 192.0.2.209,
server: localhost, request: "GET /ping HTTP/1.1",
host: "192.0.2.209"

SELinux のステータスを確認するには、コマンド sestatus を実行します。次のような出力が生成されます。

$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28

SELinux を許可モードに設定するか、SELinux を完全に無効にする

SELinux のメイン設定ファイルは /etc/selinux/config です。次のコマンドを実行してその内容を確認します。

$ cat /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 these 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=permissive に変更します。この変更を適用するには、システム全体を再起動してから、別の sestatus コマンドで SELinux の新しいステータスを確認する必要があります。

モジュールとエージェントが通信できるように SELinux を設定する

システムに SELinux が許可モードまたは強制モードに設定されており、SELinux が /var/log/audit/audit.log ファイルに書き込むと仮定します (他の Unix フレーバーでは、他の場所に書き込む可能性があります)。

  1. root としてログインして、Next-Gen WAF エージェントとモジュールをインストールします。

  2. Web サーバーを再起動し、エージェントを起動します。

  3. Web サイトを閲覧すると、モジュールがエージェントとの通信を呼び出します。

    • 許可モードの場合、監査ログにはブロックされるはずだった内容に関するメッセージが記録されます。

    • 強制モードの場合、同じログメッセージが監査ログに追加されます。

  4. ホームディレクトリから次のコマンドを実行し、.te ファイルと .pp (ポリシーパッケージ) ファイルを作成します : cat /var/log/audit/audit.log | audit2allow -M sigsci > sigsci.te)。

  5. semodule -i sigsci.pp を使用してポリシーパッケージファイルをインストールします。

  6. 次のコマンドを実行し、ポリシーがインストールおよびロードされたことを確認します : semodule -l。出力は次のようになります。

    ## Policy definition for SigSci Agent package on Rocky Linux 8
    ## Use make sigsci.pp (with a link to the SELinux policy devel Makefile)
    ## Requires policycoreutils-devel package
    ## make -f /usr/share/selinux/devel/Makefile sigsci.pp
    ## to create a module. Then run semodule -i sigsci.pp to install it
    policy_module(sigsci, 1.0)
    require {
    type httpd_t;
    }
    #============= httpd_t =============
    files_write_generic_pid_sockets(httpd_t)
  7. Web サーバーとNext-Gen WAFエージェントを再起動してください。