Site icon Soul & Shell Blog

Apache 透過 ITK Multi-Processing Module 讓虛擬主機以不同使用者執行

前言images

一般來說 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 套件

直接用 rpm 從 Webstatic 安裝 yum repository

[root@server ~]# rpm -Uvh http://mirror.webtatic.com/yum/centos/5/latest.rpm

 安裝 httpd-itk 套件

[root@server ~]# yum install --enablerepo=webtatic httpd-itk

 編輯 /etc/sysconfig/httpd 指定用 httpd.itk 來執行,請加入以下設定

HTTPD=/usr/sbin/httpd.itk

 編輯 /etc/httpd/conf.d/php.conf 載入 PHP Module,請加入以下設定

<IfModule itk.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>

 編輯 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>

 重新啟動 Apache

[root@server ~]# service httpd restart

 大功告成,簡單吧!

參考資料

Exit mobile version