一種入侵防御系統的引擎檢測數據更新方法及裝置制造方法
【專利摘要】本發明公開了一種入侵防御系統的引擎檢測數據更新方法及裝置,屬于計算機網絡通信安全領域,所述方法包括:對入侵防御系統更新后的規則庫進行解析,在內存中生成新的引擎檢測數據;將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據,使得檢測引擎采用所述新的引擎檢測數據。本發明先在內存中生成新的引擎檢測數據,然后直接將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據,便可實現通過檢測引擎的報文所采用的是新的引擎檢測數據,從而實現了引擎檢測數據更新的無縫切換,避免了入侵防御系統的引擎檢測數據更新過程中需要暫停報文通過檢測引擎,從而有效防止病毒攻擊。
【專利說明】一種入侵防御系統的引擎檢測數據更新方法及裝置
【技術領域】
[0001]本發明屬于計算機網絡通信安全領域,尤其涉及一種入侵防御系統的引擎檢測數據更新方法及裝置。
【背景技術】
[0002]隨著電腦的廣泛應用和網絡的不斷普及,來自網絡內部和外部的危險和犯罪也日益增多。如今,不僅病毒數量劇增,質量提高,而且通過網絡快速傳播,在短短的幾小時內就能傳遍全世界。有的病毒還會在傳播過程中改變形態,使防毒軟件失效。傳統防火墻加入侵檢測系統(Intrus1n Detect1n Systems,簡稱IDS)的技術已經無法應對一些新的網絡威脅。在這種情況下,入侵防御系統(Intrus1n Prevent1n System,簡稱IPS)技術應運而生,IPS可以深度感知并主動檢測流經該IPS的報文,對惡意報文進行丟棄以阻斷攻擊,對濫用報文進行限流以保護網絡帶寬資源。
[0003]入侵防御系統主要有兩個部分組成:檢測引擎和規則庫,前者是報文深度檢測的框架流程,后者被解析加載生成引擎檢測數據,作為插件嵌入檢測引擎中。入侵防御系統的攻擊事件識別率取決于規則庫的完備性,規則庫根據新漏洞的出現需要不定期更新升級。目前的入侵防護系統在引擎檢測數據更新時,需要在入侵防御系統的引擎檢測數據更新過程中暫停報文通過檢測引擎,等引擎檢測數據更新完成后,再開啟引擎檢測功能,這將使設備在這段時間處于無防御狀態,有可能在引擎檢測數據更新期間放過攻擊事件,造成入侵攻擊。
【發明內容】
[0004]為解決入侵防御系統的引擎檢測數據更新過程中需要暫停報文通過檢測引擎有可能造成病毒攻擊的問題,本發明提供了一種入侵防御系統的引擎檢測數據更新方法,所述方法包括:
[0005]對入侵防御系統更新后的規則庫進行解析,在內存中生成新的引擎檢測數據;
[0006]將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據,使得檢測弓I擎采用所述新的引擎檢測數據。
[0007]其中,將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據后,還包括:
[0008]釋放所述原弓I擎檢測數據。
[0009]其中,將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據后,還包括:
[0010]先等待預設時間,再釋放所述原引擎檢測數據。
[0011]其中,在內存中生成新的引擎檢測數據后,還包括:
[0012]通過第一指針指向所述新的引擎檢測數據;
[0013]將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據具體包括:
[0014]將所述第一指針的值賦給所述全局指針。
[0015]其中,將所述第一指針的值賦給所述全局指針前,還包括:
[0016]將所述全局指針的值賦給第二指針;
[0017]釋放所述原引擎檢測數據具體包括:
[0018]釋放所述第二指針所指向地址中的數據。
[0019]本發明還公開了一種入侵防御系統的引擎檢測數據更新裝置,所述裝置包括:
[0020]解析生成模塊,用于對入侵防御系統更新后的規則庫進行解析,在內存中生成新的引擎檢測數據;
[0021]指向修改模塊,用于將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據,使得檢測弓I擎采用所述新的引擎檢測數據。
[0022]其中,所述指向修改模塊,還用于釋放所述原弓I擎檢測數據。
[0023]其中,所述指向修改模塊,還用于先等待預設時間,再釋放所述原引擎檢測數據。
[0024]其中,所述解析生成模塊,還用于通過第一指針指向所述新的引擎檢測數據;
[0025]所述指向修改模塊包括:
[0026]指針賦值子模塊,用于將所述第一指針的值賦給所述全局指針。
[0027]其中,所述解析生成模塊,還用于將所述全局指針的值賦給第二指針;
[0028]所述指向修改模塊包括:
[0029]地址釋放子模塊,用于釋放所述第二指針所指向地址中的數據。
[0030]本發明先在內存中生成新的引擎檢測數據,然后直接將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據,便可實現通過檢測引擎的報文所采用的是新的引擎檢測數據,從而實現了引擎檢測數據更新的無縫切換,避免了入侵防御系統的引擎檢測數據更新過程中需要暫停報文通過檢測引擎,從而有效防止病毒攻擊。
【專利附圖】
【附圖說明】
[0031]通過參考附圖會更加清楚的理解本發明的特征和優點,附圖是示意性的而不應理解為對本發明進行任何限制,在附圖中:
[0032]圖1是本發明一種實施方式的引擎檢測數據更新方法的流程圖;
[0033]圖2是本發明一種實施例的全局指針切換之前指向示意圖;
[0034]圖3是本發明一種實施例的全局指針切換之后指向示意圖;
[0035]圖4是本發明一種實施方式的引擎檢測數據更新裝置的結構框圖
【具體實施方式】
[0036]下面結合附圖和實施例,對本發明的【具體實施方式】作進一步詳細描述。以下實施例用于說明本發明,但不用來限制本發明的范圍。
[0037]圖1是本發明一種實施方式的引擎檢測數據更新方法的流程圖;參照圖1,所述方法包括以下步驟:
[0038]101:對入侵防御系統更新后的規則庫進行解析,在內存中生成新的引擎檢測數據;
[0039]本實施方式中,在執行步驟101時,檢測引擎仍采用原引擎檢測數據對報文進行檢測。
[0040]102:將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據,使得檢測弓I擎采用所述新的引擎檢測數據。
[0041]為便于對入侵防御系統更新后的規則庫進行解析,在本實施方式中,步驟101中,對入侵防御系統更新后的規則庫進行解析之前,還包括:接收待更新規則文件,并通過所述待更新規則文件對入侵防御系統的規則庫進行更新。
[0042]在檢測引擎采用所述新的引擎檢測數據后,原引擎檢測數據仍然存在于內存中,占用了一定的內存空間,為提高內存使用率,優選地,步驟101中,將指向原引擎檢測數據的全局指針修改為指向所述新的弓I擎檢測數據后,還包括:
[0043]釋放所述原弓I擎檢測數據。
[0044]特別的,對于多核架構的設備,在釋放所述原引擎檢測數據之前需要睡眠一段時間,例如I秒鐘,以便可以讓全局指針修改為指向所述新的引擎檢測數據之前,已經開始通過檢測引擎的報文能夠完全檢測完成,從而避免訪問空指針,造成報文漏檢,優選地,步驟101中,將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據后,還包括:
[0045]先等待預設時間,再釋放所述原弓I擎檢測數據。
[0046]為便于實現全局指針修改為指向所述新的引擎檢測數據,優選地,
[0047]步驟101中,在內存中生成新的引擎檢測數據后,還包括:
[0048]通過第一指針指向所述新的引擎檢測數據;
[0049]步驟102中,將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據具體包括:
[0050]將所述第一指針的值賦給所述全局指針。
[0051]為便于釋放所述原引擎檢測數據,優選地,步驟102中,將所述第一指針的值賦給所述全局指針前,還包括:
[0052]將所述全局指針的值賦給第二指針;
[0053]步驟102中,釋放所述原引擎檢測數據具體包括:
[0054]釋放所述第二指針所指向地址中的數據。
[0055]通常的,規則庫中的規則協議包括TCP、UDP、ICMP和IP協議等。相應的,上述全局指針也為對應不同的規則協議的多個全局指針。例如,TCP協議對應的全局指針為8_pstPrmTcpRTNX、UDP協議對應的全局指針為g_pstPrmUdpRTNX、ICMP協議對應的全局指針為g_pstPrmIcmpRTNX、IP協議對應的全局指針為g_pstPrmIpRTNX。本實施方式僅為舉例說明,不對其進行限定。
[0056]下面以TCP協議為例來說明本發明,但不限定本發明的保護范圍。設TCP協議對應的全局指針為g_pstPrmTcpRTNX,該全局指針g_pstPrmTcpRTNX指向TCP協議對應的原引擎檢測數據。規則庫中所有TCP協議的規則都被解析到全局指針g_pStPrmTCpRTNX指向的引擎檢測數據中,所述引擎檢測數據包含端口組,端口組包括由規則庫解析得到包含特定端口信息的規則生成的規則樹節點(Rule Tree Node,RTN)和選項樹節點(Opt1n TreeNode, OTN)結構。該引擎檢測數據占用的內存都是動態分配的。
[0057]如圖2所示,檢測引擎根據全局指針g_pStPrmTCpRTNX采用原引擎檢測數據對報文進行檢測。若此時入侵防御系統的規則庫被更新,則對更新后的數據庫進行解析,在內存中生成新的引擎檢測數據,并由第一指針g_pstPrmTcpRTNXNew指向所述新的引擎檢測數據。
[0058]新的引擎檢測數據生成之后,通過以下步驟將全局指針g_p StPrmTcpRTNX修改為指向所述新的引擎檢測數據,使得檢測引擎采用所述新的引擎檢測數據,其中g_pstPrmTcpRTNXOld為臨時指針變量:
[0059]I)將所述全局指針 g_pstPrmTcpRTNX 的值賦給第二指針 g_pstPrmTcpRTNX01d,即:
[0060]g_pstPrmTcpRTNX01d = g_pstPrmTcpRTNX ;
[0061]2)將所述第一指針g_pstPrmTcpRTNXNew的值賦給所述全局指針g_pstPrmTcpRTNX,即:
[0062]g_pstPrmTcpRTNX = g_pstPrmTcpRTNXNew ;
[0063]將全局指針g_pstPrmTcpRTNX修改為指向所述新的引擎檢測數據之后,指針指向如圖3所示,報文經過入侵防御系統的檢測引擎時,檢測引擎所采用的引擎檢測數據已經變為由g_pstPrmTcpRTNX指向的新的引擎檢測數據。最后,釋放由g_pstPrmTcpRTNX01d指向地址中的原引擎檢測數據。
[0064]其它協議如UDP、ICMP及IP和TCP協議規則切換方式相同。
[0065]本發明還公開了一種入侵防御系統的引擎檢測數據更新裝置,參照圖4,所述裝置包括:
[0066]解析生成模塊,用于對入侵防御系統更新后的規則庫進行解析,在內存中生成新的引擎檢測數據;
[0067]指向修改模塊,用于將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據,使得檢測弓I擎采用所述新的引擎檢測數據。
[0068]優選地,所述指向修改模塊,還用于釋放所述原弓丨擎檢測數據。
[0069]優選地,所述指向修改模塊,還用于先等待預設時間,再釋放所述原引擎檢測數據。
[0070]優選地,所述解析生成模塊,還用于通過第一指針指向所述新的引擎檢測數據;[0071 ] 所述指向修改模塊包括:
[0072]指針賦值子模塊,用于將所述第一指針的值賦給所述全局指針。
[0073]優選地,所述解析生成模塊,還用于將所述全局指針的值賦給第二指針;
[0074]所述指向修改模塊包括:
[0075]地址釋放子模塊,用于釋放所述第二指針所指向地址中的數據。
[0076]以上實施方式僅用于說明本發明,而并非對本發明的限制,有關【技術領域】的普通技術人員,在不脫離本發明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術方案也屬于本發明的范疇,本發明的專利保護范圍應由權利要求限定。
【權利要求】
1.一種入侵防御系統的引擎檢測數據更新方法,其特征在于,所述方法包括: 對入侵防御系統更新后的規則庫進行解析,在內存中生成新的引擎檢測數據; 將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據,使得檢測引擎采用所述新的引擎檢測數據。
2.根據權利要求1所述方法,其特征在于,將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據后,還包括: 釋放所述原引擎檢測數據。
3.根據權利要求2所述方法,其特征在于,將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據后,還包括: 先等待預設時間,再釋放所述原引擎檢測數據。
4.根據權利要求2或3所述方法,其特征在于,在內存中生成新的引擎檢測數據后,還包括: 通過第一指針指向所述新的引擎檢測數據; 將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據具體包括: 將所述第一指針的值賦給所述全局指針。
5.根據權利要求4所述方法,其特征在于,將所述第一指針的值賦給所述全局指針前,還包括: 將所述全局指針的值賦給第二指針; 釋放所述原引擎檢測數據具體包括: 釋放所述第二指針所指向地址中的數據。
6.一種入侵防御系統的引擎檢測數據更新裝置,其特征在于,所述裝置包括: 解析生成模塊,用于對入侵防御系統更新后的規則庫進行解析,在內存中生成新的引擎檢測數據; 指向修改模塊,用于將指向原引擎檢測數據的全局指針修改為指向所述新的引擎檢測數據,使得檢測弓I擎采用所述新的引擎檢測數據。
7.根據權利要求6所述裝置,其特征在于,所述指向修改模塊,還用于釋放所述原引擎檢測數據。
8.根據權利要求7所述裝置,其特征在于,所述指向修改模塊,還用于先等待預設時間,再釋放所述原引擎檢測數據。
9.根據權利要求7或8所述裝置,其特征在于,所述解析生成模塊,還用于通過第一指針指向所述新的引擎檢測數據; 所述指向修改模塊包括: 指針賦值子模塊,用于將所述第一指針的值賦給所述全局指針。
10.根據權利要求9所述裝置,其特征在于,所述解析生成模塊,還用于將所述全局指針的值賦給第二指針; 所述指向修改模塊包括: 地址釋放子模塊,用于釋放所述第二指針所指向地址中的數據。
【文檔編號】G06F21/55GK104184725SQ201410369612
【公開日】2014年12月3日 申請日期:2014年7月25日 優先權日:2014年7月25日
【發明者】胡波 申請人:漢柏科技有限公司