公司爲增強網絡信息安全管理,監控並審計用戶網絡行爲(WEB應用、遊戲、P2P、IM、數據庫、遠程訪問、FTP等),計劃完成網絡行爲管理系統實施。
1.背景
A.當前公司網絡核心設備是H3C 7506E-S,雙電源雙引擎,上了防火牆板和交換板。因此要實施網絡行爲管理系統,到底以何種方式接入是個頭痛的問題;
B.用戶接入網絡使用H3C的Portal認證。
2.選型
首次邀約的供應商包括:網康科技、杭州迪普科技、上海互普。深信服以前有接觸過,他們產品經理連本身產品功能也講不清楚,價格也不便宜,本次就不考慮了。
至日誌發佈時止,已通過「講方案 > 功能測試 > 性能測試 」 三個階段,入圍的是:杭州迪普科技、上海互普。商務談判、實施還在進行中。
3.接口開發
幾家供應商的系統都有本身有用戶管理模塊。咱們300多接入用戶,近千MAC地址,若是在IMC系統和網絡行爲管理系統中都維護一次,人力成本過高。加之IMC爲JAVA寫的WEB系統,開通一個帳號還要切換幾個頁面,操做起來也不簡捷。因此我考慮開發一個工具將這些數據統一塊兒來管理,同時實現IMC用戶管理的功能,提升工做效率。
開發目標:
A.程序實現IMC用戶管理:平臺用戶的建立、接入用戶建立、服務開通、服務註銷、接入用戶密碼修改、接入用戶最大鏈接數修改、用戶綁定MAC地址增長和刪除。
B.同步用戶、MAC地址至網絡行爲管理系統。
3.1 實現IMC用戶管理功能
首先,Profiler了一下IMC用戶管理的整個過程,涉及2個數據庫2個架構5張表:
平臺用戶:config_db.imc_config.tbl_user
接入用戶:ead.ead.TBL_ACM_USER
接入服務:ead.ead.TBL_ACM_SERVICE
產品:ead.ead.TBL_USER_PRODUCTS
MAC地址:ead.ead.TBL_USER_IP_MAC_INFO
其關係以下圖(下圖爲本人自行繪製,僅列出關鍵字段,外鍵名爲繪製時系統生成):
IMC系統中操做步驟爲:建立平臺用戶 > 建立接入用戶 > 開通服務,參照此過程,開發實現過程以下:
建立平臺用戶:計劃將certification(IMC中爲證件號)利用起來,能夠看成接入用戶登陸名。
建立接入用戶:直接將建立的平臺用戶資料寫入接入用戶表。
plat_user_id對應平臺用戶表的user_id;
user_name爲登陸名,對應平臺用戶表certification;
full_name爲姓名,對應平臺用戶表user_name;
online_limit爲最大鏈接數,即容許同一用戶同時有幾個設備能夠登陸;
user_password爲密碼,由於不知道加密算法,此處有點問題。有2個解決辦法:
A.寫固定密碼(從數據庫抄)
B.經過IMC的dbman(命令提示符運行)生成密碼,命令格式:dbman -encrypt 密碼明文。
C#版密文生成類以下:dbman.exe去IMC服務器上找,裏面的ACE.dll以及上層目錄中的log目錄也一塊兒拿下來,不然會報錯。
string GenPassWord(string para)
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.WorkingDirectory= Environment.CurrentDirectory+"\dbman";
p.StartInfo.FileName="cmd.exe";
p.StartInfo.UseShellExecute = false; //不用Shell啓動
p.StartInfo.RedirectStandardInput = true; //輸入重定向
p.StartInfo.RedirectStandardOutput = true; //輸出重定向
p.StartInfo.CreateNoWindow = true; //不顯示窗口
p.Start();
p.StandardInput.WriteLine("dbman -encrypt "+para);
p.StandardInput.WriteLine("exit");
string s= p.StandardOutput.ReadLine();
s= p.StandardOutput.ReadLine();
s= p.StandardOutput.ReadLine();
s= p.StandardOutput.ReadLine();
s= p.StandardOutput.ReadLine();
p.Close();
return s;
}
開通服務:仿照數據庫跟蹤數據寫入ead.ead.TBL_ACM_SERVICE表和ead.ead.TBL_USER_PRODUCTS表
開發完成後經測試,用戶可使用此工具建立的帳號正常登陸並經過Poral認證。
3.2. 同步IMC用戶、MAC地址至網絡行爲管理系統
入圍的2個網絡行爲管理系統都使用MySQL數據庫。互普用戶資料中要求必須包含如下信息:用戶名、IP地址、MAC地址。由於咱們用戶IP地址是經過H3C 7506E-S上的DHCP服務動態分配的。即便是作了MAC、IP綁定,咱們須要維護DHCP、IMC上的信息,工做量較大,因此暫時不考慮將IP、MAC地址綁定起來。因此互普這部分的接口先就不作了。
迪普用戶資料只須要用戶名、MAC地址,IP地址能夠自動反解,不須要保存在用戶資料中。其用戶表主要字段以下:
咱們公司上網用戶存在1人有多個上網設備的狀況,即一個用戶對應多個MAC地址。由於迪普系統前臺建立用戶不容許重複,因此前臺很差操做。在迪普數據庫dp_sys_org_users表中ID爲主鍵,因此經過數據庫寫入應該是沒問題的。
IMC用戶、MAC地址同步至迪普系統的業務邏輯處理過程以下:
A.取IMC用戶及MAC地址。此處在ead數據庫中寫了一個視圖,考慮到同一個MAC地址可能會綁定給多個用戶(設備會回收並從新發放),致使有MAC地址重複的狀況,查詢最後綁定的MAC地址,並取惟一值;
B.逐Mac地址進行檢查,是否存在於dp_sys_org_users表中
如存在且綁定用戶與IMC相同,不處理;綁定用戶與IMC不一樣,以IMC中用戶信息爲準更新dp_sys_org_users用戶信息;
如不存在此MAC地址,將MAC地址及綁定用戶信息插入dp_sys_org_users。
程序實現後經測試,用戶、MAC地址可同步至迪普系統。無重複,迪系統能夠正常使用。監控信息記錄用戶與導入用戶信息一致。
最終程序展現以下:
算法