1. 程式人生 > >網際網路企業安全運維實踐

網際網路企業安全運維實踐

本文根據田國華老師在〖2017 Gdevops全球敏捷運維峰會成都站〗現場演講內容整理而成。

講師介紹

田國華,12年以上資訊保安行業工作經驗,曾在綠盟、安氏兩家國內知名安全公司工作多年。前攜程網高階網路安全經理,負責過攜程網路安全架構規劃、設計與運維管理工作。目前在上海拍拍貸金融資訊服務有限公司擔任資深資訊保安經理,全面負責公司資訊保安管理工作。 擔任(ISC)²上海分會理事,獲得CISSP、CISA、PMP、ITIL 、CCNP等認證證書,10餘項技術發明專利。

分享大綱:

  1. 安全建設思考
  2. 安全運維之術
  3. 安全運維自動化

安全領域眾多,分享這個議題,是因為在之前的工作過程中我們發現像大家非常關心的機密資料洩露 、資產盜竊、資料篡改、服務中斷,以及物理邏輯的破壞行為通常都發生在運維安全環節,需要通過安全運維確保整個系統在一定的安全級別中執行。今天的分享就是我們在實際工作中解決問題的一些方法、經驗和體會。

一、安全建設思考

安全建設

當企業開始著手考慮安全建設時,要考慮的因素有很多,其中包括管理層的期望、業務部門的安全訴求、組織環境、企業治理模式等。綜合瞭解這些資訊後,需要評估這個時候安全所處的階段,可能還會做一下同行差距分析,然後才著手做安全規劃,就需要引入企業安全建設的有一份論,一般來說建設資訊保安有四個階段。

第一個階段通常是救火,優先解決業務痛點,同時做一些基礎的“保命”工作,來降低安全事件發生的概率,快速找到可能導致內外網安全入侵的安全隱患並修復,比如無線安全、VPN遠端訪問、弱口令、伺服器後門等。這個時候也是最困難的,要人沒有,錢也很有限,關鍵買裝置也來不及,就得根據以住滲透經驗轉換成防禦方法,做最有效的工作,按照2/8法則。另一個方面快速組織團隊,因為這個時候,你的安全專案計劃裡已經有很多活等著幹了。

第二個階段是體系化建設階段。過了救火期,可以稍微喘口氣,進行有序的安全建設。主要精力是在基礎安全建設,比如安全老三樣、堡壘機、雙因素、VPN之類的。這個階段還網際網路不了,因為團隊裡基本上不具備開發能力,主要是以商業安全裝置為主,外加少量的安全工具自研,提升運維的效率;這個階段也可以考慮參考ISO27001體系出臺三、四級的管理規範,並推動落地,這樣確保從源頭解決問題,否則你永遠處在擦地板的過程,因為水桶有洞,水在不斷滴出來,擦一次是乾淨了,過一會兒又流出來了。

第三個階段屬於安全的高階階段,商用系統可能並不能很好地滿足需求,所以就需要大量自研工具來解決實際問題,有能力的話安全大資料和APT也可以考慮進來。

第四個階段進入安全的智慧級別,智慧的檢測、阻斷、響應代表公司安全未來的方向。

安全架構

架構一詞,起源於古羅馬時代,就是描述如何去構建一個建築物以及它的實用和非實用功能繪畫的過程和相關的藝術科學,這個詞,同樣在IT領域廣泛使用。

拿這個圖說例子,可以更好地幫助理解IT系統的安全架構 。因為軟體架構尤其在執行環境中會比較抽象。以往我們做安全系統的架構,由於對系統缺乏全面的瞭解,通常都是拿一張平面的網路拓撲圖;做架構設計之前需要對系統做有機的分析,架構是分不同的層次和檢視的。根據業務的差別,功能的不同,觀眾人員的差別,就需要不同視角的檢視。

回到我們的主題,系統安全的架構應該包含哪些東西? 我認為它至少應該包含三個主要的維度,第一個就是系統自然的技術堆疊,這個在IT技術裡面,任何一下系統的技術堆疊都是天然存在的。我們最常見的系統分層架構,有客戶端或者瀏覽器、APP,下面有執行的程式碼,它可能執行在中介軟體伺服器上,再下面可能是資料庫、作業系統、伺服器、網路和基礎設施,這是一個最簡單的分層方式;

第二個維度是業務流程視角,這個業務流程視角,其實和安全這個課題是沒有太大關係的,它更多是關注業務功能實現。比如說支付業務有支援業務的流程,網購有網購業務的流程,理財業務有理財的流程,它是隨著系統差別,實現不同的業務目標;

第三個維度安全檢視,比如客戶端、應用、中介軟體、DB都有不同的保護機制。在另外一個維度就是業務流程,業務的每個模組也需要不同的保護機制,這些保護機制最後貫穿成一個網狀的結構, 如何選擇合適的保護機制對它進行保護,那就需要第三個軸安全技術構成三維視角,在安全的機制裡面其實它分為2類:第一類是系統自身的防護;第2類是對業務系統的保護。

為了便於理解,我們把這個框架對應到建築架構上,第一層可能是地基代表基礎設施,第二層是網路,第三層是伺服器,第四層是中介軟體及應用,再往上就是應用、客戶端,系統堆疊的概念比較好理解。

業務系統檢視對應的橫軸,比如我可能有101、102、103房間 業務流程我把它想象在,101 房間先辦理註冊,102 房間去選1個東西,103加到購物車,104我可能是支付,105完成退出。

接下來我們看第三個軸,系統自身的保護。你構建一個房子,自身要堅固,柱子要牢靠,牆體要結實,這樣這個建築才能穩定在這裡。 除了本身安全,還要考慮在裡面住的住客,要為他們提供安全保護,走廊、消防、空調的排布是不是合理的,能否有效保護內部使用者的安全。這裡你就能看出系統安全架構的基本維度,而對於保護機制的選擇有一個逐步評估分解的過程。這裡還需要大家注意每一個IT系統,不管是系統開發還是安全開發,都有生命週期的概念,而生命週期對安全架構的設計是有影響的。

今天我們能感覺到網路攻擊已經在進化,比如基於國家、政治團體、有組織的犯罪機構發起的攻擊越來越多,攻擊者更有耐心,可能會從不起眼的使用者入手。還有一個變化是一些高階的攻擊逃逸技術越來越先進。還有一些攻擊是針對我們的個人,針對人的弱點進行社會工程學的攻擊,非常難防範,會突破我們原來認為不會被攻破的防禦系統,把一些惡意的程式注入到你的系統裡面去。

但是我們仍然可以繼續遵循基本的電腦保安實踐,來構建安全體系。按照合規的方法去做,其實這一點是非常重要的。我們都知道之前在禁止酒駕立法之前,發生非常多酒駕引起的人員傷亡的事故,但是立法之後很少有人去觸碰法律的紅線。資訊保安也一樣,如果真正做到監管合規的要求,你安全的等級已經到一個比較高的維度了。

第二個身份管理,這個人是誰,在我的系統裡面有什麼樣的許可權,授予他可以訪問哪些資料。第三個是資料保護,資料保護目前仍是很多企業最關心和最擔心的問題,因為全球90%的企業都認為自己可能有資料洩漏方面的風險。

從整個2016年來看,全球總共爆發900多起非常嚴重的資料洩露事件,洩漏資料達到5億多條,包括小米、京東、雅虎在2016都發生過大規模的資料洩漏的事件。

另外一塊是日誌,記錄和監控可以協助發現未經經授權的安全事件,有助於確定安全措施有意義的改進,以保護您的公司的機密資訊。這裡只是一個示例,我們在構建技術保障體系的時候,按分層原則,每個層次上都需要考慮相應的保護機制。

除了像BAT一樣的先進公司,大多數企業在安全運維層面還是離不開找到合適的人、買到合適的裝置這兩條。我談談買到合適的裝置時的一些經驗。

給大家講個與老闆偏好相關的真實案例。之前老闆傳達的資訊是買裝置,別買大了,省下的錢公司用於投資,會產生更多的收益。聽上去沒毛病,所以我們在選購資料中心邊界防火牆時,按年30%的複合增長計算,1套牆滿意3年業務增長是沒有問題的,到第四年插塊板卡,就能扛5年。結果2年後,業務以每年超過100%的速度增長。在這個過程中,新老闆上任了,說容量怎麼不夠了,就把之前的設計翻出來,也說得通,那就買板卡擴容吧。沒成想只過了6、7個月,容量又報警了,業務成長實在太快了。只好去找新老闆說板卡已經擴到頭了;只能換一套更強處理能力的裝置;你們可以體會一下向老闆做彙報的心情。

第二個案例是關於品牌的。在採購過程中,有個品牌為了進來,殺低價中標。都是國際一線品牌,按道理來說沒什麼問題。但是有點水土不服,各種妖怪問題全來了,在短時內就發生了7次嚴重故障,所以用了不到1年,果斷換掉。這次之後,我們對品牌的考慮更加慎重,和採購死磕,提升技術評分的比例,確保不讓不符合預期的產品進來。

關於中心端產品的容量,如果是網際網路公司,我建議按當前量,放大5至10倍考慮,因為業務的增長往往是倍數成長,非常嚇人,不能總是出現效能瓶頸;另外一方面需要考慮架構優化,用Scal Out方式橫向擴容。

關於測試,這裡指實際環境測試。實驗室不全面,如果條件允許,時間、人充足,測試當然沒有壞處。如果時間緊、人手不足的情況下,就選擇性地進行測試,比如效能類產品首次選擇使用時,最好先測試一下。

另外,這幾者之間要互相平衡,它們之間都是有聯絡的 。比如容量估算不準,又沒做實際環境測試,等裝置買來,一上線直接掛掉也是有可能的。

二、安全運維之術

這一部分主要介紹一下,安全運維需要考慮的一些點。

運維之術

這裡講兩個重要概念。Due care中文通常翻譯成適度關注或應用的注意,Due diligence翻譯成適度勤勉或是盡職調查;

在資訊保安領域,Due care實際上是說一個企業要制定各種各樣的策略、規程和標準等,用來對企業資訊資產的保護,也就是企業應該做的事情。而Due diligence則是要保證Due care要做的那些事情一直保持在最新狀態。

舉個例子說明。你要外出時,做了兩個動作:

1、想著手機會不會電不夠用呢,不夠用怎麼辦;

2、隨手把充電寶裝口袋了。

1是你的思想活動,有沒有“想”就屬於Due care,也可能會順手檢視手機電量。想過之後,可能會覺得電夠用不帶充電寶,也可能會覺得不夠用而帶上充電寶,這都不重要,重要的是你“想沒想”,有沒有檢查手機電量的意識(這根弦)。

2是你的實際動作。如果你覺得電不夠用帶了充電寶,但沒檢查充電寶是否有電,或忘了充電線,那就是沒做到Due diligence。也就是說雖然採取了相應的動作,但沒達到預期的效果。

而對於安全來說,需要想到,如果沒有采取這個措施,可能存在怎樣的安全風險,為了降低風險,採取了一定的行動,並且要確保這個行動是有效的、而且一定要真實的執行。

IT系統會有各種各樣的變更,如釋出、升級、割接、改造等。變更是最容易引發系統故障的操作,為了降低變更對系統的影響,我們推進三思而行的三步工作法。做變更之前先問自己三個問題,首先我是這項工作的合適人選嗎?其次我有能力執行這個任務嗎?最後我能控制整個變更嗎?

當三個問題得到的答案是肯定的,我再去申請執行這個變更。如果任何問題的答案有遲疑,會和自己的主管協商,制定最佳方案,包括變更失敗的回退計劃;通過這一舉措,大大降低了變更造成的業務影響。

研發的同事通常關注的是HTTP xxx返回值相關問題、延遲、擴充套件性、程式碼重用、Deadline、KPI、需求變更、框架、形式源、功能如何實現、以及程式碼質量等問題,最主要關注程式碼有沒有bug;運維的同事通常關注HTTP 4xx及5xx錯誤、效能、可靠性、對閥值進行預警、監控圖斷崖、是否出現異常,最關心別出故障;

研發和運維的同事對安全的理解會有不同,但大體上對安全的理解包括DDoS攻擊、病毒木馬、堡壘機、資料脫敏、拖庫和資料洩露,只能理解和自己工作關係比較大的那個部分。而安全的同事關注的是1-7層上我的防護措施會不會被繞過,然後就是各種漏洞,開源框架的、程式語言的,程式碼裡的、邏輯上存在的各種安全漏洞公交站,傳輸過種中以及儲存過程中的漏洞,bug的修復,更高階的漏洞利用方式。找出各種高、中、低危漏洞。除此之外還在時刻關注無線滲透、弱口令、0day、彩虹表、各種馬、注入、後門。這裡就不一一列舉了,反正就是能黑進入能拿資料,能偷錢的技術都需要了解和防範,弦崩的還是很緊的 。

其它非技術部門的同事對安全的關注僅僅是看看熱點,誰家出什麼事了,旁觀者心態。視野的不同決定了在安全這件工作上採取行動的不同。

在安全運維的過程中,有時不得不去做一些高危操作,就像給飛行中的飛機更換故障發動機,因為站點業務是7*24服務的,不可能或很少拿到停機操作視窗。前面已經說過,做變更有一套方法規避風險,包括參與變更人員、廠商和我們工作師的配合。但總有疏漏的時候,有一次我們更換防火牆引擎故障,結果導致防火牆雙活,業務中斷約10分鐘。後來覆盤故障時領導也民覺得這類操作的確很危險,即使再小心,也是十分危險的 。所以就設定了Outage Window操作,高危操作放在這個視窗內,訂單損失是不計入ATP監控的,並沒有人會因此濫用這個視窗。

漏洞

關於漏洞

漏洞年年有,今年特別多,像前段時間出的Struts2,還有4月15日國外黑客組織Shadow Brokers洩露出了一份機密文件,其中包含了多個Windows遠端漏洞利用工具,可以覆蓋全球70%的Windows伺服器,影響程度非常巨大。這兩次事件影響面都非常的廣,修復花很大力氣,在企業裡面推動補丁管理還是挺難的,簡單來說就是補洞的人不懂安全,懂安全的插不上手。需要說的是補丁是必須要打的,不然你就給入侵者留下方便之門,不做為,亦作惡。

關於安全意識

需要足夠的耐心,一次次的去宣講,普通員工到技術人員到管理層,大家整體的安全意識才會提高,特別是管理層,宣講的時候講技術通常效果不好。這時應該選擇講案例,將安全與商業價值聯絡起來管理層才會真正重視。安全工作成功的關鍵是高層和重視和承諾。

關於變化

這個也好理解,整個IT環境是不斷動態變化的,當前有效的安全防護措施,因為某個不安全系統的上線,就有了突破口,需要持續的檢查,發現變化帶來的新風險。

關於堅持

其實安全運維是整個安全的基石,你需要耐心去踏踏實實做一些事情,而很多我們身邊的大牛在最初入行時也是從調裝置寫程式碼開始的,通過一些真正的接觸一線的工作,你在後期的提升會比較快,而不是說看幾本安全的書就能怎樣。

三、安全運維自動化

運維自動化

我們為了提升安全運維效率,在運維自動化方面有過很多嘗試,比如防禦DDoS攻擊方面,分散式漏洞掃描方面、交換機封IP、基於VPN的鏈路容災方案,防火運維自動化方面等等,在DevOps深入推進的今天,可以說能夠自動化你想自動化的一切。

DDoS

關於DDoS攻擊分為兩種型別,一種是已經被打怕的人,另外一種是已經被打習慣的人。DDoS攻擊目前仍是網路安全的頭號大敵,超過100G規模的攻擊很常見。我們是被打習慣的一類人,在戰鬥中增加經驗值,並且考慮了一些自動化的防禦手段,比如自研DDoS攻擊看板,實時瞭解受攻擊情況,與運營商BGP聯動,實現被攻擊IP一鍵丟黑洞。快速釋放被攻擊頻寬;雲端防護是必須要藉助的,因為現在的攻擊量太大了,需要雲清洗能力。

DDoS攻擊

這個是我們自研的DDoS攻擊看板,分成三個狀態,第一塊是誰正在被攻擊,第二塊是哪些被攻擊系統正在引流,第三塊顯示哪些被引流的系統正在做流量清洗,正在做流量清洗的系統,需要特別關注業務的執行情況,確保業務得到保護。

交換器封IP

第二個講一下交換器封IP,由於我們系統架構的特殊性,需要由交換機裝置完成IP自動封鎖的任務。我們先看一下流程,比較簡單,分為4個過程,發現惡意IP,可以通過IPS或其它系統檢測出來,送入IP封鎖系統進行規則匹配,符合封鎖條件的IP直接自動下發到交換機進行封鎖,達到封鎖時間則自動解封。

我們看一下實現原理。最上面通過API對接Web Portal和惡意IP識別系統,Web可以實現IP的增刪查以及交換機ACL查詢,有IP白名單機制,確保受保護IP不會被封鎖。比如分公司IP或合作伙伴IP地址,ACL下推到交換機時增加了防呆機制,防止系統發生將不該封的IP封鎖或是大批量封鎖使用者IP的情況發生。這些系統我們在之前的一些文章或在專利裡面都具體講了實現的方法,有興趣的朋友可以去參考一下。

VPN

這個是一個基於VPN的鏈路容災系統設計,這裡面我們做的自動化有幾塊。一個是全國有幾百家汽車站需要與總部系統通訊,如果採購商用VPN系統造價很高,那我們在某寶上買了Netgear的路由器,安裝Openwrt開源韌體提供VPN服務,大約節省80多萬元成本。在這個設計裡的專利部分是設計了一套全冗餘的結構,冗餘的程度達到就算任何一個機房的鏈路壞了、裝置壞了甚至其中1個IDC全部crash,我的這套系統仍然是可以持續執行。

VPN

維護和管理幾百條VPN隧道是非常麻煩的事情,我們開發了VPN管理工具,可以批量生成中心端VPN的配置資訊,遠端的VPN小盒子也通過指令碼實現即插即用。大大降低了維護的複雜度。上圖介面是VPN隧道存活情況的監控。防火牆

隨著網際網路技術的不斷髮展,線上網站的規模越來越大,防火牆作為網路的安全屏障在廣泛使用,其數量也在相應的增加。這張拓撲圖展示的一些較大規模網際網路公司或企業典型的防火牆部署示意圖,體現了邊界防護、重要業務系統隔離保護、辦公與生產隔離的一些保護需求。

據我瞭解使用幾臺到幾十臺的企業有很多,也有一些大型集團公司或跨國公司使用數百臺防火牆。面對這麼多防火牆,要把它管理好,難度是很大的。有些廠商就說了,你可以使用我們的防火牆集中管理系統幫助降低運維複雜度。但當告訴他,我們有好幾個品牌的牆,他們往往會說對不起,他的系統管不了,只能管自家的牆。有商用產品可以實現不同品牌防火牆策略集中管理,但是按License算錢,價格昂貴,而且不靈活,不能實現個性化的需求。在這種多品牌,多數量的情況下,防火牆系統的運維難度和挑戰將變得非常的大。

我們自主開發了防火牆運維管理系統,這張圖是核心功能模組的索引和實現功能簡介。拓撲計算,通過計算路由,生成防火牆拓撲,判斷出一個策略需求,經過哪幾臺防火牆。策略查詢2個功能,一是使用者自助查詢2點間的防火牆策略;二是申請策略時後臺會自動判斷是否已有策略支援,如果有的話,會返回訊息告訴使用者說已經有策略了,無須申請。

策略生成模組,抽象策略物件,判斷策略申請是增刪改哪種場景生成相應的工藝。工單對接是指如何與企業中的變更管理工單管理系統對接。自動化不能逾越流程,反而要嚴格遵循流程。在工單對接環節會重點強調。其它工具,VPN管理、改密碼、審批關係維護、牆元素查詢,都非常有價值,極大提升運維工作效率。

總結

最後簡單談一些感想。第一做安全運維也要理解業務,理解業務才能針對不同業務實施不一樣的保護級別,如果全部採用相同保護級別的話,你的安全成本會非常高。

第二個要有充分的預案,因為我們不知道接下來會發生什麼,我們通常認為防火牆HA部署的可靠性已經很高了,但是極端情況下會出現兩臺防火牆同時壞掉的悲劇,就需要有應急預案處理這樣的極端情況。

第三個是定期演練。即使有了預案,還需要定期演練,不然真出現問題,對方案不熟悉或是預案針對的環境已經發生變化,預案早已不再有效卻沒有及時發現。

第四是善用乙方的資源,在系統的專業性方面,已方的工程師可能比較強,但對於業務本身,當然是甲方工程師更清楚,要利用相應的優勢,為業務提供保護。

第五是創新思維,就是用創新的想法去解決實際問題,並且成為一種能力。

第六是全面安全視角,安全運維不僅是對各種安全裝置和軟體進行運維保障系統安全,還要兼顧運維安全,解決研發、運維同事產生的各種危險坑點,基本上是涵蓋了整個系統安全的方方面面。所以需要有全面的安全視角,才能應對不斷產生的安全風險和挑戰。

文章來自微信公眾號:DBAplus社群