網際網路企業安全之埠監控

美團雲發表於2017-11-07
  • 本文轉自美團點評技術學院,未經作者許可,不允許私自轉載!
  • 加入美團雲技術交流群(QQ群:469243579),每日分享更多精彩技術文章。

背景

外網埠監控系統是整個安全體系中非常重要的一環,它就像眼睛一樣,時刻監控外網埠開放情況,並且在發現高危埠時能夠及時提醒安全、運維人員做出相應處理。
對安全人員來說,網際網路公司在快速發展壯大的過程中,外網邊界的管控容易出現照顧不全的現象。最初我們用Python+Nmap開發的外網埠監控系統,在公司邊界擴大的過程中已經無法滿足要求了,所以出現過一例因為運維人員誤操作將高危埠曝露至外網導致的入侵事件,為了避免再次出現類似由高危埠開放而不知情導致的入侵問題,我們開始重做外網埠監控系統。

意義

要理解埠監控的意義,首先需要知道什麼是 埠掃描 ,根據Wikipedia的定義:
埠掃描的定義是客戶端向一定範圍的伺服器埠傳送對應請求,以此確認可使用的埠。雖然其本身並不是惡意的網路活動,但也是網路攻擊者探測目標主機服務,以利用該服務的已知漏洞的重要手段。
對於攻擊者來說,埠掃描往往是他們從外網發起攻擊的第一步。而對於企業安全人員來說,埠監控則是我們預防攻擊者從外部直接入侵的一條重要防線,它可以幫助我們:
  • 以攻擊者視角瞭解企業外網埠的開放情況,看我們是否存在容易被利用導致入侵的點
  • 趕在攻擊者發現外網新開放的高危埠之前發現並修補漏洞,降低系統被從外部直接入侵的概率

方法

對企業的外網開放埠進行監控不外乎兩種方法,一種是類似於黑盒審計的外網埠掃描,另一種是類似於白盒審計的流量分析。從原理上來說流量分析的方式肯定是最準確的,但這對軟硬體都有一定要求,一般的公司不一定有能力做好;外網埠掃描的方式比較直接,雖然也有一些環境上的依賴,比如網路頻寬,但總體上來說要比流量分析的要求小得多,大部分公司都能滿足。這裡我們主要介紹一下外網埠掃描的方法,另一種流量分析的方法,以後請具體負責同學給大家分享。
在這裡我們先簡單介紹一下埠掃描的原理,以幫助各位對這塊不太瞭解的同學有個基本的認識。

埠狀態

下面以最知名的埠掃描器Nmap對埠狀態的劃分進行一個說明:
但一般情況下我們不用分的這麼細,這裡為了方便起見,將一個埠的狀態粗略分為3種:開放、限制性開放、關閉。其中「限制性開放」指的就是做了訪問控制,只有指定白名單列表中的主機才能訪問,其它的都無法訪問,可以簡單認為是上面的filtered狀態。
掃描方式

TCP SYN掃描

我們選擇TCP SYN掃描的理由:
  • 執行得很快,在一個沒有防火牆限制的快速網路中,每秒鐘可以掃描幾千個埠;
  • 相對來說比較隱蔽,不易被注意到,因為它從來不完成TCP連線;
  • 相容性好,不像Fin/Null/Xmas/Maimon和Idle掃描依賴於特定平臺,而可以應對任何相容的TCP協議棧;
  • 明確可靠地區分open(開放的),closed(關閉的)和filtered(被過濾的)狀態。
掃描原理
對於學過計算機網路的同學來說,TCP/IP建立連線的3次握手過程想必應該不算陌生,大體流程如下:

我們這裡使用的TCP SYN掃描就是通過先主動傳送一個SYN報文給指定埠(之後並不回覆任何報文,不完成TCP連線),然後根據埠的返回資訊做出判斷,判斷結論分為以下3種:
圖例如下:

原始碼面前,了無祕密。
技術同學估計對侯捷老師的這句話不會陌生,這裡我想將這一句話改一改以適應我們這裡的情景:
流量面前,了無祕密。
通過流量分析,我們可以及時知道有哪些埠對外開放了,然後通過解包分析的方式獲取它使用的協議以及提供的服務,對於無法準確判斷的,我們可以再用外網掃描的方式進行補充判斷。
演進過程
早期我們就是通過Python呼叫Nmap進行的掃描,但隨著公司規模的不斷擴大,網段的不斷增加,Nmap掃描的弊端就逐漸凸現且無法彌補了——大網段全埠掃描週期太長,無法及時出結果(一個掃描週期可能長達2周),也就根本達不到外網埠監控的目的了。直到後來出現了Masscan。
大體架構如下:

Masscan是大網段全埠掃描神器!!!
就掃描速度來說應該是現有埠掃描器中最快的,同時準確性也比較高。在確定使用Masscan之前我們拿它和Zmap、Nmap一起做了對比測試,限於篇幅,具體的測試過程就不發出來了,這裡只說測試結論:用TCP SYN掃描方式,對一個小型IP段進行全埠掃描,Masscan速度最快,準確性較高,可以滿足需要。
經驗分享
  1. 掃描伺服器的頻寬是關鍵;
  1. 掃描最好避開業務高峰期;
  1. 掃描選項需要根據具體頻寬、機器配置、掃描範圍、掃描速度要求進行調優;
  1. 只要是遠端檢測的方法,就存在一定的不確定性,檢測結果的準確性只能接近100%,無法達到100%,所以不要完全依賴外網掃描的結果;
  1. 實際情況中單IP的開放埠數是有限的,如果你發現掃描結果中有單個IP開放了大量埠,你就要注意該IP對應的裝置是不是在「欺騙」你了;
  1. 前期對掃描結果做一個完整的梳理,後期只需要處理新增的高危埠就行。
在Masscan版本上線了之後,全埠掃描的速度得到了大幅提升,外網埠的開放情況也瞭解的比較清楚了,但是對於Banner的獲取以及具體服務的識別還達不到要求,而這也不是Masscan的強項,所以這時候我們就需要藉助Nmap豐富的服務指紋庫來提高我們監控資料的準確性了。
和之前相比,就是在Masscan全量掃描環節之後增加了一個只針對判斷為開放的埠用Nmap進行增量掃描的環節,然後將結果更新至資料庫方便展示、分析。大體架構如下:

外網的掃描有它的優勢——以攻擊者視角獲取當前外網安全狀態,但是因為Masscan全埠掃描再快他也是需要時間的,特別是在網段較大、頻寬有限的情況下。所以單獨的週期性外網掃描就存在一個天然的真空期,如果在這段真空期內,內部員工因為大意將測試埠對外,且忘了關閉的情況下,就可能會被攻擊者進行利用,為了應對這種情況(即便可能性比較小),我們決定從實時流量中進行分析,實時找出對外開放的新增/異常埠,然後呼叫Nmap進行掃描,以解決單獨外網掃描存在的真空期問題。大體架構如下:

經驗分享

  • 聯合相關兄弟團隊全面梳理IP、裝置資產資訊,同時資產變更系統化(避免手工操作)勢在必行;
  • 掃描範圍最好(一定)通過API拉取,避免出現因為資產變動而導致漏掃的情況;
  • 這種情況下安全監控資訊的時效性要高於準確性,但準確性也很重要(所以要先拿Masscan縮小範圍,再拿Nmap獲取細節);
  • 發現典型高危案例要記得抄送雙方老闆,在有可能的情況下看能不能升級至更高層面,因為制度或政策的確立由高往低會比較好推動。

延伸擴充套件

埠監控系統除了可以起到監控外網開放的新增高危埠的作用之外,還可以考慮從以下幾個方面擴充套件一下它的功能和效果,以實現效用的最大化:
對於非安全的同學來說,他們會很難理解一個外網開放埠能造成多大的危害,所以經常會出現當安全人員找到他們的時候,他們不認為這是一個安全問題,因此溝通起來會有點麻煩。
雖然問題最終都會得到解決,但如果能有一個直觀的演示給到他們的話,他們也會更願意配合我們去修復以及避免這類問題。所以和系統漏洞掃描器的聯動對於推動問題的處理和漏洞的修復是有幫助的。
注意事項:避免高風險性掃描操作需要人工確認後主動觸發
通常情況下我們會認為,新增Web埠對外是可以接受的,但這是建立在對應的Web系統通過了完整的內部安全測試的前提下。當碰到類似於為了方便起見將Zabbix的Web系統對外,且為弱口令時,情況就不那麼樂觀了,這時就可以通過呼叫Web漏洞掃描器自動對暴露在外的Web系統進行掃描,並將結果及時通報,以減少這類問題帶來的危害。
可以獲得的好處有:
  • 自動錄入,由漏洞管理系統流程進行自動跟進,效率提升;
  • 結果在漏洞管理系統中進行展示,風格統一。

補充

上面介紹了常規伺服器的TCP埠監控,意在提醒大家注意一下伺服器的安全;但還有一類UDP埠安全的問題上面沒有介紹,也容易被忽略——防火牆、交換機等網路裝置的安全。在2016年8月份的時候The Shadow Brokers公佈了一款針對思科Adaptive Security Appliance(ASA,實際涵蓋了防火牆和路由器裝置,PIX也在其列)產品的漏洞利用工具ExtraBacon,雖然漏洞利用有一定條件限制,但是一旦漏洞利用成功,攻擊者就可在無需輸入身份憑證的情況下建立起SSH或telnet連線。就是不需要輸入有效使用者名稱或密碼,就能闖進ASA,危害巨大。
針對這方面的問題,有以下幾點建議:
  • 快速監控部分高危UDP埠的狀態;
  • 如無必要,關閉服務/對外訪問;
  • 如有需要,儘早升級且限制訪問IP來源。

結語

本文主要介紹美團點評安全團隊對外網埠監控系統的開發演進過程,整理總結了其中的一些實踐經驗以及前景展望。歡迎大家批評指正,有好的建議也希望能提出來幫助我們改進。我們後續將不斷優化,也將繼續與大家保持討論。耐心看到這裡的讀者,表示十二萬分的感謝!

作者簡介

光宗,2015年加入美團點評安全團隊,先後從事過生產網主機、軟體安全防護的工作,目前主要負責美團點評集團內部安全審計系統相關的開發工作。
方法1:外網埠掃描
狀態

說明

open

有一個應用程式在監聽這個埠,可以被訪問

closed

沒有應用程式在監聽這個埠,但它是可達的

filtered

在掃描器和埠之間有網路障礙,掃描器無法到達該埠,所以無法判斷埠是開放還是關閉的

unfiltered

埠可達,但是掃描器無法準確判斷

open或filtered

掃描器無法準確判斷埠到底是open還是filtered

closed或filtered

掃描器無法準確判斷埠到底是closed還是filtered

結論

原因

open

返回 SYN/ACK

closed

返回 RST

filtered

數次重發後仍沒響應;或者收到ICMP不可到達錯誤

方法2:流量分析

Nmap
Masscan
Masscan+Nmap
Masscan+Nmap & DPDK+Storm+Nmap
1. 系統漏洞掃描器聯動
2. Web漏洞掃描器聯動
3. 內部漏洞管理系統聯動

UDP 高危埠監控

上面介紹了常規伺服器的TCP埠監控,意在提醒大家注意一下伺服器的安全;但還有一類UDP埠安全的問題上面沒有介紹,也容易被忽略——防火牆、交換機等網路裝置的安全。在2016年8月份的時候The Shadow Brokers公佈了一款針對思科Adaptive Security Appliance(ASA,實際涵蓋了防火牆和路由器裝置,PIX也在其列)產品的漏洞利用工具ExtraBacon,雖然漏洞利用有一定條件限制,但是一旦漏洞利用成功,攻擊者就可在無需輸入身份憑證的情況下建立起SSH或telnet連線。就是不需要輸入有效使用者名稱或密碼,就能闖進ASA,危害巨大。

針對這方面的問題,有以下幾點建議:

  • 快速監控部分高危UDP埠的狀態;
  • 如無必要,關閉服務/對外訪問;
  • 如有需要,儘早升級且限制訪問IP來源。

結語

本文主要介紹美團點評安全團隊對外網埠監控系統的開發演進過程,整理總結了其中的一些實踐經驗以及前景展望。歡迎大家批評指正,有好的建議也希望能提出來幫助我們改進。我們後續將不斷優化,也將繼續與大家保持討論。耐心看到這裡的讀者,表示十二萬分的感謝!

作者簡介

光宗,2015年加入美團點評安全團隊,先後從事過生產網主機、軟體安全防護的工作,目前主要負責美團點評集團內部安全審計系統相關的開發工作。


相關文章