互聯網企業安全之端口監控(轉)

轉自:https://tech.meituan.com/security_port_monitor.html

背景

外網端口監控系統是整個安全體系中非常重要的一環,它就像眼睛一樣,時刻監控外網端口開放情況,并且在發現高危端口時能夠及時提醒安全、運維人員做出相應處理。

對安全人員來說,互聯網公司在快速發展壯大的過程中,外網邊界的管控容易出現照顧不全的現象。最初我們用Python+Nmap開發的外網端口監控系統,在公司邊界擴大的過程中已經無法滿足要求了,所以出現過一例因為運維人員誤操作將高危端口曝露至外網導致的入侵事件,為了避免再次出現類似由高危端口開放而不知情導致的入侵問題,我們開始重做外網端口監控系統。

意義

要理解端口監控的意義,首先需要知道什么是端口掃描,根據Wikipedia的定義:

端口掃描的定義是客戶端向一定范圍的服務器端口發送對應請求,以此確認可使用的端口。雖然其本身并不是惡意的網絡活動,但也是網絡攻擊者探測目標主機服務,以利用該服務的已知漏洞的重要手段。

對于攻擊者來說,端口掃描往往是他們從外網發起攻擊的第一步。而對于企業安全人員來說,端口監控則是我們預防攻擊者從外部直接入侵的一條重要防線,它可以幫助我們:

以攻擊者視角了解企業外網端口的開放情況,看我們是否存在容易被利用導致入侵的點

趕在攻擊者發現外網新開放的高危端口之前發現并修補漏洞,降低系統被從外部直接入侵的概率

方法

對企業的外網開放端口進行監控不外乎兩種方法,一種是類似于黑盒審計的外網端口掃描,另一種是類似于白盒審計的流量分析。從原理上來說流量分析的方式肯定是最準確的,但這對軟硬件都有一定要求,一般的公司不一定有能力做好;外網端口掃描的方式比較直接,雖然也有一些環境上的依賴,比如網絡帶寬,但總體上來說要比流量分析的要求小得多,大部分公司都能滿足。這里我們主要介紹一下外網端口掃描的方法,另一種流量分析的方法,以后請具體負責同學給大家分享。

方法1:外網端口掃描

在這里我們先簡單介紹一下端口掃描的原理,以幫助各位對這塊不太了解的同學有個基本的認識。

端口狀態

下面以最知名的端口掃描器Nmap對端口狀態的劃分進行一個說明:

狀態說明

open有一個應用程序在監聽這個端口,可以被訪問

closed沒有應用程序在監聽這個端口,但它是可達的

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

unfiltered端口可達,但是掃描器無法準確判斷

open或filtered掃描器無法準確判斷端口到底是open還是filtered

closed或filtered掃描器無法準確判斷端口到底是closed還是filtered

但一般情況下我們不用分的這么細,這里為了方便起見,將一個端口的狀態粗略分為3種:開放、限制性開放、關閉。其中「限制性開放」指的就是做了訪問控制,只有指定白名單列表中的主機才能訪問,其它的都無法訪問,可以簡單認為是上面的filtered狀態。

掃描方式

TCP SYN掃描

我們選擇TCP SYN掃描的理由:

執行得很快,在一個沒有防火墻限制的快速網絡中,每秒鐘可以掃描幾千個端口;

相對來說比較隱蔽,不易被注意到,因為它從來不完成TCP連接;

兼容性好,不像Fin/Null/Xmas/Maimon和Idle掃描依賴于特定平臺,而可以應對任何兼容的TCP協議棧;

明確可靠地區分open(開放的),closed(關閉的)和filtered(被過濾的)狀態。

掃描原理

對于學過計算機網絡的同學來說,TCP/IP建立連接的3次握手過程想必應該不算陌生,大體流程如下:



我們這里使用的TCP SYN掃描就是通過先主動發送一個SYN報文給指定端口(之后并不回復任何報文,不完成TCP連接),然后根據端口的返回信息做出判斷,判斷結論分為以下3種:

結論原因

open返回 SYN/ACK

closed返回 RST

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

圖例如下:



方法2:流量分析

源碼面前,了無秘密。

技術同學估計對侯捷老師的這句話不會陌生,這里我想將這一句話改一改以適應我們這里的情景:

流量面前,了無秘密。

通過流量分析,我們可以及時知道有哪些端口對外開放了,然后通過解包分析的方式獲取它使用的協議以及提供的服務,對于無法準確判斷的,我們可以再用外網掃描的方式進行補充判斷。

演進過程

Nmap

早期我們就是通過Python調用Nmap進行的掃描,但隨著公司規模的不斷擴大,網段的不斷增加,Nmap掃描的弊端就逐漸凸現且無法彌補了——大網段全端口掃描周期太長,無法及時出結果(一個掃描周期可能長達2周),也就根本達不到外網端口監控的目的了。直到后來出現了Masscan。

Masscan

大體架構如下:



Masscan是大網段全端口掃描神器!!!

就掃描速度來說應該是現有端口掃描器中最快的,同時準確性也比較高。在確定使用Masscan之前我們拿它和Zmap、Nmap一起做了對比測試,限于篇幅,具體的測試過程就不發出來了,這里只說測試結論:用TCP SYN掃描方式,對一個小型IP段進行全端口掃描,Masscan速度最快,準確性較高,可以滿足需要。

經驗分享

掃描服務器的帶寬是關鍵;

掃描最好避開業務高峰期;

掃描選項需要根據具體帶寬、機器配置、掃描范圍、掃描速度要求進行調優;

只要是遠程檢測的方法,就存在一定的不確定性,檢測結果的準確性只能接近100%,無法達到100%,所以不要完全依賴外網掃描的結果;

實際情況中單IP的開放端口數是有限的,如果你發現掃描結果中有單個IP開放了大量端口,你就要注意該IP對應的設備是不是在「欺騙」你了;

前期對掃描結果做一個完整的梳理,后期只需要處理新增的高危端口就行。

Masscan+Nmap

在Masscan版本上線了之后,全端口掃描的速度得到了大幅提升,外網端口的開放情況也了解的比較清楚了,但是對于Banner的獲取以及具體服務的識別還達不到要求,而這也不是Masscan的強項,所以這時候我們就需要借助Nmap豐富的服務指紋庫來提高我們監控數據的準確性了。

和之前相比,就是在Masscan全量掃描環節之后增加了一個只針對判斷為開放的端口用Nmap進行增量掃描的環節,然后將結果更新至數據庫方便展示、分析。大體架構如下:



Masscan+Nmap & DPDK+Storm+Nmap

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



經驗分享

聯合相關兄弟團隊全面梳理IP、設備資產信息,同時資產變更系統化(避免手工操作)勢在必行;

掃描范圍最好(一定)通過API拉取,避免出現因為資產變動而導致漏掃的情況;

這種情況下安全監控信息的時效性要高于準確性,但準確性也很重要(所以要先拿Masscan縮小范圍,再拿Nmap獲取細節);

發現典型高危案例要記得抄送雙方老板,在有可能的情況下看能不能升級至更高層面,因為制度或政策的確立由高往低會比較好推動。

延伸擴展

端口監控系統除了可以起到監控外網開放的新增高危端口的作用之外,還可以考慮從以下幾個方面擴展一下它的功能和效果,以實現效用的最大化:

1. 系統漏洞掃描器聯動

對于非安全的同學來說,他們會很難理解一個外網開放端口能造成多大的危害,所以經常會出現當安全人員找到他們的時候,他們不認為這是一個安全問題,因此溝通起來會有點麻煩。

雖然問題最終都會得到解決,但如果能有一個直觀的演示給到他們的話,他們也會更愿意配合我們去修復以及避免這類問題。所以和系統漏洞掃描器的聯動對于推動問題的處理和漏洞的修復是有幫助的。

注意事項:避免高風險性掃描操作需要人工確認后主動觸發

2. Web漏洞掃描器聯動

通常情況下我們會認為,新增Web端口對外是可以接受的,但這是建立在對應的Web系統通過了完整的內部安全測試的前提下。當碰到類似于為了方便起見將Zabbix的Web系統對外,且為弱口令時,情況就不那么樂觀了,這時就可以通過調用Web漏洞掃描器自動對暴露在外的Web系統進行掃描,并將結果及時通報,以減少這類問題帶來的危害。

3. 內部漏洞管理系統聯動

可以獲得的好處有:

自動錄入,由漏洞管理系統流程進行自動跟進,效率提升;

結果在漏洞管理系統中進行展示,風格統一。

補充

UDP 高危端口監控

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

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

快速監控部分高危UDP端口的狀態;

如無必要,關閉服務/對外訪問;

如有需要,盡早升級且限制訪問IP來源。

結語

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,250評論 6 530
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,923評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,041評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,475評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,253評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,801評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,882評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,023評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,530評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,494評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,639評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,177評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,890評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,289評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,552評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,242評論 3 389
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,626評論 2 370

推薦閱讀更多精彩內容