server-memo.net

selinuxの無効化

      2016/01/22

検証環境

centos 7

SELinuxについて

SELinuxを正しく理解し設定することができれば、セリュティレベルも向上しよりセキュアな環境を構築することができるのですが、私の勉強不足の所為もありSELinuxの影響でよく他のサービスでエラーが出たり思うような動作をしてくれないことが結構あります。

そんな場合は、SELinuxの影響でエラーが出ているのか、それともサービスのconfigに問題があるのかを切り分けるために、SELinuxの機能を無効化して原因の切り分けを行ったりしますので、その際に行っているSElinux機能の有効化、無効化の手順をまとめました。

SELinuxの状態確認方法

SELinuxが有効化されているかどうかの確認方法には、「getenforce」コマンドを使用します。

「getenforce」コマンドを実行すると現時点でのSELinuxの動作状態が表示されます。

動作状態一覧
  • enforcing     SELinux機能が有効されていて、アクセス制限も有効
  • permissive     SELinux機能は有効であるが、アクセス制限は行わず警告を出力
  • disabled     SELinux機能は無効
getenforceコマンド実行ログ
# getenforce 
Enforcing

こんな感じで、現在のSELinuxの動作状況を表示してくれます。

また、「sestatus」コマンドを実行することでより詳細な動作状況を表示させることができます。

sestatusコマンド実行ログ

「sestatus」コマンドを使用することで「getenforce」コマンドより詳細な情報を表示させる事が出来ます。

$ 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を無効化させる方法には一時的に停止させる方法と、永続的に停止させる方法の2通りがあります。

一時的に無効化する方法

setenforceコマンドを使用することで、一時的にSELinuxの機能を無効化/有効化をすることができます。ただし、この設定は一時的な物なので、サーバの再起動を行うと設定前の状態に戻ってしまいますので注意して下さい。

書式
SELinuxを有効化 setenforce 1
SELinuxを無効化 setenforce 0
(Permissive状態へ変更となります)
実行ログ

「getenforce」コマンドで状態が「Enforcing」である事を確認し、「setenforce」コマンドで「0」を設定し、SELinux機能を「Permissive」状態に変更・確認しています。

# getenforce 
Enforcing
# setenforce 0
# getenforce 
Permissive

無効化したSELinuxを有効化する場合は「setenforce 1」と、コマンドを入力することで、SELInuxを有効化することが出来ます。

# setenforce 1
# getenforce 
Enforcing

 

永続的にSELinuxを無効化させる場合

SELinuxの機能を永続的に停止させいた場合は「/etc/selinux/config」ファイルの「SELINUX=enforcing」部分の設定を「SELINUX=disabled」変更します。(Permissive状態に変更したい場合は SELINUX=permissiveと変更します)

設定変更

まずは、設定ファイルのバックアップを行ってから、「vi」等のエディタを使用し編集を行っていきます。

下記の作業ログでは、「cp -p」コマンドでバックアップを取得してから「vi」で編集し、「diff」コマンドで編集部分を確認しています。

今回は、「SELINUX=enforcing」を「SELINUX=disabled」に変更しているのが、「diff」コマンドの差分から解ると思います。

設定ファイル編集
# cp -p /etc/selinux/config /etc/selinux/config_yyyymmdd
# vi /etc/selinux/config
編集箇所確認
# diff /etc/selinux/config /etc/selinux/config_yyyymmdd
7,8c7
< #SELINUX=enforcing
< SELINUX=disabled
---
> SELINUX=enforcing

 設定反映

設定反映には、サーバの再起動が必要となりますので、サーバを再起動し、起動後に「getenforce」コマンドでSELinuxの状態を確認してください。

サーバ再起動

サーバを再起動します。

# reboot
SELinux状態確認

サーバ起動後に「getenforce」コマンドを使用して、SELinuxの状態を確認します。今回は「disabled」に設定したので、無事反映されていることが確認できました。

# getenforce 
Disabled

 設定変更時の注意点

「/etc/selinux/config」ファイルの編集ですが、スペルミス等で設定を失敗してしまうと、サーバが起動しなくなってしまうことがあります。

この場合は、インストールメディアからレスキューモードで起動し、設定ファイルがあるパーティションのディスクをマウントして、ファイルの再編集もしくはリストアといった流れになってしまい、面倒くさい事になるので編集の際には十分に確認を行い間違いが無いようにして下さい。

 - selinux