??Web服務(wù)器安全,考慮的是應(yīng)用布置時(shí)的運(yùn)行環(huán)境安全。這個(gè)運(yùn)行環(huán)境包括Web Server、腳本語(yǔ)言解釋器、中間件等軟件,這些軟件所提供的一些配置參數(shù),也可以起到安全保護(hù)的作用。
Apache安全
??Web Server的安全我們關(guān)注兩點(diǎn):
- Web Server本身是否安全;
- Web Server是否提供了可使用的安全功能。
在Apache的漏洞史上出現(xiàn)過許多次高危漏洞,但這些高危漏洞,大部分是由Apache的Module造成的。Apache的核心幾乎沒有漏洞,Apache有許多官方非官方Module,默認(rèn)啟動(dòng)的Module出現(xiàn)的漏洞非常少,大多數(shù)的高危漏洞集中在默認(rèn)沒有安裝或enable的Module上。
??因此檢查Apache安全的第一件事情,就是檢查Apache的Module安裝情況,根據(jù)“最小權(quán)限原則”,應(yīng)該盡可能地減少不必要的Module,對(duì)于要使用的Module則檢查其對(duì)應(yīng)版本是否存在已知的安全漏洞。
??指定Apache進(jìn)程以什么用戶身份運(yùn)行,應(yīng)滿足“最小權(quán)限原則”,Apache以root身份或者admin身份(高權(quán)限身份)運(yùn)行是一件非常危險(xiǎn)的事。它會(huì)帶來兩個(gè)后果:
1.當(dāng)黑客入侵Web成功時(shí),將直接獲得一個(gè)高權(quán)限(比如root或admin)的shell;
2.應(yīng)用程序本身將具備較高權(quán)限,當(dāng)出現(xiàn)bug時(shí),可能會(huì)帶來較高風(fēng)險(xiǎn),比如刪除本地重要文件、殺死進(jìn)程等不可預(yù)知的結(jié)果。
??正確配置參數(shù),保護(hù)好Apache Log(日志文件)。
Nginx安全
??Nginx的高性能和高并發(fā)的處理能力使得用戶在Web Server的選擇上有了更多的空間。但是從安全的角度來看,Nginx近年來出現(xiàn)的影響默認(rèn)安裝版本的高危漏洞卻比Apache更多。在Nginx
??檢查Apache安全時(shí),更多的要關(guān)注Module的安全,而Nginx則需要注意軟件本身的安全,及時(shí)升級(jí)軟件版本。與Apache一樣,Nginx也應(yīng)該已單獨(dú)的身份運(yùn)行,這是所有Web Server、容器軟件應(yīng)該共通遵守的原則。
jBoss遠(yuǎn)程命令執(zhí)行
??jBoss是J2EE環(huán)境中一種流行的web容器,但是jBoss在默認(rèn)安裝時(shí)提供的一些功能卻不太安全,如果配置不得當(dāng),則可能直接造成遠(yuǎn)程命令執(zhí)行。
??由于jBoss在默認(rèn)安裝時(shí)會(huì)有一個(gè)管理后臺(tái),叫做JMX-Console,它提供給管理員一些強(qiáng)大的功能,其中包括配置MBeans,這同樣也會(huì)為黑客們大開方便之門。通過8080端口(默認(rèn)安裝時(shí)會(huì)監(jiān)聽8080端口)訪問/jmx-console能夠進(jìn)入到這個(gè)管理頁(yè)面,默認(rèn)安裝時(shí)訪問JMX-Console是沒有任何認(rèn)證的。
??在JMX-Console中,有多種可以遠(yuǎn)程執(zhí)行命令的方法,再簡(jiǎn)單的方式,是通過DeploymentScanner遠(yuǎn)程加載一個(gè)war包。
Tomcat遠(yuǎn)程命令執(zhí)行
??Apache Tomcat與jBoss一樣,默認(rèn)也會(huì)運(yùn)行在8080端口。它提供的Tomcat Manager的作用與JMX-Console類似,管理員也可在Tomcat Manager中部署war包。但是Tomcat Manager部署war包需要有manager權(quán)限,而這一權(quán)限是在配置文件中定義的,需要管理員權(quán)限才能配置。
HTTP Parameter Pollution(HPP攻擊)
??HPP攻擊,簡(jiǎn)單的來說就是通過GET或POST向服務(wù)器發(fā)起請(qǐng)求時(shí),提交兩個(gè)相同的參數(shù),那么服務(wù)器將如何選擇呢?比如提交:
/?a=test&a=test1
??在某些服務(wù)端環(huán)境中,會(huì)只取第一個(gè)參數(shù);而在另一些環(huán)境中,比如.net環(huán)境中,則會(huì)變成:
a=test,test1
??這種特性在繞過一些服務(wù)器端的邏輯判斷時(shí),會(huì)非常有用。
??這種HPP攻擊,和web服務(wù)器環(huán)境、服務(wù)器端使用的腳本語(yǔ)言有關(guān)。HPP本身可以看作服務(wù)器端軟件的一種功能,參數(shù)選擇的順序是由服務(wù)器端軟件決定的,當(dāng)程序員不熟悉軟件的這種功能時(shí),就可能造成誤用,或者程序涵蓋范圍不夠全面,從而形成漏洞。
??從防范上來看,由于HPP是服務(wù)器軟件的一種功能,所以只需在具體的環(huán)境中注意服務(wù)器環(huán)境的參數(shù)的取值順序即可。
小結(jié)
Web Server、web容器是Web應(yīng)用的載體,是基礎(chǔ),他們的安全與否將直接影響到應(yīng)用的安全性。在搭建服務(wù)器端環(huán)境時(shí),需要注意最小權(quán)限規(guī)則,應(yīng)該以獨(dú)立的低權(quán)限身份運(yùn)行Web進(jìn)程,同時(shí)Web Server的一些參數(shù)能夠優(yōu)化性能,有助于緩解DDOS攻擊,Web Server本身的漏洞也需要時(shí)刻關(guān)注。