


Apache HTTP Web服務(wù)器保持安全的秘訣
Apache HTTP服務(wù)器是世界上最常見(jiàn)的Web服務(wù)器軟件,這點(diǎn)是明擺著的。據(jù)最近一項(xiàng)調(diào)查顯示,全世界運(yùn)行Apache HTTP的網(wǎng)站數(shù)量超過(guò)4.2億個(gè)。鑒于數(shù)字如此驚人,我們自然很好奇地想了解Apache背后的更多詳情。
我們Pingdom網(wǎng)站的人員都是Apache HTTP Web服務(wù)器的擁躉,因?yàn)槲覀冇盟鼇?lái)運(yùn)行我們的主網(wǎng)站Pingdom.com。所以我們逮住機(jī)會(huì)、興致勃勃地采訪(fǎng)William A. Rowe Jr。也就不足為奇了,前不久他還在完全志愿者組成的Apache軟件基金會(huì)擔(dān)任HTTP服務(wù)器項(xiàng)目副總裁一職。他在近12年一直效力于Apache軟件基金會(huì),擔(dān)任過(guò)不同崗位,包括2007年至2009年任職基金會(huì)董事。
一種錯(cuò)誤的想法:開(kāi)源不大安全
首先,我們向Bill(注:William的昵稱(chēng))拋出了人們通常所持的這個(gè)想法:由于在Apache HTTP服務(wù)器等開(kāi)源項(xiàng)目中,源代碼向公眾開(kāi)放,所以這意味著開(kāi)源不大安全。這種觀點(diǎn)認(rèn)為,實(shí)際上,誰(shuí)要是想鉆運(yùn)行開(kāi)源軟件的系統(tǒng)的空子,只要查看代碼,就能弄清楚如何闖入進(jìn)去。另一方面,閉源軟件天生要來(lái)得更安全,因?yàn)榇a不是誰(shuí)都可以隨隨便便查看的。
Bill答復(fù):“很顯然,這是一種錯(cuò)誤的認(rèn)識(shí)。”
他繼續(xù)說(shuō):“公開(kāi)披露自己的部分源代碼,這其實(shí)是像微軟這些閉源產(chǎn)品開(kāi)發(fā)公司最不擔(dān)心的。它們更加擔(dān)心的是有人用間諜手段刺探源代碼,或者通過(guò)滲透測(cè)試發(fā)現(xiàn)軟件缺陷(bug);這種情況下,它們不知道自己的源代碼在接受審查。”
他解釋?zhuān)缃瘢槍?duì)軟件的安全審查在很大程度上實(shí)現(xiàn)了自動(dòng)化。Bill說(shuō):“誰(shuí)都可以進(jìn)行這樣的審查;由于審查是自動(dòng)化的,所以可以重現(xiàn)。”
Apache HTTP服務(wù)器用戶(hù)社區(qū)經(jīng)常被邀請(qǐng)進(jìn)行這樣的審查,自動(dòng)掃描代碼,一旦發(fā)現(xiàn)了異常,就提醒相應(yīng)的項(xiàng)目組。發(fā)現(xiàn)的異常有可能是明確的安全漏洞,也可能不是明確的安全漏洞,但是應(yīng)予以關(guān)注,因?yàn)樗赡軙?huì)成為一個(gè)明確的安全漏洞。
Bill的觀點(diǎn)是,黑客針對(duì)二進(jìn)制代碼做這樣的事不是重大問(wèn)題,無(wú)論二進(jìn)制代碼是用閉源代碼編寫(xiě)的,還是用開(kāi)源代碼編寫(xiě)的。他表示,簡(jiǎn)而言之,壞人在繼續(xù)搗鼓閉源產(chǎn)品,正如他們?cè)谝酝瑯拥氖址〒v鼓開(kāi)源產(chǎn)品。
針對(duì)逆向工程和反編譯等方面的牢騷在安全領(lǐng)域其實(shí)算不得什么
他補(bǔ)充說(shuō):“針對(duì)逆向工程和反編譯等方面的牢騷在安全領(lǐng)域其實(shí)算不得什么;實(shí)際上,對(duì)研究安全人員來(lái)說(shuō)只會(huì)適得其反。安全研究人員在努力化解問(wèn)題。要是沒(méi)有源代碼,也就缺乏必要的透明度了,那樣他們無(wú)法搞清楚可以采取什么化解措施,一開(kāi)始就避免問(wèn)題,或者無(wú)法搞清楚他們已經(jīng)發(fā)現(xiàn)的漏洞有什么樣的實(shí)際影響。”
你可能會(huì)認(rèn)為,Bill為其中一個(gè)比較知名的開(kāi)源軟件項(xiàng)目工作了這么久,其立場(chǎng)肯定會(huì)偏袒一方。別犯想當(dāng)然的毛病,那樣很容易擯棄他的觀點(diǎn)。
他的觀點(diǎn)是,閉源軟件實(shí)際上妨礙了安全研究人員了解安全漏洞的范圍。Bill表示,如何找出安全漏洞在開(kāi)源與閉源之間區(qū)別不是很大。這往往就是這個(gè)過(guò)程:建立任意模式,然后看看會(huì)不會(huì)引起未預(yù)期的后果。
Apache在內(nèi)部如何處理安全問(wèn)題?
隨后我們稍稍改變了話(huà)題的方向,著重探討總體上的Apache基金會(huì)和具體上的HTTP項(xiàng)目在內(nèi)部如何處理安全問(wèn)題。
在Apache肩負(fù)處理安全問(wèn)題這個(gè)重任的是Apache軟件基金會(huì)安全小組(ASF Security Team),Bill是這個(gè)團(tuán)隊(duì)的成員之一。他表示,開(kāi)始,“我們還以為只會(huì)接到關(guān)于httpd的安全事件報(bào)告。但情況很快就發(fā)生了變化。”
安全團(tuán)隊(duì)的規(guī)模慢慢擴(kuò)大到了隨時(shí)都有5名活躍成員,臨時(shí)委員會(huì)有10名成員。Bill解釋?zhuān)骸拔覀儗?shí)際上扮演了調(diào)度員的角色。”
至少在外人看來(lái),這個(gè)過(guò)程似乎很簡(jiǎn)單:“團(tuán)隊(duì)確認(rèn)我們確實(shí)遇到了酷似安全事件報(bào)告的問(wèn)題,對(duì)不是安全事件報(bào)告的任何問(wèn)題進(jìn)行排查,然后將排查結(jié)果交給相應(yīng)的人員或部門(mén)。”
“如果我們接到公眾反饋上來(lái)的零日安全漏洞,或者實(shí)際的重現(xiàn)情形--通過(guò)另一家機(jī)構(gòu)悄悄傳遞給我們,我們隨后會(huì)轉(zhuǎn)交給某個(gè)相應(yīng)的Apache項(xiàng)目;我們成為了這個(gè)項(xiàng)目的資源中心,幫助他們了解你與報(bào)告這個(gè)事件的那一方如何互動(dòng)。”
然后,視項(xiàng)目會(huì)不會(huì)重現(xiàn)報(bào)告的安全漏洞而定,安全團(tuán)隊(duì)幫助項(xiàng)目應(yīng)對(duì)安全研究人員(通常是報(bào)告安全漏洞的那個(gè)人或那家組織)。Bill解釋?zhuān)骸拔覀儗?duì)他們說(shuō),嘿,在我的下一個(gè)版本中,我們會(huì)拿出修復(fù)程序,你在那個(gè)時(shí)間點(diǎn)之前別用這個(gè)版本,這是我們的時(shí)間表。”
我們并沒(méi)有試圖有意隱藏我們的代碼執(zhí)行什么樣的功能
“我們并沒(méi)有試圖有意隱藏我們的代碼執(zhí)行什么樣的功能,而我們能做的就是修補(bǔ)漏洞,我們只是說(shuō)自己在修復(fù)軟件缺陷,而不是把任何注意力引向這個(gè)事實(shí):舊代碼中存在安全問(wèn)題,安全問(wèn)題是這個(gè)樣子。”
據(jù)Bill聲稱(chēng),有些人在密切關(guān)注重大開(kāi)源項(xiàng)目(如Linux內(nèi)核、httpd及其他項(xiàng)目)提交的代碼,一心尋找在不遠(yuǎn)的將來(lái)可能堵上的漏洞。Bill解釋?zhuān)骸叭绻麄兡苷业轿覀冋Χ律系穆┒矗麄兿胝业綑C(jī)會(huì)窗口,以便可以鉆這個(gè)安全漏洞的空子。”
“所以我們扮演的是資源中心,盡量化解困惑、化解每一個(gè)項(xiàng)目的壓力--我們?cè)谌魏螘r(shí)間有100個(gè)左右的項(xiàng)目,每個(gè)項(xiàng)目都在處理各自的安全問(wèn)題,無(wú)論是在排查安全問(wèn)題,還是迅速處理安全問(wèn)題。”
我們還應(yīng)補(bǔ)充一下,安全團(tuán)隊(duì)在努力幫助確認(rèn)看起來(lái)像特定問(wèn)題域問(wèn)題的某些問(wèn)題,比如最近的散列安全漏洞(http://arstechnica.com/business/news/2011/12/huge-portions-of-web-vulnerable-to-hashing-denial-of-service-attack.ars)。隨后,安全團(tuán)隊(duì)會(huì)查看其他Apache項(xiàng)目可能會(huì)受到什么影響,團(tuán)隊(duì)可以在多大程度上與別人共享有關(guān)的安全報(bào)告,即便受直接影響最大的那個(gè)項(xiàng)目正在處理當(dāng)前的安全漏洞。
個(gè)人能選擇感興趣的事來(lái)做
無(wú)論從哪個(gè)標(biāo)準(zhǔn)來(lái)看,Apache HTTP都是一個(gè)成熟的軟件項(xiàng)目,在問(wèn)世近17年后,最近迎來(lái)了版本2.4.我們請(qǐng)Bill回顧一下他在Apache基金會(huì)和HTTP項(xiàng)目時(shí)候的情況,現(xiàn)在安全方面是不是在占用更多的時(shí)間。
項(xiàng)目越成熟,你在表面上的變化方面談?wù)摰迷蕉唷?
他簡(jiǎn)短有力的回答是:“當(dāng)然就歷史久遠(yuǎn)的項(xiàng)目而言,就我個(gè)人而言,答案是肯定的。項(xiàng)目越成熟,你在表面上的變化方面談?wù)摰迷蕉啵l(fā)布新的特性方面談?wù)摰迷缴伲瑫?huì)更加偏向于維護(hù)狀態(tài),這里來(lái)些優(yōu)化,那里有些安全問(wèn)題。”
“而Apache上下的每個(gè)人都可以選擇感興趣的事來(lái)做;我是指,所有的代碼開(kāi)發(fā)者、所有的代碼捐獻(xiàn)者都被鼓勵(lì)致力于項(xiàng)目中對(duì)他們個(gè)人來(lái)說(shuō)最有興趣的那些方面。在一些情況下,那是付錢(qián)請(qǐng)他們做的工作;在另一些情況下,那也是對(duì)他們的雇主或下游客戶(hù)來(lái)說(shuō)最感興趣的工作。”
Bill表示,這意味著,在HTTP項(xiàng)目或其他任何項(xiàng)目從事安全方面工作的人往往是傾向于對(duì)安全、漏洞和維護(hù)有著濃厚興趣的那些人。他解釋?zhuān)骸八麄冎幌腴_(kāi)發(fā)出那些修復(fù)程序,然后發(fā)布給公眾。”
“我們通過(guò)關(guān)注調(diào)查來(lái)了解整體情況。”
眼看我們的采訪(fǎng)就要結(jié)束,與Bill的討論再次將方向轉(zhuǎn)向Apache主導(dǎo)Web服務(wù)器軟件市場(chǎng)的現(xiàn)實(shí)。據(jù)NetCraft最近的服務(wù)器調(diào)查顯示(http://news.netcraft.com/archives/2012/03/05/march-2012-web-server-survey.html),運(yùn)行Apache HTTP的網(wǎng)站占總量的65%以上。
我們問(wèn)Bill是不是平時(shí)在看諸如此類(lèi)的調(diào)查和統(tǒng)計(jì)數(shù)字。
Bill笑著說(shuō):“作為一家基金會(huì),不去看。但是我們確實(shí)有一些具體的公眾人員,他們對(duì)名聲和營(yíng)銷(xiāo)很關(guān)注。當(dāng)然,我們醉心于確保Apache和Apache基金會(huì)有好的名聲,維持好的名聲,為此我們致力于開(kāi)發(fā)優(yōu)秀代碼。但是只有知道我們?cè)陂_(kāi)發(fā)優(yōu)秀代碼的人才關(guān)心這個(gè)。”
當(dāng)然,我們醉心于確保Apache和Apache基金會(huì)有好的名聲,維持好的名聲,為此我們致力于開(kāi)發(fā)優(yōu)秀代碼。
在這個(gè)龐大的現(xiàn)有用戶(hù)群中,版本2的Apache HTTP占了92.2%。更具體地說(shuō),今年2月底的一項(xiàng)調(diào)查顯示(https://blogs.apache.org/httpd/entry/apache_http_server_usage_survey),最常見(jiàn)的Apache HTTP版本是2.2,占了89.2%。
Bill更感興趣的是這些數(shù)字,而不是市場(chǎng)份額占多少百分比。他表示,他主要關(guān)注升級(jí)周期和升級(jí)方面的滯后:“我關(guān)注2月的那項(xiàng)調(diào)查;我可以看到,2.2.3仍得到廣泛采用;這個(gè)版本的代碼至今已有五個(gè)年頭了,”他說(shuō)。
Bill解釋?zhuān)骸拔覀冊(cè)陉P(guān)注紅帽或其他核心操作系統(tǒng)發(fā)行版,它們推出了重大版本,人們?cè)诎惭b它,其實(shí)不想更改。而從安全的角度來(lái)看,那些2.2.3版本不是特別容易受到攻擊,因?yàn)樗鼈円呀?jīng)打上了一系列增量補(bǔ)丁。”
Bill在接下來(lái)的一兩個(gè)月會(huì)關(guān)注升級(jí)和降級(jí)模式。他會(huì)研究人們?cè)谌绾尾捎冒姹?.4,然后研究那些升級(jí)的人當(dāng)中有多少比例在一段時(shí)間后會(huì)回到之前的版本。
關(guān)鍵字:服務(wù)器、安全、升級(jí)、網(wǎng)站
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶(hù)
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶(hù)的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解