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

ホーム > 業務日誌 > スタッフ別 > > 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を使っている人であれば、そんなに違和感はないはず。

お疲れ様です。

 

金広 優 (エンジニア)

この記事を書いた人:金広 優 (エンジニア)

システムガーディアン爆弾処理班。アクセス負荷対策やNginxへの移行案件が多いこの頃。IBM SoftLayerやAWSなどクラウド案件も多くなってきました。

この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166