26.7. 避免安全性問題

向公用網際網路公開的網頁伺服器,必須持續進行系統管理。這時當然會無法避免地出現與軟體、意外錯誤設定相關的安全性問題。下面是可用來處理這些問題的幾項秘訣。

26.7.1. 更新軟體

SUSE 會在發現 Apache 軟體弱點時,發出安全性建議事項。其中會包含應該要儘速套用的弱點修正指示。請由下列位置取得 SUSE 安全性公告:

26.7.2. DocumentRoot 許可權

根據 SUSE Linux 預設,DocumentRoot 目錄 /srv/www/htdocs 與 CGI 目錄 /srv/www/cgi-bin 的所有權屬於 root 使用者和群組。您不應該變更這些許可權。如果所有人都可以寫入目錄,任何使用者都可以將檔案放到目錄中。這些檔案接著可能會由 Apache 透過 wwwrun 許可權來執行,而這種情況可能會造成使用者取得不預期的檔案系統資源存取權限。使用 /srv/www 子目錄來存放虛擬主機的 DocumentRoot 和 CGI 目錄,並確定這些目錄所有權屬於 root 使用者和群組。

26.7.3. 檔案系統存取

依預設,/etc/apache2/httpd.conf 已設定成拒絕存取整個檔案系統。您絕對不可以覆寫這些指示詞,但是可以特別啟用應由 Apache 讀取之所有目錄的存取權限 (如需詳細資訊,請參閱節 26.2.1.2.3, "基本虛擬主機組態")。如果要執行這個動作,請確保沒有任何重要檔案 (例如密碼或系統組態檔案) 可由外界進行讀取。

26.7.4. CGI 程序檔

使用 Perl、PHP、SSI 或是任何其他程式設計語言的互動式程序檔,基本上都可以執行任意指令,因此會產生常見的安全性問題。將從伺服器執行的程序檔,只能由伺服器管理員信任的來源進行安裝 -- 通常最好不要讓使用者執行自己的程序檔。同時建議您為所有程序檔進行安全性稽核。

為了盡可能簡化程序檔的管理工作,通常建議您限制 CGI 程序檔在特定目錄中執行,而不是全域性開放執行。您可以使用 ScriptAliasOption ExecCGI 指示詞來進行這項組態設定。SUSE Linux 的預設組態不允許在任何位置執行 CGI 程序檔。

所有 CGI 程序檔都是以相同使用者身份執行,所以不同的程序檔彼此之間可能會產生衝突。module suEXEC 可讓您以不同使用者和群組身分來執行 CGI 程序檔。

26.7.5. 使用者目錄

當您在啟用使用者目錄 (使用 mod_userdir 或 mod_rewrite) 時,您應該審慎考慮不要允許 .htaccess 檔案,因為此檔案會允許使用者覆寫安全性設定。至少您應該使用 AllowOverRide 指示詞來限制使用者的應用範圍。在 SUSE Linux 中,.htaccess 檔案已預設啟用,但是並不允許使用者在使用 mod_userdir 時覆寫任何 Option 指示詞 (請參閱 /etc/apache2/mod_userdir.conf 組態檔案)。