今回は検証で何かとトラブルの原因となりやすい、
SELinuxを停止する方法をご紹介します。
ただ単純に『SELinux=停止』するものと覚えるのではなく、
SELinuxがどういうものなので必要に応じて停止すると覚えると、
一歩進んだエンジニアになることができるかと思います。
SELinuxとは
SELinuxは侵入された後の防御策です。
万が一、攻撃者に侵入された際に被害を最小限にするための仕組みです。
root権限があればファイルの作成や編集、削除など好き勝手に操作を行うことができますが、
SELinuxが有効の場合は、root権限があっても行えない作業などの制限が発生します。
これはroot権限のユーザで侵入されてしまっても、被害を最小限にするためとなります。
ここまで聞くとSELinuxは有効にしておいた状態がよいように感じますが、
root権限のユーザの操作が制限されてしまいますので、検証や設定、構築する上で、
SELinuxの制限により操作できないということが発生してしまいます。
SELinuxの仕組みは複雑ですので、正直どこで制限を食らうかはわかりません。
エラーメッセージを確認するとSELinuxが原因でしたということはあるあるなので、
少なくとも検証環境では無効にしてよいと考えられます。
本番環境でも無効にすることによるデメリットを理解した上でや、
他の仕組みによる防御をするという前提でSELinuxを無効にすることもあります。
また、SELinuxはLPIC・Linuc303試験の試験範囲となっています。
SELinuxの有効・無効を確認する方法
何もSELinuxに関する設定を行っていない状態、
つまりデフォルトではSELinuxは有効となっています。
『sestatus』コマンドを使用することでSELinuxの有効状態を確認することができます。
[root@localhost ~]# 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 Memory protection checking: actual (secure) Max kernel policy version: 31

SELinuxを無効にする方法
SELinuxの有効・無効に関する設定ファイルは『/etc/selinux/config』です。
こちらの設定ファイルを編集することでSELinuxを無効にすることができます。
『cat /etc/selinux/config』で設定ファイルを確認してみましょう。
[root@localhost ~]# 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 three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted

SELinuxには3つの状態があります。
デフォルトでは『enforcing』の状態になっていますので、
SELinuxは有効でアクセス制御が行われている状態となっています。
有効、アクセス制御を行う | |
有効、アクセス制御を行うが違反した場合はメッセージを表示のみを行う | |
無効 |
SELinuxを無効にするためにはこのステータス部分を、
『disabled』に変更してあげる必要があります。
『vi』コマンドなどを使用して直接編集しましょう。
# 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=disabled # SELINUXTYPE= can take one of these three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted

ただし、編集しただけでは無効にはなりません。
Linuxでは多くの場合、設定ファイルを変更した場合は即時反映されず、
機器を再起動、もしくはサービスを再起動することで、
変更した設定が有効になります。
今回は『reboot』コマンドを用いて機器の再起動を行います。
起動が完了するとSELinuxは無効となっています。
[root@localhost ~]# sestatus SELinux status: disabled

以降は『/etc/selinux/config』の編集などSELinuxを有効にする操作をしない限りは、
再起動など何をしてもSELinuxは無効のままとなっています。
まとめ
ただ単純に『SELinux=停止するもの』と覚えるのではなく、
SELinuxはroot権限の操作にも影響を及ぼすものなので、
検証や構築の邪魔にならないようにするために必要に応じて停止します。
SELinuxとは何かについて理解しておくことで、
一歩進んだエンジニアになることができるかと思います。
- SELinux:侵入された場合に被害を最小限にする仕組み
- 検証環境では基本的に無効にして問題ない
- 本番環境では無効にする場合は要検討
- 設定ファイル『/etc/selinux/config』で『SELINUX=disabled』と変更、
その後『reboot』することで無効にすることができる - 状態確認は『sestatus』
YouTube解説動画
実機を用いてSELinuxを停止することも行っています。
LPIC-303、LinuC-303対策はこちらがオススメ