ブログ

Blog

rootを越えろ!スルーされがちなSELinuxの秘密-前編-

rootを越えろ!スルーされがちなSELinuxの秘密-前編-

みなさん、こんにちは。えんピぐらしです。

Linuxでの構築経験がある方を対象としていますので、前回よりも少しレベルが高くなりますが、今回はSELinuxという機能について見ていきたいと思います。
Linuxの構築経験がある方は分かると思いますが、SELinuxは必ずと言っていいほど、「無効」にします。デフォルトで有効になっている機能なのですが、わざわざ無効にします。私は今までSELinuxを有効にしているシステムを見たことがありません。(周りにもいませんでした)

今回は、そんなSELinuxについてのお話です。

rootを越えろ!スルーされがちなSELinuxの秘密-前編-

SELinuxとは?

そもそもSELinuxとは何なのでしょうか。
Wikipediaでは、こう書かれています。

“SELinux(Security-Enhanced Linux : エスイーリナックス)は、アメリカ国家安全保障局がGPL下で提供しているLinuxのカーネルに強制アクセス制御 (MAC)機能を付加するモジュールの名称。”

つまり、SELinuxは、アメリカ国家安全保障局(NSA)が提供しているセキュリティ用のモジュールのことです。NSAが提供しているということは軍事レベルでのセキュリティがLinuxに搭載されているということになります。
SELinuxの最大の特徴は、rootユーザの特権を無くしてしまったという事に尽きます。。

Linuxのセキュリティ、アカウント管理は非常にシンプルです。
簡単に言ってしまうと、それぞれのファイルやディレクトリに対して、パーミッションに基づき、アクセス制限が決められています。パーミッションは、「オーナー」「グループ」「その他」に対して、「r(読めるか)」「w(書き込めるか)」「x(アクセス・実行できるか)」を設定しています。
このパーミッションを無視してアクセス可能なのがrootユーザの特権です。全ての権限が集中してしまうため、rootユーザのパスワードが漏洩すると、サーバの全てが乗っ取られてしまう危険があります。

なぜSELinuxを無効化するのか

SELinuxを無効化にする理由は簡単です。
意図的にプログラムが動かなくなったり、インストールできなくなるからです。

セキュリティが高いが故に、一昔前のメーカーのマニュアルでは手順通りにインストールしてもうまく動きません。SELinuxを無効化したら動いた!という経験は私だけでは無い筈です(苦笑)
最近では、ミドルウェアのインストール要件で「SELinuxを無効にすること」と書かれていることもあります。

そのため、SELinuxを無効化するのが常識になりつつあります。

とはいえ、セキュリティの必要性が高まっている今日、いずれ使うことも想定される機能です。
Wikipediaにも、“IPv6と並んで、対応できる技術者の育成が課題となっている”とあります。

SELinuxを有効/無効

それではSELinuxを設定してみましょう。

1. 恒久的な設定

OS再起動後も同じ設定をしたい場合は、
以下のファイルを変更してOSを再起動します。

/etc/SELinux/configの中身 ※対象OSはCentOS 6.8です

# 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 two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELinuxTYPE=targeted

「SELinux=」の部分を変更すると有効/無効の設定ができます。
それぞれの設定の意味は以下の通りです。

  • enforcing…SELinux有効
  • permissive…実際には動作しないが、ログには残る。トラブルシュートに便利
  • disabled…SELinux無効

※文字を打ち間違えて再起動すると、起動しなくなりますのでご注意下さい。

2. 一時的な設定方法

OSの再起動をするのが難しい場合もあります。
そんな時はコマンドで設定を変更することもできます。

・再起動後の状態が「Enforcing」の場合

「setenforce 0」でpermissiveに変更できます。
戻す場合は「setenforce 1」を実行します。

再起動後の状態が「Enforcing」の場合

・再起動後の状態が「Permissive」の場合

「setenforce 1」でenforcingに変更できます。
戻す場合は「setenforce 0」を実行します。

再起動後の状態が「Permissive」の場合

・再起動後の状態が「Disabled」の場合

設定変更することはできません。

再起動後の状態が「Disabled」の場合

今回はここまでとなります。
次回は実際にSELinuxを設定して、トラブルシュートしながら動作をみてみましょう!

参考資料:Wikipedia

rootを越えろ!スルーされがちなSELinuxの秘密-後編-rootを越えろ!スルーされがちなSELinuxの秘密-後編-
  • SNS
  • 投稿日
  • カテゴリー

    BTM Useful