海量服務(wù)器跨平臺(tái)系統(tǒng)補(bǔ)丁自動(dòng)化部署方案_第1頁
海量服務(wù)器跨平臺(tái)系統(tǒng)補(bǔ)丁自動(dòng)化部署方案_第2頁
海量服務(wù)器跨平臺(tái)系統(tǒng)補(bǔ)丁自動(dòng)化部署方案_第3頁
海量服務(wù)器跨平臺(tái)系統(tǒng)補(bǔ)丁自動(dòng)化部署方案_第4頁
海量服務(wù)器跨平臺(tái)系統(tǒng)補(bǔ)丁自動(dòng)化部署方案_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 海量服務(wù)器跨平臺(tái)系統(tǒng)補(bǔ)丁自動(dòng)化部署方案eBay成立至今已經(jīng)有20年了,在中國(guó)互聯(lián)網(wǎng)里面有20年的公司并不多,我在eBay有11年。最開始eBay是全windows服務(wù)器做前端,靜態(tài)內(nèi)容是IIS。eBay上曾經(jīng)賣過最貴的一個(gè)產(chǎn)品是1.68億美金的游艇。2016年eBay的業(yè)務(wù)成交量是850億美金。我們內(nèi)部的要求的ATB是99.947%,我們會(huì)做每周一次的數(shù)據(jù)庫的升級(jí)和遷移,這些凡是對(duì)用戶有影響的我們都算進(jìn)去,不管是我們的原因還是外部的原因。我們作為電子商務(wù)平臺(tái),我們做的跟支付有關(guān)系,如果Paypal不能來收錢了,它的影響對(duì)我來講是我的用戶到我的平臺(tái)上買東西不能產(chǎn)生交易,平臺(tái)掛了算我的,我的AT

2、B受影響。對(duì)用戶來講是這樣,對(duì)我們來講看起來就有點(diǎn)不公平,你的下游產(chǎn)品發(fā)生了問題,你不能成交,這個(gè)ATB的影響要我們來背,平時(shí)不可見的因素非常多,導(dǎo)致我們平時(shí)要非常小心。但是我們又是做互聯(lián)網(wǎng)的,比如說1.68億的成交金額,你不想你的服務(wù)器因?yàn)槁┒幢蝗撕诹耍@筆錢轉(zhuǎn)到其他人的賬戶上,或者說有一天你的公司被黑客攻擊了,由于你的系統(tǒng)沒打補(bǔ)丁,你受到了什么影響,可能對(duì)大多數(shù)人來講,包括我們自己也是一樣,對(duì)自己的安全保護(hù)我們還是比較在意的。這是一些內(nèi)部情況的介紹。外部形勢(shì)從去年以來就比較嚴(yán)酷,包括去年出現(xiàn)的勒索病毒,整個(gè)安全形勢(shì)是非常嚴(yán)峻的,反映到我們每個(gè)工程師來講,我們的壓力就很大了,每次有漏洞出來都

3、得補(bǔ),eBay對(duì)于用戶的承諾是什么呢?我們要求我們的補(bǔ)丁周期,從發(fā)布到完全部署完要45天做完。eBay的業(yè)務(wù)是24小時(shí)不能停,經(jīng)過20年的發(fā)展,我們有windows和linux,系統(tǒng)是幾十萬臺(tái),應(yīng)用數(shù)量是數(shù)千個(gè),全球加起來前端應(yīng)用服務(wù)器運(yùn)維人員只有12個(gè)。12個(gè)人要維護(hù)windows加上Linux系統(tǒng),我們的windows系統(tǒng)是2萬臺(tái),Linux是十萬臺(tái),然后分屬到幾千個(gè)應(yīng)用程序集群里面,我們的PD不需要關(guān)心系統(tǒng)級(jí)別的漏洞,它跑的OS上面有漏洞,這個(gè)補(bǔ)丁我們來打。同時(shí)我們還要管理其它的事情,打補(bǔ)丁只是我們?nèi)粘9ぷ髦械囊徊糠?。問題分析那時(shí)候是2萬臺(tái)windows系統(tǒng),當(dāng)時(shí)領(lǐng)導(dǎo)告訴我,下個(gè)星期開始

4、補(bǔ)丁你來打,我當(dāng)時(shí)就開始考慮該怎么辦,業(yè)務(wù)還要不停的運(yùn)行,機(jī)器還在不斷增加,但是人手卻不會(huì)增加。我們后來經(jīng)歷了大概幾個(gè)歷程。簡(jiǎn)單來說是三個(gè)歷程:支持單一OS,腳本化運(yùn)行,重復(fù)勞動(dòng)多支持單一OS,將流程自動(dòng)化,降低重復(fù)勞動(dòng)支持多種OS,可視化操作,平臺(tái)化管理可能在很多情況下,跟很多互聯(lián)網(wǎng)企業(yè)很類似,可能一開始只有windows系統(tǒng),當(dāng)時(shí)OS是單一的,用了windows活動(dòng)目錄,沒錢買它更好的服務(wù),windows有一個(gè)免費(fèi)產(chǎn)品叫WSUS,來提供在企業(yè)環(huán)境下的對(duì)微軟產(chǎn)品的不定管理。但是使用WSUS和活動(dòng)目錄來進(jìn)行對(duì)接作為實(shí)施方案,其實(shí)會(huì)有些局限,不能完全滿足互聯(lián)網(wǎng)電子商務(wù)的需要。它可以選擇策略,但策

5、略只有三種:要么是只下載,另外是下載了定時(shí)安裝,還有一個(gè)是下載了自動(dòng)安裝。如果下載了自動(dòng)安裝,它需要重啟,這就會(huì)出現(xiàn)一個(gè)問題,兩萬臺(tái)機(jī)器在那時(shí)候下了補(bǔ)丁自己裝,裝了之后重啟了,那時(shí)候監(jiān)控中心的人就慌了,因?yàn)闆]有人發(fā)一個(gè)工單。在我們那里任何機(jī)器重啟都要發(fā)工單,但是發(fā)現(xiàn)全站2萬臺(tái)機(jī)器全部重啟了,卻沒有人發(fā)工單。這時(shí)候我們就要開始把所有的跟運(yùn)維相關(guān)的人叫起來,問他是為什么,我們說在打補(bǔ)丁,他們說下次不要這樣干,因?yàn)槟氵@樣干了,首先我不知道我們什么時(shí)候打的,另外重啟是不可控的,有些服務(wù)是不能隨便重啟的,它有特定的維護(hù)時(shí)間。所以怎么辦呢?我們選擇用一個(gè)腳本讓那臺(tái)機(jī)器把每個(gè)月的腳本下下來,然后我們?cè)侔阉鼫y(cè)

6、好。首先,我們要做的第一個(gè)是兼容性測(cè)試,很多時(shí)候我們不希望說打一個(gè)補(bǔ)丁之后windows掛了,藍(lán)屏重裝,雖然當(dāng)時(shí)我們有一些黑科技,重裝一臺(tái)windows也只有15分鐘,但是這個(gè)量太大,恢復(fù)起來很難,所以我們就把機(jī)器所有的補(bǔ)丁下載下來,選擇用腳本。我每次都選一個(gè)機(jī)器列表,然后發(fā)個(gè)工單讓SEC的人把它重啟。在那時(shí)候機(jī)器的變化還是會(huì)有的,你不斷會(huì)有新機(jī)器加入到線上,不斷有舊機(jī)器下來,你不管做什么,因?yàn)楣庥羞@個(gè)腳本,有機(jī)器列表,腳本是死的,機(jī)器列表是變的,每個(gè)月還得把那個(gè)機(jī)器列表維護(hù)一遍,這也是挺麻煩的一件事情。后面我會(huì)講到怎么解決這個(gè)問題,我們先把這個(gè)問題放在這里,引發(fā)一下大家的思考。我們從單一OS

7、的腳本運(yùn)行,變成了自動(dòng)化流程運(yùn)行,再然后,我們實(shí)現(xiàn)的補(bǔ)丁的自動(dòng)化灰度發(fā)布。到最后我們希望變成一個(gè)可視化的、平臺(tái)化的操作,我讓做Hadoop運(yùn)維的同學(xué)負(fù)責(zé)Hadoop的事情,并且我開放一個(gè)接口讓其他運(yùn)維組的同事可以把你的邏輯放進(jìn)來。你需要測(cè)試我?guī)湍銣y(cè)試,但是你的業(yè)務(wù)邏輯在你那邊,我把這個(gè)業(yè)務(wù)邏輯放給你來維護(hù)。打補(bǔ)丁有幾個(gè)問題,第一,你怎么知道漏洞在哪里,第二,你怎么發(fā)現(xiàn)這個(gè)漏洞,這個(gè)漏洞對(duì)于應(yīng)用有什么影響。當(dāng)我有一個(gè)漏洞被發(fā)現(xiàn)的時(shí)候,我怎么從應(yīng)用的角度來看影響是什么。然后補(bǔ)丁怎么部署,我們才能實(shí)現(xiàn)跨平臺(tái),還有一個(gè)問題是打補(bǔ)丁怎么才能保證安全。大多數(shù)同學(xué)可能是通過看官方公告或者微軟的公告等等,發(fā)現(xiàn)

8、漏洞,再去給系統(tǒng)打補(bǔ)丁的,其實(shí)還是有其他的可能性的。首先一個(gè)是主動(dòng)掃描,每次定期對(duì)你做健康檢查,就像我們自己做體檢一樣,這里可以選擇商業(yè)產(chǎn)品或者是開源的產(chǎn)品,我們覺得相對(duì)來講還不錯(cuò)的,一個(gè)是Qualys,它會(huì)提供主動(dòng)的基于漏洞庫的掃描,幫你發(fā)現(xiàn)從應(yīng)用角度和主機(jī)端的角度來看一些漏洞是什么,并且它還有一個(gè)好處是幫你做漏洞的分級(jí)??梢越栌靡恍┈F(xiàn)有的漏洞,有些時(shí)候你出過漏洞,你不知道那個(gè)漏洞的危險(xiǎn)程度是高還是低,就像前面說英特爾CPU有一個(gè)漏洞,我聽到這個(gè)事一臉懵逼,可能有很多人也是這樣,它的含義是什么我們并不知道,它有可能告訴你是什么原因,我們會(huì)借用別人的一些知識(shí)來補(bǔ)全我們自己。然后是有廠商通告,包

9、括有windows等等的官方通道。除此之外還有一個(gè),就是業(yè)界通告。在美國(guó)有一個(gè)比較流行的叫CVE的,當(dāng)我們發(fā)現(xiàn)任何漏洞掃描出來之后,它會(huì)附上兩個(gè)信息,一個(gè)是官方有沒有補(bǔ)丁,第二個(gè)是CVE,CVE會(huì)告訴你,你的漏洞可能的評(píng)級(jí)是多少分,它已經(jīng)做了評(píng)級(jí),也把相應(yīng)的可能的危險(xiǎn)程度以及補(bǔ)丁的方式告訴你了。用戶會(huì)上傳他們發(fā)現(xiàn)的漏洞情況,并記錄在它這里面,然后通告出來。其實(shí)是業(yè)界也是在根據(jù)CVE的發(fā)現(xiàn)再去找。既然CVE和商業(yè)掃描的軟件有很大的共同點(diǎn),為什么你有了開源的還不用公共安全信息,為什么還要用商業(yè)的產(chǎn)品呢?其實(shí)有一點(diǎn)就是從效率考慮,以及從專業(yè)知識(shí)考慮,有時(shí)候給了CVE,它的信息量太大,你沒辦法一個(gè)個(gè)比

10、較。如果20萬的機(jī)器分布到若干個(gè)應(yīng)用集群里面,還有不同的版本,更麻煩的是軟件包的版本都不一樣,在平常我們做運(yùn)維的人發(fā)現(xiàn)這是很正常的現(xiàn)象,這種情況我們叫軟件包的版本漂移,我們?cè)谘a(bǔ)丁過程中也要盡量避免這種軟件包的版本的漂移。在eBay內(nèi)部做的事情是這樣的,我們用掃描軟件把所有基于IP網(wǎng)段的掃一遍,保證是全覆蓋,然后加上CMS的系統(tǒng),這是一套配置管理系統(tǒng),類似于平時(shí)大家理解的CMDB,基于這兩部分再看這樣的漏洞會(huì)映射到哪些應(yīng)用程序上有問題,方便我們接下來做一個(gè)評(píng)估和分級(jí)。不是所有的漏洞都需要通過打補(bǔ)丁解決,有些漏洞可能你會(huì)放一放,或者說你采用其它的方式把它直接停掉,評(píng)級(jí)完了之后你會(huì)發(fā)現(xiàn)如果是0day

11、的漏洞肯定要立刻打了,對(duì)于安全風(fēng)險(xiǎn)不高的漏洞補(bǔ)丁還有喘口氣的機(jī)會(huì),如果是0day我就需要找美國(guó)的同事一起,盡快把它解決。這時(shí)候就決定了你的漏洞修補(bǔ)策略,到底是你要把漏洞干掉,或者是有漏洞的包的服務(wù)停掉還是怎么樣。策略定好之后,如果是系統(tǒng)級(jí)別的,運(yùn)維團(tuán)隊(duì)全權(quán)負(fù)責(zé),但如果說很多跟應(yīng)用緊密相關(guān)的,你得通知相應(yīng)的開發(fā)團(tuán)隊(duì),跟他說你的應(yīng)用需要打補(bǔ)丁,做你的應(yīng)用補(bǔ)丁的時(shí)候,全部把它修理掉,或者把它放到應(yīng)用程序的部署里面去處理掉,這是我們對(duì)漏洞評(píng)估的一個(gè)過程。讓跨平臺(tái)可以在一個(gè)系統(tǒng)下面完成我們的補(bǔ)丁任務(wù),其實(shí)有兩個(gè)點(diǎn):首先在線上系統(tǒng)上面有Redhat、ubuntu,還有windows。windows還有好多

12、個(gè)版本的,好在他們可以用同一個(gè)更新源,這源基本上一個(gè)月更新一次。所以大家會(huì)注意到有一個(gè)差別,Linux有兩個(gè)更新包,windows只有一個(gè),相對(duì)來說比較穩(wěn)定,Linux隨時(shí)會(huì)更新。我需要定期從外部把所有的軟件包拉進(jìn)來,我們?cè)趗buntu上面,不是所有的機(jī)器都能訪問到互聯(lián)網(wǎng)的,我們做反向代理,流量可以從互聯(lián)網(wǎng)進(jìn)入到eBay內(nèi)部,然后到負(fù)載均衡,負(fù)載均衡到后面的Server,然后再出去還給用戶,所以它是一個(gè)反向代理的模式。ubuntu不用跟互聯(lián)網(wǎng)接觸,這樣也可以降低我們被攻擊的可能性。所以在這里面我們需要設(shè)置兩類Repo,包括線上的機(jī)器能得到最新的軟件包。每日更新的軟件包會(huì)時(shí)刻不斷地跟外部保持同步

13、,之后會(huì)自動(dòng)觸發(fā)在內(nèi)部的CICD的過程,然后做部署、做測(cè)試?,F(xiàn)在在軟件包開始的時(shí)候有這些部署,有這些部署之后我就可以把生產(chǎn)上現(xiàn)在已經(jīng)有的包拉出來去測(cè),測(cè)完之后沒有問題,再發(fā)布出來。還有一點(diǎn),你打了線上的補(bǔ)丁,你的Repo沒更新,出來的東西還是有漏洞的,所以它一起把Repo更新掉,保證新生產(chǎn)出來的機(jī)器已經(jīng)具有了這個(gè)漏洞,從技術(shù)架構(gòu)上我們就是這樣做的。有了上面的準(zhǔn)備工作,后面將會(huì)更進(jìn)一步談到的是補(bǔ)丁部署的時(shí)候怎么保證安全,有了技術(shù)架構(gòu),我也可以讓它出補(bǔ)丁了,我也可以做我的測(cè)試了,我們的開發(fā)團(tuán)隊(duì)也可以知道這些補(bǔ)丁什么時(shí)候部署了。在補(bǔ)丁部署上呢,我們的運(yùn)維團(tuán)隊(duì)是直接部署的,首先是做補(bǔ)丁測(cè)試,還有異常防

14、護(hù),很多時(shí)候其實(shí)對(duì)于運(yùn)維和開發(fā)最大的差別是說,運(yùn)維要擔(dān)負(fù)的責(zé)任是要預(yù)防那些還沒有預(yù)見到或者說已經(jīng)可能預(yù)見到,但是還不知道什么時(shí)候發(fā)生的問題,所以我們會(huì)做異常防護(hù),補(bǔ)丁之前我們會(huì)排查軟件包的列表。我們會(huì)基于某些應(yīng)用有一個(gè)黑名單,它的應(yīng)用列表是不打的,或者我們會(huì)看對(duì)于像PHP這種可能會(huì)影響到應(yīng)用的,我們把它加到黑名單里面,系統(tǒng)補(bǔ)丁、安全補(bǔ)丁不打。接下來就是重要的抽樣測(cè)試,在灰度測(cè)試?yán)锩鏁?huì)談到金絲雀測(cè)試,就是抽樣測(cè)試,我們把它放到生產(chǎn)環(huán)境里面,每個(gè)案例庫找一臺(tái)去跑,并且找同樣的OS,然后再做灰度發(fā)布,灰度發(fā)布可以分為三階段、五階段,或者說你可以隨便定義。如果實(shí)在你的運(yùn)氣不好,你還有機(jī)會(huì)回滾,而不至于

15、讓你的業(yè)務(wù)受到很大的影響。接下來我們看看在結(jié)果測(cè)試?yán)锩鏁?huì)碰到的問題。比如說假陽性和假陰性。什么叫假陽性?外部掃描軟件掃出來說你這里有個(gè)windows漏洞,結(jié)果你再一看,這是一臺(tái)Linux設(shè)備,在你的配置數(shù)據(jù)庫里面有zheyangde 數(shù)據(jù)存在,這個(gè)世界對(duì)我們來講并不是那么美好的,我們要對(duì)這個(gè)世界有了解,這個(gè)世界不美好,我要知道它哪里不美好,這可能是會(huì)存在的問題,這是假陽性。假陰性就是,明明你打過補(bǔ)丁了,你看到?jīng)]問題了,你看到的版本號(hào)好像是跟你打好的,只不過有時(shí)候是自己看錯(cuò)了,掃描的時(shí)候會(huì)告訴你,你說的陰性還是有漏洞的,這是在我們現(xiàn)在測(cè)試階段會(huì)碰到的問題,就是說你如何去驗(yàn)證你在打完一個(gè)補(bǔ)丁的時(shí)候

16、真的是已經(jīng)補(bǔ)丁完成了,然后會(huì)測(cè)試系統(tǒng)會(huì)不會(huì)崩潰,軟件包依賴的關(guān)系、性能的變化,還有生效的依賴性關(guān)系。還有就是部署階段我們?cè)趺打?yàn)證。其實(shí)部署階段的坑更多,一個(gè)是補(bǔ)丁部署的覆蓋率,我們經(jīng)常說我們打完補(bǔ)丁之后,window系統(tǒng)是你把包下在那里通知它去裝,這靠的是agent,但是它可能會(huì)失效,你怎么發(fā)現(xiàn)它失效。還有就是當(dāng)你的包下下來之后,它其實(shí)并沒有準(zhǔn)備好,它那個(gè)時(shí)候還有大批量的機(jī)器會(huì)被生成出來,這是我們完全不知道的,所以你要看在這段時(shí)間到底有多少機(jī)器被生成出來。還有增量新系統(tǒng)的發(fā)現(xiàn),最后還要看這次結(jié)果里面有多少補(bǔ)丁要打,你的工作量是多少,這一點(diǎn)要跟你的老板去講,這是我的工作量,我這個(gè)月做了多少事情,

17、雖然我只有12個(gè)人,但是我做了這么多事情,要讓他知道結(jié)果是什么。同時(shí)你的老板還要向你的老板的老板去解釋。在結(jié)果測(cè)試除了以上兩個(gè)問題外還會(huì)其他的問題,比如說打補(bǔ)丁的時(shí)候其實(shí)會(huì)涉及到重啟,會(huì)涉及到OS宕掉。我們要有一個(gè)鎖機(jī)制,當(dāng)我去部署這個(gè)補(bǔ)丁的時(shí)候,與此同時(shí)你不要再減少它的容量,代碼部署可能會(huì)影響到它。另外是監(jiān)控,如果機(jī)器下線了,重啟了,監(jiān)控的人要知道為什么,他甚至想說,你打補(bǔ)丁是正常的變更,你不要讓我看到這么亂。還有是它的權(quán)限管理,我可以把壓力傳導(dǎo)到其它的部門,我們基于AD的管理或者LDAP的管理,你有你的權(quán)限,應(yīng)該是我提供工具給你用,出了問題是你的問題。系統(tǒng)架構(gòu)接下來我們可以看整體系統(tǒng)架構(gòu),

18、大概就是這樣一張圖,從發(fā)現(xiàn)到展示,你怎么展示你的圖,漏洞的數(shù)據(jù),驗(yàn)證你的軟件包,然后測(cè)試、計(jì)劃、部署,可能還有一部分,你不能被納入到自動(dòng)化,它是特殊應(yīng)用,它不能被納入到自動(dòng)化部署。比如說數(shù)據(jù)庫,我不敢納入進(jìn)來,打掛了我負(fù)不了這個(gè)責(zé)任。因?yàn)榭偣簿蛢膳_(tái)DB,我為什么要部署它?整個(gè)流程走完之后,你會(huì)看到這邊有一個(gè)數(shù)據(jù)展示,把你的結(jié)果告訴給老板,通常最后關(guān)心的不是運(yùn)維關(guān)心的數(shù)據(jù),最后你的老板可能會(huì)關(guān)心,他要對(duì)外部的公開媒介公布自己的健康狀況到底是怎樣的。在eBay內(nèi)部前端運(yùn)維是管理所有WEB服務(wù)器的,然后還有其他的團(tuán)隊(duì)負(fù)責(zé)其它的事情,我們根據(jù)LDAP或者AD讓他們管理好自己的部分。然后你是怎么部署的,你怎么連接,你的工單是什么,需不需要發(fā)變更,你要發(fā)命令或者發(fā)腳本下去,或者有防護(hù)的腳本,你的腳本在哪里,要告訴他,隨著你要把消息推送給誰,當(dāng)你打完這個(gè)工單之后,你很清晰的就知道你完成了多少,并且我告訴你當(dāng)前還有多少任務(wù)沒完成。最后有一個(gè)圖表顯示,我的工作是這些部分。還有一些是其它部門的同事要做的,這個(gè)是要由他們來做的。未來展望介紹完了現(xiàn)在的狀況,展望未來,還有很多可以想像的空間,一個(gè)是我們要做內(nèi)核熱補(bǔ)丁。我們前面講的都是系統(tǒng)級(jí)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論