SELinuxでご飯を食べよう WordPress導入編

SELinux WordPress

今回はSELinuxご紹介。

 

SELinuxって何もの?

SELinux

アメリカ国家安全保障局 (NSA) がGPL下で提供しているLinuxカーネル強制アクセス制御 (MAC) 機能を付加するモジュールの名称。名前から勘違いされることが多いが、Linuxディストリビューションの1つではない。1992年、NSAが主体となってFlukeというOS上におけるMAC機能の研究のために開発された。MAC機能はセキュリティの高いOSの提供を可能にするが、主にMulti Level Securityと呼ばれる機能で提供されている。この機能ではアクセスする対象(サブジェクト)全てに階層化された権限が与えられ、またアクセスされる対象(オブジェクト)にも全て階層化された情報の重要度に応じたラベルを付加することによってアクセスの制御を行うもので、柔軟に実装するには複雑なシステムになってしまうという欠点があった。

@see Wikipedia

小難しい単語が並んでますが、ファイアウォールみたいなものと思って貰えればオーケー!

 

SELinuxによって強化される機能とは?

通常のLinuxに実装されている任意アクセス制御(DAC)と呼ばれるアクセス制御方式に問題があることが指摘されているからです。任意アクセス制御方式は基本的にファイルの所有者にすべてのアクセス権限の設定を委ねています。つまり、とても重要な情報であったとしても勝手にファイルの所有者がアクセス権を変更できてしまうのです。

さらに、システム管理者権限を保有するrootユーザに対して、すべての情報へ自由にアクセスが許可されている、とても大きな特権が与えられています。このため、不正アクセスやほとんどのマルウェアはrootユーザの強大な権限を奪取することを前提として動作しています。もし一度でもroot権限を悪用されてしまうとすべての情報が漏洩することを覚悟しなければなりません。

そこでSELinuxでは、rootユーザの動作を制御できるアクセス制御方式(強制アクセス制御:MAC)やrootユーザの特権を細かく分割する機能(最少特権:LeastPrivilege)を実装しています。実際にroot権限が奪取された場合でも、SELinuxが有効になっていれば、被害を事前に防げる例が多く報告されているのです。

つまり、Linuxに強制アクセス制御機能や最少特権の仕組みを実装するためにSELinuxが搭載されていると思えばよいでしょう。

@see https://thinkit.co.jp/free/article/0706/26/

マルウェア等にroot権限が取られても、SELinuxで特権を予め制限しておくことで、影響箇所を最小限に留めることが出来ます。

LinuxだけではセキュアOSを実現出来ないので、セキュリティの高い基準を満たす為に組み込まれたものなのですね!

 

あんまりモテないやつ

障害でのトラブルシューティングで切り分けが複雑になり易いとか、SELinuxをそもそも有効化して構築しない系譜が多いことで、一度も有効化してサーバを建てたことがないエンジニアもいるように思えます。

デフォルトで有効化されているのに、多くのサーバで無効化される不遇な存在。失恋続きの私にはなにやら親近感がわきます。

 

SELinuxにまつわる伝説

SELinuxを極めたエンジニアはご飯を食べていける

そのような話があります。

 

本当にSELinuxで人は飯を食べていけるのか?

幸せになれるのか。

 

愛を証明しようと思う。

SELinuxを有効にしたWordPressの導入方法をご紹介することで、皆が飢えずにご飯を食べていけたらいいなと願っています。そうすれば戦争だってなくなるかもしれない。

 

色々思惑はありますが、セキュリティが高い高信頼性サーバが増えることは良いことです。

 

WEBサーバ環境インストールのCentOSから

 

サーバIPの確認を行います。

SELinuxの確認します。

元気に動いていますね!

 

ファイアウォール

ファイアウォールに穴をあけましょう。

反映させます。

 

必要なものはこれだけ

 

MySQL

MySQLを起動させます。

DBの設定を行います。

 

WordPress

WordPressのダウンロードを行います。

 

ユーザの追加

ユーザの追加を行います。

 

Apache

権限の変更を行います。

Apacheの設定を変更します。

 

ここでアクセスしてみます。

http://IPアドレス/wp

 

SELinux WordPress

データベース接続情報を入力して、【送信】をクリックしましょう。

 

SELinux WordPress

エラー発生。

SELinuxにより、『データベースにWEBサービスからアクセス出来ない』ようです。

 

SELinuxの設定

組み込みルールの有効・無効かのステータスを確認します。

http関係のルールを確認します。

 

WEBサービス経由でDBにアクセスできるようにします。

 

【送信】をクリックします。

 

WEBサービスからwp-configに書き込めないよ!というエラーがでています。

 

semanageを導入します。

 

semanageの利用

 

参照権限付与

書き込み権限付与

 

ファイルの状態を見てみる

 

ここまできましたね!

 

SELinux WordPress

淡々と入力していきましょ~!

 

 

SELinux WordPress

ログインを押すと管理画面へのログインページにリダイレクトされます。

 

SELinux WordPress

SELinuxはそんなに怖くないことがわかりますね!

CentOS7でのFirewalldを使っている人であれば、そんなに違和感はないはず。

お疲れ様です。

 

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG