1. 程式人生 > >我在攜程的這十年:一個老運維的成長往事

我在攜程的這十年:一個老運維的成長往事

作者簡介

雷兵

攜程網 安全中心資訊保安專家

2007年1月加入攜程,曾任安全經理、高階經理、網路安全總監,負責攜程技術安全體系建設,曾主持網路安全架構設計、內外網滲透測試安全評估、建立應用安全團隊、部署程式碼白盒掃描系統、Web 應用防火牆等。

現任網站運營中心網路安全部總監,近年來帶領團隊向網際網路運維團隊轉型,結合開源工具開發了一批適合公司實際環境的網路安全工具和系統。

前言

本文裡分享的不會有太多包括頂尖的技術,高深的理論複雜的流程,只想跟大家分享一下一個運維人的故事。首先講的我是怎麼做運維的。

歷史故事

左上這張照片拍攝於20幾年前,這是我的照片。後面是當時我在運維的裝置,一臺 IBM 的 RS/6000 工作站,照片上角兩個 logo,一個是同濟大學,一個是同濟大學海洋學院。當時研究生畢業,跟老師做科研專案,維護一些地震的資料處理系統,主要是做能源勘探一些科學計算的東西。

現在很多地方談到技術棧,圖中左下是那時用到的一些系統和程式語言,如圖:硬體和作業系統方面,有 IBM RS/6000,Sun 工作站,SGI Origin2100 等,作業系統用到各種 Unix:AIX,Sunos/Solaris/IRIX,以及 Linux,Freebsd,以及一些開源地球物理資料處理系統,比如 Seismic Unix,Freeusp,也會用到 Fortran 和 C 語言做程式開發,Fortran 主要用於科學計算,C 做一些資料格式轉換,磁帶機控制等。使用 pvm,mpi 這樣的訊息傳遞平臺做高效能運算。

那時上海熱線開通免費撥號上網後來1997年大學校園網建成,接觸到更廣泛的IT技術圈,經常去高校 BBS 和 Pchome IRC,曾當過一年多交大飲水思源 BBS 的 Unix 版主,參與過上海 Linux user group 的早期活動。

線上線下認識不少朋友,有精通網路,Linux/Unix 的, 也有精通安全的,和他們的認識,極大開闊了自己的視野,朋友推薦了些學習安全的東西,圖中間的書作為代表,我從中接觸到了更多安全的知識,很感興趣。當時的網路安全意識或概念是非常薄弱的,大家主要還是以用為主。

工作做的事跟團隊做的主流差別比較大的時候,會發現跟自己平時一起工作的人共同語言越來越少,而跟其他的人更有共同語言。那個時候,一位兼職教授給我寫了一幅字,右邊的圖,這幅字就讓我有了從事運維的決心,從同濟大學離開投入一個我感興趣的行業。

1、初進攜程

在2007年初,通過朋友的引薦我加入了攜程旅行網,我去之前不知道它是一個什麼樣的公司,去了以後才知道這是個2003年就在納斯達克上市的公司。從此開始了真正的大企業運維崗位。

感謝當時的領導能接納了“半路出家”的我。當時伺服器已經有一千多臺了,我就覺得來對地方了,至少是規模比較大,運維也有了幾十人的隊伍,一看都是很年輕有朝氣的。

攜程從07年做到現在基本上十年的時間,我就是一直做安全運維,後面就跟大家分享一下這個運維經歷一些什麼。我自己的一些體會。今天的攜程是目前全球市值第二的旅行服務公司 OTA,也是中國最大的旅行服務公司。員工有三萬多人,有17個分支機構,全世界各地。

2、傳統運維下的攜程

我到攜程開始做的就是傳統運維。什麼是傳統運維,什麼是網際網路運維,我這裡只談一下當時的攜程,這兩個圖是2010年和2011年我們當時在技術運營部做的專案時間週期表。

傳統運維

從淺色到深色,小於三個月最淺,然後是三到六個月,六到12個月。在2010年少於三個月專案只有12%,其他都是三個月以上,甚至是大於一年有26%,這是做的34個專案。

2010年少於三個月的專案已經沒有了,做一個專案是三到六個月,六到12個月,大於一年的,6到12個月大概就是接近12個月。從專案週期來看當時的情況是這樣的。

安全做的一些專案,比如說 DMZ 專案,資料庫的安全專案,分公司安全專案,這些專案週期都是大於一年的。WAF 專案,是6到12個月,專案內容也比較清晰,就是評估 WAF 測試一下,然後採購部署,非常傳統的一個流程,不涉及自己二次開發。當時看的最多的 Gartner 的報告。

剛才提到的採購部署專案,這些裝置上線以後,經常會涉及到各個系統比如說某品牌的防火牆,需要寫架構、配置、運維、排障四個文件,需要自己整理廠商文件去寫,整個工作節奏和變化都比較慢。

之前聽到某個演講裡談到當前的很多系統,當文件寫出來這個系統就會面臨失效。剛去攜程的時候,有四臺防火牆,一個 VPN 還有一個日誌記錄的裝置。

3、我們的團隊

圖片是我團隊的照片,09年,11年,12年。這裡面可能有熟悉的身影,到時候會跟大家說一下這些人後來都在哪做什麼。當時比較難的事情,有資料庫的安全,還有建設 DMZ 也比較難。

  • 遇到最大的問題就是對未來的預估不準
    當時我們採購裝置,領導要求評估買個裝置能用三四年,不能今年買明年就要換。就按攜程的業務增長量來估,當時增長是每年40%增長,那我們認為防火牆指標也是40%或50%增長。然後按這個原則採購的防火牆上線,只過了一年多各項指標就快超過標稱了,這是在公司快速的發展過程中會遇到的。我們需要趕緊再換一個裝置,很多時間就耗費這上面了。
  • 還有難點一個就是推進應用安全
    我們開始是從網路安全做起來的,後來推應用安全,開發流程里加相關的工序做程式碼檢驗,運維和開發是兩個不同的部門,推進的也是比較難的。通過克服各種困難,團隊和自身都有了很大成長和進步。大約在2012年底之前都是在傳統的階段,團隊的人員也從我剛剛去2007年的三個人,發展到2012年11位。2012年之前,很多網際網路的公司認為攜程是一個傳統企業,傳統在什麼地方?攜程就是做呼叫中心的,當時呼叫中心佔據的票務量是比重比較大的。到2012年以後,發生了很大的變化,引入了很多新技術,遇到很多的挑戰,2013年以後到現在我們一個專案的週期基本上就是在一兩個月專案完成,遇到挑戰更大,比如資料中心也擴建了好幾個,吞吐量更大,頻寬也是從1個G到幾十個G。
  • 再一個就是要快速響應
    周邊團隊都在做自動化。以前伺服器上線交付週期是一到兩個星期,領導要求這個時間要放在兩小時之內,經過努力這個兩個小時目標做到了,我們的網路安全團隊裡面也提供了一些必要的支援,後面會介紹到。所有的運維都要自動化,網路安全也要跟上自動化的腳步。這個時候我們的裝置,僅防火牆就有一百多臺,剛去的時候是四臺,這個是規模上的改變,當然裝置種類也多了很多,就不例舉了。

    自動封IP

    在這種自動化形勢下,我們做的第一個轉變事情就是封IP。當發現異常的情況,比如安全裝置報警,應用的報警,其他各種各樣的情況,需要封IP。

    我們之前由防火牆工程師處理,封IP需要變更,流程就是變更申請,審批,然後封,前提是必須工程師還要在場。

    很多情況下從封IP的需求到實際把這個IP封了,要花很長時間。而且封的IP可能會比較多,要變更封十幾次,而且封的這個量也很大。動不動可能就是幾十個上百個這樣的情況。我們面臨的實際需求就是要自動封IP。

    我們安全工程師都是從安全公司招來的,大部分是做安全裝置運維的。按照傳統觀念你要找一個合適的裝置,由廠商/供應商都寫好方法,工程師就是照做。當時這個傳統方法不行了,需要同事們自己想辦法,自動化處理。

    我們要設計一個系統能自動接受IP並在相應裝置上封鎖,研究下來當時防火牆不能做,交換機可以但不方便,後來確定在 IPS 上做。

    寫程式接受被封IP列表,傳送到 IPS 上自動封鎖,是一個簡單的流程,測試好了就上線運作,用起來能自動化還不錯。

    後來遇到了一個大坑,我們接收來自上游系統通過演算法識別的惡意IP輸出,有次那個系統出了問題,一下發過來幾萬個IP,這幾萬個是我們實際使用者的資料,不是“壞人”IP,我們系統就開始封,還停不掉,造成了不小的故障影響。

    然後針對這種情況,仔細研究了系統的防呆措施,如對接收IP做速率限定,封堵IP設定數量上限,可以及時剎車馬上終止,人工輸入封鎖解封,各種記錄查詢等,把這些做完後,這個系統才基本完善,後續一直做持續改進。

    這一套系統的思路和概念一直沿用,雖然後來換了一些元件,比如說封的裝置、運維團隊、輸入系統等,照樣還是在正常運作,可以說是在過坑中逐步的成長。

    自動化交付

    網路安全有三件重要的事:

    • 感知的能力
    • 阻斷的能力
    • 回溯的能力之後我們做了各種自動化工具都是這三個範疇的。上面列的系統都是在生產環境使用的。之前說到的兩小時伺服器上線交付,我們的自動化工具也在其中,一個是分散式的漏掃。做過漏掃的同事都知道,各種特徵掃一遍最少也要幾十分鐘,序列在兩個小時上線目標中,佔了非常大的時間比例,後來經過研究分析,上線都是採用標準的配置基線自動處理,配錯的情況非常少,可能少於百分之 0.1,後來我們就將漏掃做旁路,流程工單啟動開始做掃描我這個工單就完成,進行下一個工序,如果掃描30分鐘後發現有安全問題,我們再進入一個別的流程去做整改,這樣就提高很多效率。上線流程裡面還有一個證書部署,之前手工方式,這個時間就長了,幾十分鐘算快的,我們開發了一個自動部署系統,如果需要部署證書,自動到配置庫裡呼叫和自動部署到需要的伺服器上,分鐘級就可以解決問題。所以這都是在周邊 DevOps 環境要求下,我們需要努力處理好自己系統的自動化

      防火牆自動化運維

      我們團隊做的一個比較大的系統是防火牆自動化運維,國內業界這樣做的不多。我們在生產防火牆上實現了策劃下發的自動化,聽起來這個事情很嚇人,萬一出點事情造成的影響將會很大,所以需要有一些可靠的防呆措施。

      照片是我們在2014年2015年的合影,團隊的八個人在最近一年半的時間,提交了發明專利30多項,在公開和實質審查階段大概是十五、六篇,這也是很大的成果。

      4、小結

      我和同事們遇到的問題就是周圍的環境發生了巨大的轉變,這個時候我們應該怎麼辦,這時候就需要有歸零心態,該學的東西就要學,不管是運維還是安全,我們面臨的就是日新月異的各種變化,有各種的新技術,各種新挑戰,如果我們跟不上步伐,運維40歲肯定幹不到,如果跟的上,幹到多少歲都行,如果早日財務自由了最好。

      文章來自微信公眾號:高效運維