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ì)、興致勃勃地采訪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的昵稱)拋出了人們通常所持的這個(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í)都可以隨隨便便查看的。
William A. Rowe Jr.,軟件基金會(huì)HTTP服務(wù)器項(xiàng)目前副總裁
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);這種情況下,它們不知道自己的源代碼在接受審查。”
他解釋,如今,針對(duì)軟件的安全審查在很大程度上實(shí)現(xiàn)了自動(dòng)化。Bill說(shuō):“誰(shuí)都可以進(jìn)行這樣的審查;由于審查是自動(dòng)化的,所以可以重現(xiàn)。”
Apache HTTP服務(wù)器用戶社區(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ù)期的后果。
#p# Apache在內(nèi)部如何處理安全問(wèn)題?
隨后我們稍稍改變了話題的方向,著重探討總體上的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解釋:“我們實(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解釋:“我們對(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聲稱,有些人在密切關(guān)注重大開(kāi)源項(xiàng)目(如Linux內(nèi)核、httpd及其他項(xiàng)目)提交的代碼,一心尋找在不遠(yuǎn)的將來(lái)可能堵上的漏洞。Bill解釋:“如果他們能找到我們正努力堵上的漏洞,他們想找到機(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)前的安全漏洞。
#p# 個(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ù)摰迷蕉唷?/strong>
他簡(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ì)他們的雇主或下游客戶來(lái)說(shuō)最感興趣的工作。”
Bill表示,這意味著,在HTTP項(xiàng)目或其他任何項(xiàng)目從事安全方面工作的人往往是傾向于對(duì)安全、漏洞和維護(hù)有著濃厚興趣的那些人。他解釋:“他們只想開(kāi)發(fā)出那些修復(fù)程序,然后發(fā)布給公眾。”
“我們通過(guò)關(guān)注調(diào)查來(lái)了解整體情況。”
眼看我們的采訪就要結(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í)在看諸如此類的調(diào)查和統(tǒng)計(jì)數(shù)字。
Bill笑著說(shuō):“作為一家基金會(huì),不去看。但是我們確實(shí)有一些具體的公眾人員,他們對(duì)名聲和營(yíng)銷很關(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)有用戶群中,版本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解釋:“我們?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ì)回到之前的版本。
他解釋:“我在這方面研究了好多年,這有助于我了解人們的期望。所以,他們期望新版本能夠與他們想象的那樣順暢運(yùn)行。”
所以,盡管Bill未必關(guān)注調(diào)查,看看Apache是不是仍是龍頭老大,但他也關(guān)注調(diào)查,了解用戶在版本采用方面處于怎樣的情況。他說(shuō):“我們直接從用戶那里得到許多那樣的反饋,但是那些只是孤立的情況。我們通過(guò)關(guān)注調(diào)查來(lái)了解整體情況。”
“我們看到別人曇花一現(xiàn)。”
最后,與Bill討論的話題轉(zhuǎn)到了直接面對(duì)Apache HTTP的競(jìng)爭(zhēng)對(duì)手。
盡管Apache牢牢把持著Web服務(wù)器軟件市場(chǎng)領(lǐng)頭羊的地位,但這不是說(shuō)競(jìng)爭(zhēng)對(duì)手在坐以待斃。比如說(shuō),NGINX離取代微軟IIS成為應(yīng)用第二廣泛的Web服務(wù)器軟件指日可待。
Bill解釋:“我其實(shí)不擔(dān)心Apache在這方面的百分比,也不關(guān)心自己的百分比這個(gè)月比上個(gè)月是否增加了一點(diǎn)。”
我們看到Sun Solaris Web服務(wù)器曇花一現(xiàn);我們看到網(wǎng)景(Netscape)以及其他眾多競(jìng)爭(zhēng)對(duì)手曇花一現(xiàn)。
他補(bǔ)充說(shuō):“我們看到其他對(duì)手只是個(gè)過(guò)客,而這證明了開(kāi)源到底具有什么樣的魅力。我們看到Sun Solaris Web服務(wù)器曇花一現(xiàn);我們看到網(wǎng)景以及其他眾多競(jìng)爭(zhēng)對(duì)手曇花一現(xiàn)。”
Bill的觀點(diǎn)是,Web服務(wù)器領(lǐng)域總是會(huì)出現(xiàn)新的玩家。他甚至希望是這樣,因?yàn)檫@促進(jìn)了競(jìng)爭(zhēng),新的項(xiàng)目在嘗試新的技術(shù),而沒(méi)有現(xiàn)有項(xiàng)目面臨的種種制約。
至于NGINX方面,Bill補(bǔ)充說(shuō),看到NGINX變得大行其道,自己很激動(dòng):“所以,NGINX進(jìn)來(lái),展示了新的活力,說(shuō)‘我們不會(huì)成為所有Web服務(wù)器中最靈活的,而是會(huì)關(guān)注特定的問(wèn)題。’我預(yù)計(jì)他們會(huì)做得相當(dāng)好。”
Bill最后說(shuō):“我很高興,我十年來(lái)參與的這個(gè)項(xiàng)目仍在Web服務(wù)器領(lǐng)域擁有支配地位。而我主要關(guān)心的是,我參與的這個(gè)項(xiàng)目是不是可以滿足一大批人的要求。”
Apache HTTP Web服務(wù)器強(qiáng)者愈強(qiáng)
很顯然,Apache HTTP服務(wù)器是Web服務(wù)器領(lǐng)域的領(lǐng)頭羊,盡管它再過(guò)幾年即將迎來(lái)20周年。Apache在調(diào)查(如NetCraft的調(diào)查)中占有絕對(duì)的市場(chǎng)份額不僅清楚地表明了這一點(diǎn),它在開(kāi)發(fā)人員及從事互聯(lián)網(wǎng)及網(wǎng)絡(luò)行業(yè)的其他人中擁有絕對(duì)的心靈占有率也清楚地表明這一點(diǎn)。
很感謝Bill Rowe如此大方地抽時(shí)間接受我們的采訪,希望他及Apache團(tuán)隊(duì)的其余成員在將來(lái)有好運(yùn)。由于全世界數(shù)以百萬(wàn)計(jì)的網(wǎng)站依賴這些人開(kāi)發(fā)和維護(hù)的軟件,我們知道,許多人會(huì)與我們一樣對(duì)Apache的每個(gè)人說(shuō)“繼續(xù)好好干”。
原文鏈接: http://royal.pingdom.com/2012/03/26/how-apache-http-web-server-secure-interview/