上海教育城域网跨校身份认证联盟基于Shibboleth构建,已有超过40所的上海高校和区县加入该联盟。本文从Shibboleth开始介绍平台的工作原理和实现细节。
目前,上海教育城域网(以下简称SEMAN)的设备配置基本上由运维人员手工通过telnet或者ssh登录设备操作,不方便、易出错并且不够安全。对于在城域网日常运维中会经常发现黑客行为,运维人员需要快速将黑客地址加入路由黑洞,以免造成进一步的危害。因此非常有必要探索一种更加方便、安全、灵活的配置方式。
配置平台利用SEMAN跨校认证身份联盟验证用户身份,成功通过认证的用户就可以登录平台并配置属于自己管理权限范围内的地址。平台后台维护关于用户使用权限的数据库,保存特定用户所能够配置的目标地址列表等信息。用户进入平台后输入希望配置的地址信息,通过数据库信息判断该用户是否有权限操作对应的地址。对于确认有操作权限的用户,执行对应的配置,将此地址写入目标的黑洞设备当中,同时通过BGP协议,将上述IP地址在SEMAN范围内进行通告。配置平台基于HTML5实现,提供了WebGUI操作界面,运维人员可以方便的随时随地在PC或者各种移动终端上配置黑洞路由。同时,日志系统会记录下此次运维人员的操作时间、内容等,方便后续的排错、回溯。
SEMAN跨校身份认证联盟基于Shibboleth构建,已有超过40所的上海高校和区县加入该联盟。本文从Shibboleth开始介绍平台的工作原理和实现细节。
Shibboleth简介
Shibboleth是一个免费,开源的WebSSO(Single Sign On,单点登录)系统,具有丰富属性的开放标准,支持安全访问跨安全域的资源。有关用户的信息是从身份提供者(IDP)发送到服务提供商(SP),对受保护的内容或应用信息进行保护。所谓的联盟并不是一个纯粹的技术建造,通常可以用来帮助提供一个可扩展的方式信任对方。Shibboleth主要由以下三部分组成。
1.IDP(Identity Provider,身份提供者)身份提供端:主要作用是向资源提供者提供用户的属性,以便使资源服务器根据其属性对其访问操作进行授权和响应。
2.SP(Service Provider,资源提供者)资源服务提供端,主要作用是响应用户的资源请求,并向该用户所在的IDP查询用户的属性,然后根据属性作出允许或拒绝访问资源的决策。
3.WAYF(Where Are You From,认证中心)。Shibboleth2.0之后更名为DS,即Discovery Service,但是习惯上依然称呼为WAYF。
Shibboleth主要应用在校园内Web资源共享以及校园间的应用系统的用户身份联合认证。
城域网配置平台基本工作原理
平台首先通过SEMAN跨校身份认证联盟认证并确认身份,对于成功通过认证的用户根据其身份信息在后台数据库里查找对应的具有配置权限的IP地址段,然后根据用户配置目标检查是否具有配置该设备的权限,如果有则正常配置,否则提示用户输入合法的配置目标。最后,在日志中记录下用户的所有操作。图1为利用该平台配置黑洞路由的操作流程。
基于shibboleth的跨校认证接入方式有两种:shibboleth原生接入和sp代理方式接入。原生接入需要安装shibboleth-sp组件。本文实现的系统是以SP代理方式接入。通过WAYF提供的代理接口对接,双方提前协商好秘钥。用户通过认证后携带base64编码后的身份信息和认证信息返回具体配置界面。SEMAN跨校认证界面如图2所示。
跨校认证成功返回配置页面后,除了携带用户名和域名等相关信息外,还包含校验码和时间戳。配置页面用PHP实现,对秘钥和时间戳计算校验码,判断来源请求是否伪造。只有满足下述两个条件的访问请求才会被认定为合法请求:1.计算出校验码一致;2.时间戳是当前时间提前五秒内。对于通过认证的合法用户显示配置界面,否则提示警告信息返回,并记录在日志系统日志中以备后续管理。
合法用户可以使用该系统提供的图形化配置功能方便的配置管理对应的设备,配置黑洞路由的界面如图3所示。
配置界面简明扼要,输入需要配置的地址段,点击“添加/删除”按钮就可以操作。在执行具体配置之前,根据前述跨校认证返回的用户信息,查询后台数据库。根据从数据库返回的该用户具有操作权限的地址段,检查其试图配置的地址,如果有权限则执行对应的配置操作,没有权限则返回失败并提醒用户重新输入配置地址,同时将该行为保存在后台日志中。
用户数据库及系统日志
系统后台维护着一份sqlite数据库,保存了所有用户能够配置的目标地址段等信息。由管理人员定期维护更新,所有使用该配置平台的用户信息会手工加入该数据库中。其基本信息包括:用户名,域名,可操作性IP地址段,掩码,有效时间。具体内容如下:
user1sjtu.edu.cn202.120.0.018
2099-12-31
user2sjtu.edu.cn202.120.64.017
2099-12-31
…
通过这些信息准确的定义具体用户所能配置的地址段,保证系统的安全性。
由于轻量级的sqlite数据库着重于轻便和访问效率,在安全方面考虑比较少。为确保数据安全,采用128位IDEA加密算法对所有数据进行加密处理。数据加密后保存入数据库,读取之后解密再使用。
为确保操作的可追溯性,系统日志主要记录两类内容:
1.通过跨校认证进入配置页面的用户信息,具体内容包括:用户名、域名、时间、是否伪造请求。对于伪造的请求还需要记录下其源IP地址,以方便后续跟踪追查。
2.合法用户通过系统的操作行为,具体信息包括:用户名、域名、时间、配置目标、配置动作、是否违规操作等。
配置具体设备
为完成具体设备配置,系统使用PERL的Net::Telnet]模块,通过Telnet完成具体的配置过程。Telnet同其它的Perl模块一样,使用面向对象的语法,因此非常简单易用。完成黑洞路由配置添加,用到的两条具体命令如下:
confiprouteadd**.**.**.**/32
confbgpaddnetwork**.**.**.**/32
具体的命令格式根据不同的设备型号可能有所区别。删除时将“add”改为“del”即可。同时通过BGP协议,将上述IP地址在上海教育城域网范围内进行通告,将安全问题及时阻断,实现用户侧的一键断网。
系统目前在上海教育城域网内试运行并根据实际反馈加以改进,得到了相关运维人员的肯定,很大程度上简化了手工配置的工作量,减少了由于管理和误操作产生的网络故障。根据实际应用反馈的信息,目前还存在一定的优化空间:
首先,配置内容有待丰富。除黑洞路由外,可以逐步添加其他常见的配置功能,如端口,访问列表配置等。
其次,完善后台数据库维护机制,提供更加方便的操作接口。目前数据库维护基本由开发人员手工操作,下一步需要提供操作接口由专门的运维人员维护。
最后,逐步解决可能出现的安全风险。
(作者单位为上海交通大学网络信息中心)