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