本文主要針對同時使用深信服SSL設備和深信服行爲審計設備的情況下,如何在AC行爲審計上同步SSL的用戶登錄信息。
整體思路:
1、SSL部署外置數據中心,通過獲取外置數據中心MYSQL數據庫內的用戶行爲日誌,得到User_Nme和IP_Address字段的對應關係。
2、深信服行爲審計設備使用數據庫認證的單點登錄方式,從數據庫拉取User_Nme和IP_Address字段的對應關係
實現方式和部署方式
一、設備基礎環境部署
1、SSL設備部署特別需要注意,SSL後的流量不能做NAT,需要讓用戶流量攜帶真實的虛擬IP作爲源IP在網內進行轉發。
登錄SSL 網關,系統設置>SSL 選項>系統選項>資源服務選項
根據你使用的隧道方式,將WEB應用,TCP應用,L3應用的資源訪問模式,設置爲使用分配的虛擬IP地址作爲源地址*。不知道用啥方式的就把三個都改了。
2、做好IP地址段規劃,配置虛擬IP池的配置。此網段是用戶連接後獲取的客戶端地址,正常情況下應規劃爲內網網段。不要亂用公網地址段。
3、全網核心或其他三層路由設備需要配置靜態路由,將SSL用戶網段路由下一條指向SSL網關設備。
ip route-static 10.0.11.0 24 10.0.20.250
ip route-static 10.0.12.0 24 10.0.20.250
ip route-static 10.0.13.0 24 10.0.20.251
ip route-static 10.0.14.0 24 10.0.20.251
ip route-static SSL用戶地址 掩碼 SSL設備內網地址
4、配置好行爲審計設備。在行爲審計上可以抓到用戶通過行爲審計設備後的流量。可以結合實際網絡方案選擇鏡像流量送到AC,或者直接把AC串在骨幹鏈路上。
行爲審計設備能看到流量和在線用戶就可以了
現在,我們要做的事情的意義就來了
行爲審計默認以IP地址或者MAC地址作爲用戶名,看不到是哪個用戶在使用這個IP
二、SSL外置數據中心部署
深信服提供一個外置數據中心的軟件,可以接受SSL的用戶日誌並寫入數據庫。
1、下載安裝
http://download.sangfor.com.cn/download/product/sslvpn/SSLVPN_DC_5.7_SP2_for_Windows2008&2012.exe.7z
找一臺windows server 2012的服務器裝上就好了。
部署手冊:
https://bbs.sangfor.com.cn/plugin.php?id=sangfor_databases:index&mod=viewdatabase&tid=26478
2、SSL配置連接到外置數據中心,確保windows的防火牆放行相關端口,確保連接數據中心的PSK是正確的。
3、外置數據中心web控制檯使用https://IP 方式登錄,系統管理員的用戶名和密碼默認是Admin、Admin。注意用戶名區分大小寫。
4、確認設備連接狀態正常,確認“外置數據中心”可以獲取目前用戶的連接日誌。
到這爲止,外置數據中心正常工作。用戶的訪問流量日誌記錄到此服務器的一臺本地MySQL數據庫裏。
三、連接並處理SSL外置數據中心數據庫
1、連接數據庫
目前深信服最新的Windows Server版本外置數據中心的數據庫連接信息如下:
MYSQL路徑:
C:\Program Files (x86)\Sangfor\SSL\LogKeeper\mysql
用戶名:root
密碼:root
端口:1126
2、外置數據中心管理的每一個節點,都會在MySQL內建立一個數據庫。
每個node數據庫下的usrbasiclog
表記錄了該節點對應的SSL網關設備上用戶訪問的行爲日誌。
該表的關鍵字段:
record_id
:日誌記錄序號
User_name
:登錄用戶名
addrtess
:二進制轉整形格式的IP地址
log_time
:日誌記錄的時間戳
message
:日誌文本體
user_action
:日誌行爲類型(登錄/註銷/訪問資源)
3、獲取用戶名和IP地址對應關係
整體思路是獲取最近120分鐘之內,每個IP地址最近的一條日誌中的User_name
(select user_name,INET_NTOA(address),log_time
from
(select * from node3.usrbasiclog
where user_action=3 and TIMESTAMPDIFF(MINUTE,LOG_TIME,now())<120
ORDER BY user_name,address,log_time DESC) a
GROUP BY a.address
)
需要注意的幾點:
1、TIMESTAMPDIFF(MINUTE,LOG_TIME,now())<120
表示獲取最近120分鐘的記錄,如果一個IP120分鐘沒有產生任何新日誌,這個用戶基本就是下線了。此時間與AC行爲審計設備中的,用戶無流量超時下線時間配置一樣即可。
2、user_action=3
User_action字段表示日誌類型,1表示上線,-1表示下線,3表示訪問資源。
3、INET_NTOA(address)
將INT格式的IP地址轉換成點分十進制格式的字符串。
4、創建查詢視圖
到此爲止,已經可以獲取IP地址和用戶名的對應關係了,但是上面這段SQL是不能直接用於創建視圖的。MySQL的視圖不支持嵌套子查詢。
修改SQL語句使用左連接,並提前創建子視圖。
CREATE VIEW `sinforglobaldb`.`max_record_node3` AS
SELECT
MAX( record_id ) AS record_id
FROM
node3.usrbasiclog
WHERE
user_action = 3
AND TIMESTAMPDIFF(
MINUTE,
LOG_TIME,
now())< 120
GROUP BY
address
ORDER BY
record_id;
#獲取每個IP地址的最新的記錄的recore_id
CREATE VIEW `sinforglobaldb`.`user_ip_node3` AS SELECT
tba.record_id,
tbb.user_name,
INET_NTOA( tbb.address ) as address,
tbb.log_time
FROM
max_record_node3 tba
LEFT JOIN node3.usrbasiclog tbb ON tba.record_id = tbb.record_id;
#左連接剛剛創建的max_record_node3和usrbasiclog。獲取最新record_id對應的用戶信息
5、創建多個節點的UNION連接視圖
如果,你的外置數據中心有多個節點,最終通過UNION把多個node的查詢結果連接起來
CREATE VIEW `sinforglobaldb`.`user_cpn_ip` AS
SELECT
user_name,address
FROM
user_ip_node3
UNION ALL
SELECT
user_name,address
FROM
user_ip_node4;
最終,我們得到了user_cpn_ip
這個視圖,就是我們需要的最終查詢視圖。
四、AC行爲審計設備獲取用戶連接信息
1、添加SSL外置數據中心的數據庫作爲外部認證數據庫
2、添加單點登錄服務器配置
數據庫服務器選擇剛纔新添加的數據庫服務器
查詢語句:select * from user_cpn_ip
3、配置單點登錄策略
適用範圍填寫用戶連接後的地址段。
之前強烈要求用戶流量不能過NAT,需要攜帶連接後的虛擬IP作爲源IP參與轉發,就是爲了保證,行爲審計上可以看到用戶虛擬IP的流量。
認證方式選項卡內,認證方式選擇單點登錄。同時單點登錄失敗的用戶配置使用以IP地址作爲用戶名。
配置完成之後,目前到達行爲審計設備的流量,會觸發此條認證策略創建用戶。
並且,創建用戶的時候,會通過之前關聯的認證數據庫,自動獲取用戶名!!
階段性勝利!!!!
五、配置外置數據中心數據庫更新時間
SSL 外置數據中心日誌同步是實時同步,但是外置數據中心用戶資源訪問日誌會先緩存到文件中,然後再把文件整體導入到mysql中。默認緩存的時間間隔是10分鐘。所以在外置數據中心查詢日誌需要10分鐘之後才能查詢,因此用戶連接後會存在10分鐘的時間無法獲取連接用戶名。
解決方式:
1、找到配置文件目錄:
C:\Program Files\Sangfor\SSL\LogKeeper\slbs\Config\SlbsAdv.conf,修改DataFilterUserTime字段的值爲1,默認爲10 ,單位爲分鐘
2、修改保存之後重啓LogKeeper服務