聲明:關於安全的事情沒有保證的或者絕對的。這些建議可以讓你的服務器更安全,但不要認為遵循這些建議後你的服務器就理所當然是安全的。
另外,在這些建議中有的建議可能會降低服務器性能或者因為你的環境引起問題。我建議所作的任何改變是否適合你的需求完全由你決定。換句話說,那是你的風險。
一、確保你安裝的是最新的補丁
如果門是敞開的話,在窗戶上加鎖就毫無意義。同樣道理,如果你沒有打補丁,繼續下面的操作就沒有什麼必要。
二、隱藏Apache的版本號及其它敏感信息
默認情況下,很多Apache安裝時會顯示版本號及操作系統版本,甚至會顯示服務器上安裝的是什麼樣的Apache模塊。這些信息可以為黑客所用,並且黑客還可以從中得知你所配置的服務器上的很多設置都是默認狀態。
這裡有兩條語句,你需要添加到你的httpd.conf文件中:
ServerSignature Off
ServerTokens Prod
ServerSignature出現在Apache所產生的像404頁面、目錄列表等頁面的底部。ServerTokens目錄被用來判斷Apache會在Server HTTP響應包的頭部填充什麼信息。如果把ServerTokens設為Prod,那麼HTTP響應包頭就會被設置成:
Server:Apache
如果你非常想嘗試其它事物,你可以通過編輯源代碼改成不是Apache的其它東西,或者你可以通過下面將要介紹的mod_security實現。
三、確保Apache以其自身的用戶賬號和組運行
有的Apache安裝過程使得服務器以nobody的用戶運行,所以,假定Apache和你的郵件服務器都是以nobody的賬號運行的,那麼通過Apache發起的攻擊就可能同時攻擊到郵件服務器,反之亦然。
User apache
Group apache
四、確保web根目錄之外的文件沒有提供服務
我們不讓Apache訪問web根目錄之外的任何文件。假設你的所以web站點文件都放在一個目錄下(例如/web),你可以如下設置:
Order Deny,Allow
Deny from all
Options None
AllowOverride None
Order Allow,Deny
Allow from all
注意,因為我們設置Opitins None 和AllowOverride None,這將關閉服務器的所有Option和Override。你現在必須明確把每個目錄設置成Option或者Override。
五、關閉目錄浏覽
你可以在Directory標簽內用Option命令來實現這個功能。設置Option為None或者-Indexes。
Options -Indexes
六、關閉includes
這也可以通過在Directory標簽內使用Option命令來實現。設置Option為None或者-Includes。
Options -Includes //本文來自電腦軟硬件應用網www.45it.com
七、關閉CGI執行程序
如果你不用CGI,那麼請把它關閉。在目錄標簽中把選項設置成None或-ExecCGI就可以:
Options -ExecCGI
八、禁止Apache遵循符號鏈接
同上,把選項設置成None或-FollowSymLinks:
Options -FollowSymLinks
九、關閉多重選項
如果想關閉所有選項,很簡單:
Options None
如果只想關系一些獨立的選項,則通過將Options做如下設置可實現:
Options -ExecCGI -FollowSymLinks -Indexes
十、關閉對.htaccess文件的支持
在一個目錄標簽中實現:
AllowOverride None
如果需要重載,則保證這些文件不能夠被下載,或者把文件名改成非.htaccess文件。比如,我們可以改成.httpdoverride文件,然後像下面這樣阻止所有以.ht打頭的文件:
AccessFileName .httpdoverride
Order allow,deny
Deny from all
Satisfy All
十一、運行mod_security
Run mod_security是O’Reilly出版社出版的Apache Security一書的作者,Ivan Ristic所寫的一個非常好用的一個Apache模塊。可以用它實現以下功能:
·簡單過濾
·基於過濾的常規表達式
·URL編碼驗證
·Unicode編碼驗證
·審計
·空字節攻擊防止
·上載存儲限制
·服務器身份隱藏
·內置的Chroot支持
·更多其它功能
十二、關閉任何不必要的模塊
Apache通常會安裝幾個模塊,浏覽Apache的module documentation,了解已安裝的各個模塊是做什麼用的。很多情況下,你會發現並不需要激活那些模塊。
找到httpd.conf中包含LoadModule的代碼。要關閉這些模塊,只需要在代碼行前添加一個#號。要找到正在運行的模塊,可以用以下語句:
grep LoadModule httpd.conf
以下模塊通常被激活而並無大用:mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex。(e129)