H3C(华三)IMC与网络行为管理系统用户集成

原创
2014/06/22 23:08
阅读数 442

公司为加强网络信息安全管理,监控并审计用户网络行为(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地址可同步至迪普系统。无重复,迪系统可以正常使用。监控信息记录用户与导入用户信息一致。

最终程序展示如下:
 图片

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部