Apache MPM 實戰教學:chroot 隨時被淘汰!
一般來說 Linux Apache 服務啟動時,預設都是限定一組使用者與群組來執行程序(通常是 apache 這個帳號)。但有時我們常透過虛擬主機 (Virtual Host) 在同一個 Apache 上存放著許多網站。
有時候用了很多 Open Source 的架站軟體,像是 WordPress, Joomla, Drupal 等等。這時候問題來了,如果大家都是用同樣的使用者執行,一旦其中一個網站被入侵,Hacker 就可以很輕易的透過 Apache 程序存取同一主機其他網站的檔案資料 (例如透過 PHP),很快整台主機就會被攻陷。
那我們可要想個辦法控制 Apache 執行程序,目的只是讓非法的程式只能讀取限制的 Document Root。有兩種方法可以達到效果,一種是 chroot 另一種就是 MPM (Multi-Processing Module)。個人比較不喜歡 Chroot 作法,由於本人技術不佳,擔心控制不好可能會整個網站都被看破,所以這裡我們介紹 MPM 來指定 Apache Virtual Host 程序的使用者與群組。
安裝 mpm-itk 套件
Step 1:直接用 rpm 從 Webstatic 安裝 yum repository:
[root@server ~]# rpm -Uvh http://mirror.webtatic.com/yum/centos/5/latest.rpm
Step 2:安裝 httpd-itk 套件:
[root@server ~]# yum install –enablerepo=webtatic httpd-itk
Step 3:編輯 /etc/sysconfig/httpd 指定用 httpd.itk 來執行,請加入以下設定:
HTTPD=/usr/sbin/httpd.itk
Step 4:編輯 /etc/httpd/conf.d/php.conf 載入 PHP Module,請加入以下設定:
<IfModule itk.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
Step 5:編輯 Virtual Host 設定檔,透過 AssignUserID 參數設定 Apache 程序的使用者與群組,範例如下:
<VirtualHost *:80>
ServerName weba.gg-server.com
AssignUserID weba weba
DocumentRoot /home/weba/www
<Directory /home/weba/www>
Options Indexes FollowSymLinks MultiViews
allow from all
</Directory>
</VirtualHost>
Step 6:重新啟動 Apache:
[root@server ~]# service httpd restart
大功告成,簡單吧!