Apache-2.2

如何保護共享主機環境的 Apache?(chrooting,避免符號連結……)

  • July 16, 2015

我在處理 Apache 配置時遇到問題:問題是我想將每個使用者限制為他自己的 docroot(因此,我正在尋找一個 chroot() ),但是:

  • Mod_chroot 僅適用於全域,不適用於每個虛擬主機:我的使用者位於如下路徑/home/vhosts/xxxxx/domains/domain.tld/public_html(xxxxx 是使用者),並且無法解決 chrooting 問題/home/vhosts,因為仍然允許使用者看到對方。
  • 使用 apache-mod-itk 會大大降低網站速度,我不確定它是否能解決任何問題
  • 如果不使用前兩個中的任何一個,我認為唯一剩下的就是避免符號連結,不允許使用者連結到不屬於他們的東西。

所以,我想我會遵循第三點,但是……如何有效地避免符號連結,同時仍然保持 mod_rewrite 工作?!

php 已經被 php-fpm chroot,所以我唯一關心的是 Apache 本身。

為什麼需要限制 apache 本身?將腳本執行時(php、Perl、ruby、…)鎖定在 chroot 中不是更好/足夠嗎?如果是這樣,請查看 mod_fastcgi 以及如何為您需要的特定語言啟動持久解釋器。

任何看到這篇文章的人都會注意到 Apache 描述SymLinksIfOwnerMatch為不是一種適當的安全措施:

此選項不應被視為安全限制,因為符號連結測試受制於使其可以規避的競爭條件。”
(來自http://httpd.apache.org/docs/2.2/mod/core.html#options)。

除了完全禁止符號連結並阻止使用者覆蓋 .htaccess 文件中的設置之外,要查看防止符號連結攻擊的解決方案,請查看https://documentation.cpanel.net/display/EA/Symlink +Race+Condition+Protection(不僅僅是 cPanel 特定的)。

引用自:https://serverfault.com/questions/402519