安全策略增量加速之對象

1. 前言

在實際防火牆中,可能存在着海量的安全策略,傳統的逐個規則進行檢查不再能滿足防火牆在高性能方面的需求。因此,需要提出一種快速匹配算法來提升安全策略的匹配性能,這種快速匹配算法需要解決如下問題:

  • 功能正確:功能與逐個規則匹配結果一致;
  • 匹配高效:匹配性能不能隨配置量增加而明顯降低;
  • 快速生效:配置變更後需要做到立刻生效;
  • 增量構建:配置變更時不需要完全重新構建;

安全策略中的過濾條件大體可以分爲IP地址類、服務端口類、對象類等,我們將分別進行探討其加速機制,並嘗試逐步完成加速代碼的實現(CentOS C++)。理論上,同等功能的C代碼實現能做到更優性能,但由於業餘時間有限而採用C++實現也是一種無奈的妥協。受水平所限,文章觀點未必爲此問題之最優解,文章和代碼也難免可能會存在錯誤或紕漏,還請不吝指出。本文先從對象加速機制入手。

2. 拋出問題

在討論正題前,我們先假設防火牆上存在如下配置:

策略名稱 優先級 IP地址 端口 用戶 動作
policy1  1 192.168.1.0/24 80 user1 permit
policy2 2 192.168.1.0/24 80 user2,user3 deny
policy3 3 192.168.1.0/24 443 user2,user5 permit
... ... ... ... ... ...
policy49999 49999 192.168.1.0/24 23 user1,user49999 pass
policy50000 50000 192.168.1.0/24 23 any deny

我們設定每個用戶都有唯一標識ID,關於流量如何識別用戶身份不在本文的討論範圍。關於IP地址類、服務端口類快速匹配算法,以及多種匹配條件之間如何協作,我們會在後面的專題中逐一討論。本文要解決的問題是:如何根據用戶ID快速找到所有此能匹配此用戶的安全策略。

針對上述配置我們需要解決如下問題:

輸入用戶ID 輸出此用戶能匹配的規則列表
user1(ID) policy1, policy49999, policy50000
user2(ID) policy2, policy3, policy50000
user3(ID) policy2, policy50000
... ...
user49999(ID) policy49999, policy50000
user50000(ID) policy50000

 

待續(2024/4/29)

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章