一種基於TCP選項的單包授權驗證方法與流程
2023-07-12 14:05:18 3
一種基於tcp選項的單包授權驗證方法
技術領域
1.本發明涉及網絡安全技術領域,具體涉及一種基於tcp(傳輸控制協議)選項的單包授權驗證方法。
背景技術:
2.目前在軟體定義邊界(sdp)的單包授權驗證(spa)場景下,通常採用以下幾種方式驗證tcp客戶端的身份和權限:
3.一、客戶主機生成spa認證負荷,將spa認證負荷作為udp協議或者icmp協議的傳輸負荷,將spa所在報文發送給服務主機進行驗證授權,授權驗證通過後服務主機會允許認證來源tcp客戶端允許訪問的目標埠,tcp客戶端發起對目標埠的tcp連接請求資源。
4.該方案由於在tcp客戶端初始化tcp連接前,增加獨立的udp協議或者icmp協議報文進行spa認證步驟,導致客戶主機與服務主機交互時間增加。
5.二、客戶主機與服務主機完成三次tcp握手,基於已建立的tcp連接生成spa認證負荷,將spa所在報文發送給服務主機進行驗證授權,授權通過後後續tcp報文允許認證來源tcp客戶端能夠請求資源,否則斷開tcp連接。
6.該技術方案存在的缺陷是服務主機tcp目標埠無法被隱藏且對於所有tcp應用層交互都需較大改造,具體體現為:
7.(1)tcp客戶端初始化tcp連接前未授權驗證,直接開放tcp服務端目標埠被訪問,可能導致syn泛洪攻擊、ack泛洪攻擊等安全隱患。
8.(2)tcp連接建立後增加spa認證負荷驗證,需要對原有tcp應用層交互改造,增加獨立spa認證報文傳輸步驟,導致客戶主機與服務主機交互時間增加。
9.三、客戶主機與服務主機完成三次tcp握手,基於tcp上層協議進行擴展,如在http請求初始化時將spa認證負荷存儲在http請求中、在https請求初始化tls時將spa認證負荷存儲在tls握手的擴展欄位中,將spa所在報文發送服務主機進行驗證授權,授權通過後後續tcp報文允許認證來源tcp客戶端能夠請求資源。
10.該方案由於tcp客戶端初始化tcp連接前未授權驗證,直接開放tcp服務端目標埠被訪問,可能導致syn泛洪攻擊、ack泛洪攻擊等安全隱患。
技術實現要素:
11.本發明所要解決的技術問題是:提出一種基於tcp選項的單包授權驗證方法,解決在軟體定義邊界的場景下引入單包授權驗證導致交互時間增加、tcp應用流程改造度較大、無法較好隱藏服務主機tcp目標埠的問題。
12.本發明解決上述技術問題採用的技術方案是:
13.一種基於tcp選項的單包授權驗證方法,應用於包括客戶主機和服務主機的系統中,所述客戶主機中部署有tcp客戶端,所述tcp客戶端中安裝有tcp客戶端spa內核模塊;所述服務主機中部署有tcp服務端,所述tcp服務端中安裝有tcp服務端spa內核模塊;
14.該方法包括以下步驟:
15.s1、通過tcp客戶端輸入訪問tcp服務端的地址和埠,發起tcp連接的初始化操作,生成tcp syn報文;
16.s2、tcp客戶端spa內核模塊檢測到tcp syn報文,當基於策略判斷需要對該tcp syn報文添加spa認證負荷時,生成spa認證負荷填充至tcp自定義選項,重新計算報文的校驗和填充,然後將報文發送給服務主機;
17.s3、tcp服務端spa內核模塊接收到tcp報文時,驗證該連接是否已通過校驗,若是,則進入步驟,否則,進入步驟s4;
18.s4、tcp服務端spa內核模塊判定當前tcp報文為tcp syn報文時,則對tcp報文信息中spa認證負荷進行提取,若提取到spa認證負荷,則進入步驟s5,否則,根據當前場景配置對該tcp報文執行對應的操作;
19.s5、tcp服務端spa內核模塊驗證提取到的所述spa認證負荷,若驗證通過,則進入步驟s6,否則,根據當前場景配置對該tcp報文執行對應的操作;
20.s6、tcp服務端spa內核模塊將對應tcp連接加入到已通過校驗哈希表中,並放行該tcp報文;
21.s7、tcp客戶端與tcp服務端進行握手建立tcp連接,tcp客戶端可通過tcp協議訪問tcp服務端上的資源。
22.進一步的,步驟s4中,所述根據當前場景配置對該tcp報文執行對應的操作,具體包括:若當前場景配置為強制檢查spa認證負荷,則丟棄當前tcp報文;若當前場景配置為不強制檢查spa認證負荷,則執行步驟s6。
23.進一步的,步驟s5中,所述根據當前場景配置對該tcp報文執行對應的操作,具體包括:若當前場景配置為強制檢查spa認證負荷,則丟棄當前tcp報文;若當前場景配置為不強制檢查spa認證負荷,則執行步驟s6。
24.進一步的,該方法還包括步驟:
25.s9、當tcp服務端spa內核模塊檢測到tcp連接關閉或者tcp連接超時,則將該tcp連接從已通過校驗哈希表中刪除。
26.進一步的,步驟s3中,所述tcp服務端spa內核模塊接收到tcp報文時,驗證該連接是否已通過校驗,具體包括:tcp服務端spa內核模塊基於tcp報文中的源ip、源埠、目的ip、目的埠、協議五元組進行哈希計算,驗證對應連接是否在已通過校驗哈希表中。
27.本發明的有益效果是:
28.通過在tcp客戶端中安裝的tcp客戶端spa內核模塊檢測從客戶主機發出的tcp syn報文,將spa認證負荷添加到符合需求的tcp syn報文的tcp選項中,並重新計算報文校驗和,發送給服務主機,網絡傳輸不受兼容性影響;
29.通過在tcp服務端中安裝的tcp服務端spa內核模塊檢測服務主機收到的tcp報文,基於五元組信息快速放行已驗證會話,並基於tcp syn報文中自定義選項,檢測tcp客戶端spa內核模塊的流量,提取tcp選項中spa認證負荷並驗證,驗證通過則放行tcp syn報文建立完整tcp連接,驗證失敗則丟棄tcp syn報文,因為丟棄tcp連接syn報文導致tcp syn握手超時,不會暴露業務資源埠;且在業務資源未安裝tcp服務端spa內核模塊時,自定義tcp選項也不影響正常訪問交互。
30.基於上述,本發明的方案能夠在不對現有tcp服務應用層進行任何修改的情況下驗證spa認證負荷,提升較大的驗證效率和場景適應性能。
附圖說明
31.圖1為本發明實施例中的資源訪問系統圖;
32.圖2為本發明實施例中的基於tcp選項的單包授權驗證方法流程圖。
具體實施方式
33.本發明旨在提出一種基於tcp選項的單包授權驗證方法,解決在軟體定義邊界的場景下引入單包授權驗證導致交互時間增加、tcp應用流程改造度較大、無法較好隱藏服務主機tcp目標埠的問題。本發明在tcp客戶端中安裝tcp客戶端spa內核模塊,在tcp服務端中安裝tcp服務端spa內核模塊,兩個內核模塊在內核層並行處理自定義tcp選項中spa認證負荷和tcp連接交互,具體而言,tcp客戶端spa內核模塊檢測從客戶主機發出的tcp syn報文,將spa認證負荷添加到符合需求的tcp syn報文的tcp選項中,並重新計算報文校驗和,發送給服務主機,tcp服務端spa內核模塊檢測服務主機收到的tcp報文,基於五元組信息快速放行已驗證會話,並基於tcp syn報文中自定義選項,檢測tcp客戶端spa內核模塊的流量,提取tcp選項中spa認證負荷並驗證,驗證通過則放行tcp syn報文建立完整tcp連接,驗證失敗則丟棄tcp syn報文。
34.實施例:
35.本實施例中的資源訪問系統如圖1所示,其包括客戶主機和服務主機,所述客戶主機中部署有tcp客戶端,所述tcp客戶端中安裝有tcp客戶端spa內核模塊;所述服務主機中部署有tcp服務端,所述tcp服務端中安裝有tcp服務端spa內核模塊;在進行資源訪問時,客戶主機與服務主機之間通過tcp客戶端spa內核模塊和tcp服務端spa內核模塊進行交互,具體而言:
36.tcp客戶端spa內核模塊:檢測從客戶主機發出的tcp syn報文,將spa認證負荷添加到符合需求的tcp syn報文的tcp選項中,並重新計算報文校驗和,發送給服務主機;
37.tcp服務端spa內核模塊:檢測服務主機收到的tcp報文,基於五元組信息快速放行已驗證會話,並基於tcp syn報文中自定義選項,檢測tcp客戶端spa內核模塊的流量,提取tcp選項中spa認證負荷並驗證,驗證通過則放行tcp syn報文建立完整tcp連接,驗證失敗則丟棄tcp syn報文。
38.基於上述資源訪問系統,本實施例提供的基於tcp選項的單包授權驗證方法流程如圖2所示,其包括以下步驟:
39.1、通過tcp客戶端輸入訪問tcp服務端地址和埠,發起tcp連接的初始化操作,生成tcp syn報文;
40.2、tcp客戶端spa內核模塊檢測到tcp客戶端發起對tcp服務端的訪問產生的tcp syn報文,基於策略判斷需要對該tcp syn報文添加spa認證負荷,模塊生成spa認證負荷填充入tcp自定義選項,重新計算報文的校驗和填充,將tcp syn報文發送給服務主機;
41.3、tcp服務端spa內核模塊接收到tcp報文(不僅限於tcp syn報文),基於源ip、源埠、目的ip、目的埠、協議五元組進行哈希,驗證該連接是否在已通過校驗哈希表,如果
存在,則進入第9步;
42.4、tcp服務端spa內核模塊檢測當前tcp報文為syn報文,則對tcp報文信息中spa認證負荷進行提取,基於場景配置有如下兩種流程:
43.增強安全性場景下:設置強制檢查spa認證負荷,tcp報文信息中無spa認證負荷,則丟棄當前tcp報文,結束整個流程;tcp報文信息中有spa認證負荷,則進入第5步;
44.增強現有服務兼容性場景下:設置不強制檢查spa認證負荷,tcp報文信息中沒有spa認證負荷,設置校驗結果為spa未驗證通過但允許連接,然後進入第6步;tcp報文信息中有spa認證負荷,則進入第5步;
45.5、tcp服務端spa內核模塊驗證spa認證負荷,基於場景配置有如下兩種流程:
46.增強安全性場景下:設置強制檢查spa認證負荷,spa認證負荷未通過校驗,則丟棄當前tcp報文,結束整個流程;spa認證負荷通過校驗,設置校驗結果為spa驗證通過,然後進入第6步;
47.增強現有服務兼容性場景下:設置不強制檢查spa認證負荷,spa認證負荷未通過校驗,設置校驗結果為spa未驗證通過但允許連接,然後進入第6步;spa認證負荷通過校驗,設置校驗結果為spa驗證通過,然後進入第6步;
48.6、tcp服務端spa內核模塊基於源ip、源埠、目的ip、目的埠、協議五元組進行哈希,將該連接加入到已通過校驗哈希表(分成spa驗證通過和spa未驗證通過但允許連接兩類),並放行當前tcp報文;
49.7、tcp服務端生成tcp連接syn+ack標誌報文,發送給tcp客戶端;
50.8、tcp客戶端接收到tcp服務端syn+ack標誌報文,並生成syn+ack報文,發送給tcp服務端;
51.9、tcp服務端spa內核模塊接收到tcp報文,基於源ip、源埠、目的ip、目的埠、協議五元組進行哈希,驗證該連接在已通過校驗哈希表,則不再額外處理,完成tcp客戶端與tcp服務端的三次握手;
52.10、tcp客戶端請求資源,tcp服務端返回對應請求資源;
53.11、tcp客戶端關閉與tcp服務端的tcp連接;
54.12、tcp服務端spa內核模塊檢測到該連接已經關閉或者超時,從已通過校驗哈希表刪除,後續請求需要重新通過spa驗證。
55.最後應當說明的是,上述實施例僅是優選實施方式,並不用以限制本發明。應當指出,對於本技術領域的普通技術人員來說,在不脫離本發明宗旨和權利要求所保護的範圍情況下,還可以做出若干修改,等同替換、改進等,均應包含在本發明的保護範圍之內。