常見安全產品部署運營注意事項

防火牆

當前主流防火牆在基本的基於五元組(源目IP、源目埠、協議號)檢查的基礎上引入了狀態檢測,即對於接收的報文順序有所要求,比如需要先接受到某個5元組的IMCP request(type 8 code 0)報文,然後再從反向接受到對應5元組的ICMP replay(type 0 code 0)報文,才認為這是一個正常狀態的報文,並將其放過。如果首包接受到一個ICMP replay報文則會認為其狀態不合法並將其丟棄。這樣實現的好處在於引入了更為嚴格的訪問控制,能夠極大減小偽造源地址攻擊的危害。因此如果業務(主要是TCP這種有狀態的)只是單向過牆,需要在防火牆上關閉狀態檢查。

將部分具有相似屬性的介面劃分安全域,為不同安全域分配優先順序,各個安全域之間按照優先順序互訪的方法過於不安全。安全域只應該是一個名稱,用於對防火牆連接的業務區域做邏輯劃分,本身不該有優先順序概念。隱式拒絕,按需放通,最小許可權才是防火牆策略部署的正確做法。尤其在零信任愈發為各大公司所接受的當下,防火牆更為主要的作用在於攔截不必要的、非預期的訪問流量。

防火牆的性能瓶頸主要在新建、並發和吞吐。由於其特性,新建會話需要上送到CPU進行安全過程的處理,進入穩態後才會通過硬體轉發,高新建會極大消耗CPU處理能力,比如漏掃多執行緒對大目的地址段進行掃描、用zmap等掃描工具穿過防火牆進行掃描等很容易就將防火牆打掛,這種狀態下由於探測完後就拆鏈所以並發不大,探測報文基本都是小包所以吞吐也不會成為瓶頸,唯一的瓶頸就行新建,這在防火牆作為出口網關的場景下比較常見。由於防火牆的狀態檢查機制,不同狀態的連接有不同的老化時間,一旦連接老化後對應五元組的報文經過防火牆時會由於狀態非法而被丟棄,部分業務基於其特性要求使用長連接(即對應五元組老化時間變長甚至不老化),如果並發過大而連接不老化會消耗設備記憶體。對於多核多執行緒的防火牆,如果逐流轉發,一旦由於五元組hash問題導致流量集中到某幾個核處理,將單核打滿,即使未達整機吞吐也會出現部分業務丟包的情況。

IPS/IDS

IPS(入侵防禦系統)和IDS(入侵檢測系統)的區別在於部署位置的不同。IDS主要用於旁路部署在網路中接收鏡像流量基於流量特徵生成對應的告警日誌,優點在於只需接收到鏡像就來即可,不會由於增加IDS而影響現有網路或造成業務故障,缺點在於IDS僅檢測上報,不對檢測到的威脅進行阻斷。IPS則是侵入式的部署到網路中,可以實現對檢測到的威脅進行攔截阻斷,但同時也引入了導致業務故障的風險。

在網路中引入IPS需要考慮如何避免IPS故障導致業務中斷。對於IPS可靠性,可以通過雙機熱備實現故障切換,或者對於透明二層部署的IPS可以通過監控CPU和記憶體利用率在觸發閾值時實現軟體bypass,如果IPS有硬體bypass介面,在部署的時候應該考慮優先使用bypass介面對,這樣在設備掉電時可以實現硬體bypass。此外,IPS作為7層設備,如果串聯進網路中需要在部署前對網路吞吐進行詳細評估,避免IPS成為性能瓶頸。

IPS/IDS需要保持特徵庫和官方最新才能有最好的防護效果。任何一款IPS/IDS都不可避免的存在漏報(false pasitive)和誤報(false negative),漏報需要在有對比的情況下才能評估判斷,而誤報需要及時排除,避免由於頻繁的誤報掩蓋了真實的攻擊資訊。在設備上線初期可以開啟所有規則,然後動作設置為放行並記錄日誌,定期和業務側就日誌進行溝通,將確認是誤報的規則關閉或者放行,一段時間後在基於前期整理的誤報規則重新配置IPS規則。對於IPS誤阻斷業務從業務側的定位方法可參考我之前寫的文章:為什麼伺服器突然回復RST——小心網路中的安全設備

以上描述的都是網路側的入侵檢測和入侵防禦(NIPS、NIDS),HIDS(Host-based Intrusion Detection System)也是防護中不可缺少的一環,尤其是當終端和伺服器之間建立的是HTTPS連接時,NIPS和NIDS基本沒有檢測效果,此時HIDS可以對伺服器上的文件進行掃描,並對主機上的操作進行監控,可以及時發現webshell、後門等威脅。關於HIDS更多的資訊可見保障IDC安全:分散式HIDS集群架構設計

WAF

WAF常見的部署方式有:透明部署、旁路監聽、反向代理。透明部署的優點和IPS一樣,無需改動上下游網路,設備出現異常時可以通過bypass跳過設備保障業務。旁路監聽模式用於對鏡像流量進行審計,和IDS功能類似,不過更專註於Web層的防禦,部分旁路監聽模式的WAF可以通過偽造伺服器地址發給RST報文給終端來實現阻斷惡意攻擊,這需要WAF的響應包比伺服器響應包先到達終端才能實現。反向代理是WAF部署中最常見的部署方式,無論硬體WAF還是軟體WAF都適用,在WAF反向代理的場景下,伺服器對終端呈現的地址是WAF的反代地址。反代部署的優點在於一方面可以通過路由控制只將需要防護的流量指向WAF從而減少無關流量對WAF性能的影響;另一方面,反代模式下,終端和WAF的反代地址建立一個TCP連接,WAF和伺服器建立一個TCP連接,因此可以通過WAF攔截掉4層及以下的攻擊流量。

WAF透明部署的缺點在於所有流量都會經過WAF,WAF會消耗性能對這些流量進行轉發,而且一旦WAF掛死且bypass失敗會導致所有業務中斷,有單點故障風險。旁路部署模式的WAF一般用於威脅監控,部分攻擊需要基於伺服器返回值才能進行判斷,所以在做流量鏡像時需要保證雙向流量都被鏡像到WAF,否則會導致WAF的檢出率下降。反代模式部署時,對外提供的伺服器地址是WAF地址,需要在部署階段考慮WAF的高可用性,避免在WAF故障後業務無法遷移,常見的做法是在出口防火牆上對WAF監聽地址做一次NAT,一旦WAF故障後可以在防火牆上修改映射關係將映射地址指向伺服器地址。此外,由於WAF會作為客戶端向伺服器發起訪問,如果業務並發過大,需要在部署初期考慮到WAF反代時候連接伺服器的地址是否能池化,如果WAF連接伺服器時只有一個地址那麼即使把保留埠(1-1024)用上,最大並發(五元組)也只能是65535個。如果出現伺服器主動發FIN拆除連接的情況,可用並發數會更低。具體請見之前寫的例子:TCP狀態機:當服務端主動發FIN進TIME_WAIT,客戶端源埠復用會發生什麼

作為一個七層設備WAF對Web攻擊的敏感度要遠高於IPS,因此在部署上線初期必然會出現大量的誤報,為了將業務影響降低到最小,可以在上線初期對業務流量僅檢測記錄日誌不阻斷,在手工排除誤報項後定期和業務側對無法確定是否為誤報的項進行溝通,整理出規則例外列表和誤報URL,當規則例外列表中的規則數和誤報URL數趨於穩定後,可以將明細的誤報URL加白,對於規則例外列表中的規則謹慎禁用,將其他規則啟用阻斷後WAF完成上線。特徵庫是WAF識別能力的重要依據,因此需要保持特徵庫最新。建立和業務側的溝通機制及時解決誤阻斷。

VPN

當前最常見的VPN有IPsec、SSLVPN、L2TP等。基於IPsec流量可以通過ESP進行加密保證傳輸的安全性,常用於點對點之間建立加密通道保護數據流。SSLVPN基於SSL提供加密傳輸,可以支援Web接入、TCP接入、IP接入,是遠程辦公的首選方式。L2TP可以封裝2層報文並且能夠提供終端身份認證功能,但是其本書不具有加密能力,因此L2TP常常結合IPsec使用,在提供認證的同時對流量進行加密,主要用於移動終端遠程接入內網。

IPsec部署最大的困難在於需要一一比對建立IPsec隧道的兩端設備的各項參數,基於IKE的IPsec認證中,一階段主要實現雙方互相進行身份認證,以及協商保護二階段所需要使用的加密和認證演算法,二階段主要用於雙方交換IPsec加密相關演算法,協商感興趣流。IPsec建立起來後,對IPSec的維護主要有兩方面的工作:一方面是對於新增業務,需要同時修改兩端的IPSec感興趣流,兩端協商出來的感興趣流是各自感興趣流的交集。另一方面需要防止IPSec隧道異常斷開,異常斷開一般是由於中間鏈路不穩定導致報文被丟棄或者長時間沒有業務流量經過IPSec隧道自然老化,可以通過配置DPD檢測的方式規避此類問題。

SSLVPN有豐富的認證方式,可以在撥號過程中完成多因素身份認證(我是誰、我有什麼、我知道什麼),常見的認證有:用戶名密碼認證、證書認證、簡訊認證等,而用戶名和密碼認證即可以在設備本地完成,也可以將認證數據擺渡到遠端的Radius、LDAP等類型的認證伺服器,基於其返回結果對終端進行動態授權。終端通過SSLVPN進行IP接入後會在終端生成虛擬網卡,該網卡會基於VPN網關設備上配置的策略進行路由下發將匹配的流量轉發到VPN網關處理。在此種場景中需要注意,如果不是所有流量都強制走VPN網關,終端通過域名方式訪問內網資源時,由於終端系統的實現,會輪詢進行DNS查詢,有可能會通過本機物理網卡設置的DNS地址進行解析,進而出現解析失敗或者解析到公網地址的情況。對於此類異常,一般需要強制流量走VPN隧道或者修改終端host來解決。

兩種VPN還有一個共性問題,由於VPN內部封裝的是IP層報文,為了保持一致性,外層VPN報文的IP層一般會複製內層報文IP頭中的FLAG置位情況,也就是說,如果內層報文的DF標誌位置位,外層VPN報文也會將自己的DF標誌位置位。如果內層報文比較大,在經過加密、外層封裝後,整個報文的長度可能大於介面MTU,又由於該報文設置了DF位,因此報文到達出出介面時會由於報文長度大於MTU,而又不允許分片導致報文被丟棄造成業務異常。常見的規避辦法是在VPN設備連接內網資源的介面上或者全局調小TCP MSS 值,減少封裝後報文長度大於MTU的情況出現。但是TCP MSS的值也不宜設置過小,否則會導致文件傳輸速率明顯降低。

(未完…)