實例:保障UbuntuApacheWeb服務(wù)器安全 |
發(fā)布時間: 2012/8/13 9:26:57 |
在一個Linux發(fā)行版本上設(shè)置一個Web服務(wù)器是一個很快的過程,不過要讓這種設(shè)置成為一種安全的過程可能就需要花點兒工夫。本文將向你展示如何有效地使用訪問控制和身份驗證策略,使你的ApacheWeb服務(wù)器更安全。下面所有的例子都假定你用的是Ubuntu7.10,并對Apache進行了基本的配置。不過,這些例子將幫助任何一位運行Apache服務(wù)器的用戶獲得更大的安全性,因為其要領(lǐng)仍然適用于其它Linux系統(tǒng)。本文中所涉及到的方法應當首先在一臺測試服務(wù)器上進行試驗,在成功之后才能遷移到一個實際使用的Web服務(wù)器上。
一、文件許可和訪問控制 1.用戶和組 首先要保障的是Apache不要以root身份運行,因為如果Apache被攻破的話,那么攻擊者就可以控制root賬戶。下面讓我們看一下Apache正以何種用戶和組的身份運行: 運行下面的命令: #psauwwfx|grepapachewww-data256750.00.010348508?SJan210:00\_/usr/sbin/apache2-kstart 可以看出,www-data是運行Apache的用戶。不過,我們需要編輯Apache的配置并創(chuàng)建一個新用戶和組: #groupaddwww-data 將UserrootGrouproot改為: Userwww-dataGroupwww-data 然后重新加載以使改變生效: #/etc/init.d/apache2reload 2.服務(wù)文件準許 一個最易被忽視的安全問題是如何正確地使用chmod命令。例如,我們在Apache的htmlroot目錄中創(chuàng)建了一個index.cgi文件,不過在瀏覽器中打開這個文件時卻被告知拒絕訪問。為了讓我們的index.cgi文件正常工作,我們執(zhí)行一個chomod777index.cgi。在我們?nèi)绱嗽囼灂r,每一個Apache管理員都在考慮這樣安全嗎?答案是否定的。不過,如何使這種許可足夠安全并能允許index.cgi腳本正常運行呢? Apache需要得到準許來訪問index.cgi文件。不過,我們不希望人人都能讀寫index.cgi。這個文件的所有者應當擁有讀寫這個文件的許可。為此我們需要下面的命令: #chmod755index.cgi 將下面的一行加入到你的Apache.conf文件中是很重要的: OptionsFollowSymLinksAllowOverrideNone 注意: 1、上面的命令行防止Apache訪問root之外的文件。 2、有一些Linux發(fā)行版本比其它版本擁有更好的安全性。EnGardeSecureLinux就是一個很好的例子,因為它默認情況下就在其Apache配置文件中包含了上面的代碼行。 我們并不想讓用戶在文件系統(tǒng)上的任何地方運行CGI腳本,不過我們確實需要它們在root中運行。對這個問題的解決辦法是“OptionsExecCGI”指令。 例如,將下面的行添加到/etc/apache2/apache2.conf文件中: AllowOverrideNoneOptionsExecCGIOrderallow,denyAllowfromall 重新加載Apache: #/etc/init.d/apache2reload 那么,如果你擁有只應當被某個網(wǎng)絡(luò)或IP地址訪問的資源怎么辦?對這個問題的解決辦法是使用我們的Apache配置來為你增強安全性: 先說一個只允許訪問192.168.0.0網(wǎng)絡(luò)的例子,需要改變/etc/apache2/apache2.conf文件中以下的一行: AllowOverrideNoneOptionsExecCGIOrderallow,denyAllowfromall 將其改為: AllowOverrideNoneOptionsExecCGIOrderDeny,AllowDenyfromallAllowfrom192.168.0.0/16 然后重新加載以使更改生效: #/etc/init.d/apache2reload 現(xiàn)在只有你內(nèi)部網(wǎng)絡(luò)上的用戶能夠在/home/username/public_html/cgi-bin中運行CGI腳本。 我們怎樣才能僅允許那些擁有正確口令和用戶名的用戶訪問部分webroot呢?下面的步驟將向你展示如何安全地做到這一點: 1.基本驗證 允許.htaccess: #vi/etc/apache2/apache2.conf 將AllowOverideNone改為AllowOverideAuthConfig 重新加載以使改變生效: #sudo/etc/init.d/apache2reload 創(chuàng)建一個口令文件: #mkdir/var/www/misc 創(chuàng)建.htaccess #cd/home/username/public_html/cgi-bin#vi.htaccess 在.htaccess中增加下面的命令: AuthNameMyPrivateArea"AuthTypeBasicAuthUserFile/var/www/misc/private.passwordsAuthGroupFile/dev/nullrequirevalid-user 將AllowOverrideNoneOptionsExecCGIOrderDeny,AllowDenyfromallAllowfrom192.168.0.0/16 改變?yōu)椋篈llowOverride.htaccessOptionsExecCGIOrderDeny,AllowDenyfromallAllowfrom192.168.0.0/16 然后重新加載以使更改生效: #/etc/init.d/apache2reload 2、摘要驗證(Digestauthentication) 另外一種驗證方法稱之為摘要驗證。如果采用摘要驗證,你的口令將不是以明文通過網(wǎng)絡(luò)傳送,因為它們總是作為用戶口令的一個MD5摘要傳送的。如果采用這種方法,那么通過嗅探網(wǎng)絡(luò)通信的方法就不能決定用戶的口令了。 下面創(chuàng)建口令文件: #mkdir/var/www/misc 創(chuàng)建.htaccess: #cd/home/username/public_html/cgi-bin#vi.htaccess 在.htaccess中增加下面的內(nèi)容: AuthName"MyPrivateArea"AuthTypeDigestAuthUserFile/var/www/misc/private.passwordsAuthGroupFile/dev/nullrequirevalid-user 注意: 1、一些老的瀏覽器并不支持摘要驗證(Digestauthentication) 2、要完全地保護你的.htaccess就要使用SSL 三、總結(jié) 使Apache更安全的下一步措施是使用Apache的模塊來幫助實現(xiàn)更好的安全性,例如mod_security和mod_chroot。此外,要保護我們的驗證我們還需要配置SSL。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |