CodeGym /コース /Docker SELF /SELinuxの導入: ステータス確認、有効化、基本コマンド

SELinuxの導入: ステータス確認、有効化、基本コマンド

Docker SELF
レベル 5 , レッスン 2
使用可能

SELinuxの導入: ステータス確認、有効化、基本コマンド

1. SELinuxとは何か?それがなぜ重要なのか?

SELinux (Security-Enhanced Linux) っていうのはセキュリティモジュールで、伝統的なアクセス権管理モデルを強化するために強制アクセス制御の概念を追加したんだよ。これで、ユーザーやプロセスに厳しい制限を加えることができて、潜在的な攻撃の被害を最小限に抑えるようにできるんだ。

そのユニークな特徴って?

システムを家に例えてみて。従来のアクセス権(ユーザー、グループ、その他のrwX権限)は、鍵付きドアみたいなものだよ。だけど、誰かがドアをこじ開けたらどうする?SELinuxは「行動ルール」を駆使して防御の第2ラインを提供するみたいなもので、「おいおい、内部に入れてもバスルームには入らせないぞ!」みたいなことをするんだ。

SELinuxの主な役割:

  1. プロセスとファイルへの不正アクセス保護。
  2. プロセスがハッキングされても、攻撃の影響を軽減。
  3. "デフォルト保護" の原則(許可されていないものは全て禁止)。

SELinuxの動作モード

SELinuxには3つのモードがあるよ:

  1. Enforcing — 有効で、セキュリティポリシーを適用して違反プロセスをブロックする。
  2. Permissive — 違反内容をログに記録するだけで、動作をブロックしない。
  3. Disabled — 完全に無効化。
面白い事実:

EnforcingモードのSELinuxは、システムの厳しいお兄さんみたいだね。Permissiveは、文句だけ言うけど何もしない弟みたいな感じ。


2. SELinuxのステータス確認

まず、SELinuxが有効かどうか、そしてどのモードで動作しているか確認しよう。そのためにいくつか便利なコマンドがあるよ。

コマンド getenforce

このコマンドを使えば、現在使用されているモードがわかる: Enforcing, Permissive, または Disabled

$ getenforce
Enforcing

もし出力が Disabled なら、SELinuxは無効になっているってこと。この場合、有効にするために少し作業が必要だけど、それは後で説明するね。

コマンド sestatus

SELinuxのステータスに関するより詳細な情報を得るには、このコマンドを使おう。現在の状態、アクティブなモード、使用されているポリシーが表示されるよ。

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing

ここで確認できるのは:

  • enabled/disabled — SELinuxが有効かどうか。
  • current mode — アクティブなモード (enforcing, permissive)。
  • loaded policy name — 使用中のポリシー。例えば "targeted" はSELinuxが主要なプロセスだけをコントロールしていることを示す。

3. SELinuxのモード切り替え

SELinuxの現在のモードを変更するには、setenforceコマンドを使用するよ。

permissiveモードへの切り替え

もしSELinuxを一時的に「緩めたい」と思ったら、permissiveモードを有効にできるよ。

$ sudo setenforce 0

これで、SELinuxは違反を記録するだけで、ブロックはしないよ。新しい設定を確認するには、getenforceコマンドを使ってね:

$ getenforce
Permissive

enforcingモードへの切り替え

再び厳格な制御を有効にしたい場合は、次のコマンドを実行するよ:

$ sudo setenforce 1

もちろん、結果を確認するのも忘れずに:

$ getenforce
Enforcing

この変更は即座に反映されるけれど、次回の再起動までしか有効じゃないから注意してね。


4. SELinuxの有効化

SELinuxが無効化されている場合、設定ファイルに変更を加える必要があるよ。SELinuxは/etc/selinux/configファイルを通じて管理されているんだ。

現在の設定ファイルの確認

設定がどうなっているか見てみよう。任意のテキストエディタを使ってね、例えばnano:

$ sudo nano /etc/selinux/config

以下のような内容が表示されるはずだよ:

# This file controls the state of SELinux on the system.
SELINUX=disabled
SELINUXTYPE=targeted

SELinuxを有効な状態に切り替える

SELinuxを有効化するためには、SELINUX=disabledという行をSELINUX=enforcingまたはSELINUX=permissiveに変更すればOK。

変更後のファイルの例は以下の通り:

# This file controls the state of SELinux on the system.
SELINUX=enforcing
SELINUXTYPE=targeted

編集を保存したら、システムを再起動しよう:

$ sudo reboot

再起動後、sestatusコマンドを使って、SELinuxが有効になっていることを確認できるよ。


5. SELinuxコンテキストの分析

コンテキストって何?

コンテキストは、SELinuxがアクセス制御を管理するために使用するラベルだよ。ファイル、プロセス、ユーザーごとに特定のコンテキストが設定されてるんだ。

ファイルのコンテキストを確認するには、ls -Zコマンドを使ってみて。例えばこんな感じ:

$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

これってどういう意味?

  1. unconfinedu — SELinuxユーザー。
  2. objectr — オブジェクトのタイプ。
  3. httpdsyscontent_t — アクセスタイプ(この場合ウェブサーバーに関連)。
  4. s0 — セキュリティレベル。

コンテキストの変更

もしSELinuxがアプリケーションの動作を妨げているなら、ファイルのコンテキストを変更する必要があるかも。chconコマンドを使ってみて:

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

このコマンドはファイルのコンテキストタイプを一時的に変更するよ。でも、再起動後に変更が消える可能性があるから、永久的な設定にはSELinuxポリシーを変更するのがベター(これについては後で説明するね)。


6. SELinuxの使い方の例

例を見てみよう。サーバー管理者として、ウェブサーバーを展開したいけど、SELinuxが/var/www/htmlディレクトリ内のファイルへのアクセスをブロックしている状況です。

手順:

  1. SELinuxのステータスを確認する:

    $ sestatus
    

    SELinuxが有効で、enforcingモードで動作していることを確認します。

  2. ファイルのコンテキストを確認する:

    $ ls -Z /var/www/html
    
  3. コンテキストが正しくない場合、変更する:

    $ sudo chcon -t httpd_sys_content_t /var/www/html/*
    
  4. ウェブサーバーが動作しているか確認する。


7. よくある間違いと問題

  1. SELinuxが無効になっていることに気づいていない。 常にsestatusコマンドでステータスを確認。多くの管理者は、システムをインストールした後にSELinuxを有効化するのを忘れがち。

  2. 「なぜ私のサービスが動かないの?」 SELinuxがアクセスをブロックしている。audit.logを使って分析するべき:

    $ sudo cat /var/log/audit/audit.log | grep denied
    
  3. コンテキストの変更が保存されない。 chconではなく、semanageのような永続的な変更を行うコマンドを使用すること。

SELinuxを学ぶのはマラソンの準備に似ている:最初は難しいかもしれないけど、時間が経つにつれて、このツールがシステムのセキュリティを大幅に向上させる方法を理解できる。これらの知識を使って、最も高度なハッカーにも負けない管理者を目指そう。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION