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

      例えばAWStatsをApache実行ユーザーやrootで動かしている場合、このままだと各ユーザーのバーチャルホスト上にAilias等でディレクトリーを指定して稼働させる場合は動かなくなるので、バーチャルホストの設定ファイルに追記する。
      <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に記載されているのを確認!

コメントを残す

メールアドレスが公開されることはありません。

Post Navigation