Flan Scan:Cloudflare開源的輕量級網絡漏洞掃描程序

日前,Cloudflare宣佈開源其內部的輕型網絡漏洞掃描工具Flan Scan。Flan Scan是一款基於Nmap打包的Python漏洞掃描程序。基於Nmap的開源強大,靈活性,Cloudflare利用他取代了之前使用昂貴的安全廠商專業產品,大大的降低了運營成本,並提供了無與倫比的部署靈活性,功能修改,漏洞庫快速更新(基於CVS開源數據庫)等優勢。目前Cloudflare的全球190多個數據中心的主機上都使用該工具進行漏洞掃描。

Flan Scan:Cloudflare開源的輕量級網絡漏洞掃描程序

緣起

該工具的產生源於Cloudflare的一個內部合規性掃描任務,因為任務執行比較急促,需要在截止日期內完成對合規性要求的內部掃描,在考察後,沒有發現可以滿足需求的工具和解決方案,於是他們決定自研開發一款適合自定義需求的掃描工具:需要一個能夠準確檢測服務器上監聽的端口和服務,並能通過CVE數據庫查找這些服務對應的漏洞項,該工具必須靈活的安裝部署。

這就是Flan Scan的來源。

Nmap為基礎掃描器

Flan Scan選擇Nmap作為基礎掃描器,與其他網絡掃描器犧牲準確性而求高效不同,Nmap穩紮穩打,優先檢測的準確性,雖然掃描速度比較慢,但是結果比較準確,可以極大的減少誤報。

除了強大的基礎功能外,Nmap還提供了靈活、可擴展的腳本引擎NSE(Nmap Scripting Engine),用來執行額外自定義的任務。NSE腳本都是通過靈活小巧的動態語言Lua編寫,NSE腳本庫具有大量的執行各種各樣任務和漏洞測試的腳本庫,也有大量第三方或者個人撰寫的腳本可以供使用和參考。下面是NSE官方文檔中提到的腳本庫:

Flan Scan:Cloudflare開源的輕量級網絡漏洞掃描程序

便捷性設計

為了使掃描器易於部署,同時確保其輸出可行且有價值的結果。Flan Scan提供了三個功能,通過他們可以將Nmap打包程序任意部署到大型網絡中。

易於部署和配置

為了創建具有輕鬆配置的輕量級掃描程序,Flan Scan提供了虛擬化Docker容器的部署方式。因此,可以構建Flan Scan,並將其推送到Docker 註冊表,以保持在運行時配置的靈活性。Flan Scan還包括帶有幾個佔位符的Kubernetes示例配置和部署文件,可以通過容器雲快速部署、並啟動掃描。

掃描結果推送到雲

Flan Scan另一個便捷功能是添加掃描結果自動推送到雲存儲。Flan Scan的掃描結果可以自動推送到谷歌雲存儲或者或AWS S3對象存儲。需要做的就是啟動容器時候配置一些環境變量,Flan Scan就能自動完成該任務。通過這種方式可以在大型網絡上運行大量掃描,並將結果集中收集在在一起進行處理。

便於執行的安全報告

Flan Scan從Nmap的輸出生成可以執行報告,可以讓我們快速識別網絡上的易受攻擊的服務,其存在的漏洞CVE和對應服務的IP和端口。該報告對於跟蹤掃描結果的安全工程師以及尋找合規掃描證據的審核員很有用。

Flan Scan:Cloudflare開源的輕量級網絡漏洞掃描程序

改善網絡安全性

在Cloudflare內部,通過Scan Flan不僅幫助完成了合規性掃描的限時任務,還使用Flan Scan切實改善了網絡的安全性。在Cloudflare,會將在生產環境中會固定某些服務的軟件版本,這樣可通過權衡升級的運營成本和最新版本的改進來確定升級的優先級。Flan Scan的掃描結果表明,用於管理Linux用戶和主機的FreeIPA節點運行的Apache版本過時,存在多箇中等嚴重性漏洞。因此,優先考慮了對升級更新。Flan Scan還幫助發現一些潛在安全點。比如,存在一個存在漏洞PostgreSQL實例,該實例實際上不再使用應該下線的服務。

在Cloudflare,線上環境都使用osquery執行基於主機的安全基線檢查和漏洞跟蹤。而Flan Scan則作為補充,擴大了其漏洞管理範疇。通過Flan Scan網絡掃描來補充osquery發現,可以全面瞭解邊緣運行的服務及其存在的漏洞。通過兩者配合,Cloudflare構建一個漏洞源管理體系,該體系會定時自動發送有關新漏洞的警報,過濾出誤報並跟蹤已修復的漏洞。

Flan Scan架構

Flan Scan:Cloudflare開源的輕量級網絡漏洞掃描程序

Flan Scan的第一步是運行具有服務檢測功能的Nmap掃描, Flan Scan默認啟動Nmap的下面的掃描項:

1. ICMP ping掃描:用來確定給出的IP地址是否在線。

2. SYN掃描:通過掃描ICMP ping響應IP地址的1000個最常用端口。Nmap根據掃描結果,將其標記為open、close或者filtered。注意:fileter表示該端口被防火牆明確封禁;close表示端口沒有被防火牆封禁,但是主機沒有應用監聽該端口;open表示主機在該端口有服務監聽。

3.服務檢測掃描:對端口open的服務,執行TCP握手和banner抓取掃描,根據反饋的服務指紋找出服務類型和版本等信息。

Nmap還支持其他類型的掃描,例如UDP掃描和對IPv6地址掃描。Flan Scan允許用戶通過在啟動時制定Nmap參數來啟用這些功能和更多的其他擴展功能。

Flan Scan在其Nmap命令中添加啟動"vulners"腳本(--script=vulners.nse),這樣會在掃描結果中包含於檢測到的服務的漏洞列表。vulners腳本通過對vulners服務API調用返回給定服務存在的漏洞。

Flan Scan:Cloudflare開源的輕量級網絡漏洞掃描程序

Flan Scan獲取nmap掃描結果過後,就會執行Python腳本將Nmap輸出的XML結構化數據轉換為可操作的報告。掃描程序的報告列出了所掃描的IP地址,並列出了IP上存在的漏洞。當IP比較多時候,面對大量的IP項目的報告,閱覽和執行就比較費勁。Flan Scan掃描結果圍繞以服務為單位進行組織。該報告列舉了所有易受攻擊的服務,並在每個相關漏洞和運行此服務的所有IP地址下方列出了一個列表。由於可以清楚地確定需要修補的服務,因此該結構使報告更簡短且可操作。

Flan Scan:Cloudflare開源的輕量級網絡漏洞掃描程序

Flan Scan報告使用LaTeX來編寫的,可以使用pdf2latex或TeXShop等工具將Flan Scan輸出的原始LaTeX文件轉換為漂亮的PDF。

總結

本文介紹了Cloudflare開源的輕量級網絡掃描工具,基於簡單的幾個腳本構建了其安全防線。其安全解決思路和現成工具都可以供大家參考,工具不是最主要的,主要是解決問題的思路。安全問題是企業的重中之重,然而安全通過購買那些昂貴的安全軟件就可以解決的麼?這是大家值得深思的問題。


分享到:


相關文章: