mod_process_securityの導入手順が書いてるサイトが無かったので、今後再インストール等の時用に備忘録として投稿!
Linux上だとバーチャルホストの所有ユーザー毎にCGIやPHPが動いた方が色々と便利で安全なのですが、通常だとApacheを起動しているユーザーでCGI等が動く。
このままだとディレクトリーの所有者とApache実行ユーザーが違うとファイルがアップロードできなかったり、FTPなどで削除できなくなる問題が発生する。
これを解決するためにsuEXECやsuPHPが有ったが、mod_process_securityというものも作られた。
このモジュールの良いところは、suEXECやsuPHPではPHPがCGIモードで動作させないといけない為にパフォーマンスがイマイチになってしまうが、DSO実行形式で動かせるので大きなパフォーマンスダウンは無くなる。
ここではCentOS 7.1にyumでHTTPDやPHPを入れ名前ベースの複数バーチャルホストで既に動いている環境に導入する。
- コンパイルに必要なライブラリーをインストールする。
# yum install httpd-devel libcap-devel
- GitHubよりダウンロードして解凍、ディレクトリー移動。
# wget -O mod_process_security.zip http://github.com/matsumoto-r/mod_process_security/archive/master.zip
# unzip mod_process_security.zip
# cd mod_process_security-master/
- コンパイル。
# apxs -i -c -l cap mod_process_security.c
- 不要ファイル削除。
# cd ../
# rm -rf mod_process_security*
- Apacheに設定追加。
conf.d/process_security.confに作っているけどhttpd.confに追記でも可。
#vi /etc/hrttpd/conf.d/process_security.conf
LoadModule process_security_module modules/mod_process_security.so
<Directory "/hogehoge">
PSRootEnable On
</Directory>
(どうやらDirectoryディレクティブ単位では設定が反映されない模様。というか動作検証の結果PSRootEnable自体がちゃんと動いていないと思われる…)
- 各バーチャルホストの設定ファイルに追記する。各設定ファイルに追記するのはApache実行ユーザーで動かしたいバーチャルホストのサイトは除外するため。
PSExAll On
- Apache再起動。
実際はstopして下記のchownをやってからstartした方がトラブルは少ないと思われます。
# stemctl restart httpd
- 各バーチャルホストの参照先ディレクトリー内の所有者を設定。
chown -R hoge:hoge /home/hoge/www/
あとは動作確認して設定モレなどがないかチェック。
mod_process_security自体設定は他にもオプションがあるので、GitHubに記載されているのを確認!