曾金梁,朱晓民
(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876;2 东信北邮信息技术有限公司,北京 100191)
随着增值业务范围的扩大,业务种类也越来越多。如何保障这些日益庞大、日益增长的增值业务稳定成为通信运营商的难题。东信北邮为运营商提供了增值业务统一管理平台的解决方案:网络管控平台(简称为网管)[1]。
为管控所有业务平台,网管系统一般需要在100多台服务器上安装代理程序[2]。这些代理程序进行功能调整、异常排除等操作时通常需要接入主机,进行维护操作。而众多服务器,密码变动频繁,迫切需要一种比较便捷、安全的远程维护方式。
另一方面,业务提供商在不断发展过程中,根据运营商客户不同需求,推出多种业务。维护人员不但需要了解多个业务维护知识,还需要承担众多业务主机的日常运维。尤其是近几年,运营商为提高信息安全,推行4A规范[3],将主从账户分离、定期更新密码,更是让各业务的维护工作越来越繁琐。
如果能利用网管的代理机制,实现一个综合维护平台,使公司所有业务维护工作入口统一,操作简单,那么将能极大的提高维护效率。该综合维护平台需要能隔离密码变动对维护工作影响,能在平台界面上直接进行远程主机的维护,能将常用维护操作进行批量处理。本文就是基于安全的无密码登录技术,设计实现了综合维护平台,使维护人员可远程接入主机。
通用消息中间件,即实时应用进程管理和通信组件(component package of real time application process management and communication,COPART-MACO),是总线型通信中间件,通过抽象的连接模型,以统一的方式支持各种IPC机制,可实现跨机器和跨平台通用[4]。通用消息中间件具有很高的稳定性和可靠性,其能满足远程维护的通信要求。基于通用消息的持久化消息队列[5],能很好的解决在远程登录时,处理时间有时比较长时,部分关键消息超时问题。
伪终端设备是一种特殊的终端驱动设备,它并不驱动某个物理设备,而是用来将终端的输出定向到应用程序中进行处理。伪终端设备由主、从两个成对的设备构成[6]。任何写到伪终端主设备的输入都会作为从设备端的输入,反之亦然。伪终端设备常用于远程登录服务器来建立网络和终端的关联[7],其典型进程结构如图1所示。利用伪终端能很好的实现远程接入 shell,并通过链路进行输入输出。
图1 典型的伪终端进程结构[7]
综合维护平台的部署结构如图2所示,其中包含业务功能域,平台代理功能域,平台管理功能域,平台维护功能域。
各组件功能说明:
(1)业务维护接口,即各业务自定义的维护操作入口,可以是通过执行专用的维护脚本、可执行程序,接入管理各业务进程;也可以是通用的系统操作命令;
(2)无密码登录服务,提供远程登录;
(3)远程接入接口,负责执行远程会话;
(4)远程接入控制,有效控制远程会话;
(5)维护操作接口,进行远程维护操作。
图2 综合维护平台部署结构
无密码登录服务内部逻辑如图3所示。
图3 无密码登录服务内部逻辑
如果服务处于关闭状态,服务进程在接收到开启服务消息后,会从配置中获取开启服务的端口、登录主目录、默认用户、最大连接数等等,如无配置,则采用默认配置;之后尝试绑定端口,并开始监听。当端口不可用时,会尝试查找可用端口,如果端口自适应失败,则开启服务失败。服务绑定IP“0”,只有远程主机本地登录才有效,从而防止服务开启后,被非法利用,远程侵入服务器。
服务进程会由时钟触发,定期判断是否有新的接入请求,以及断开失效连接。当有新的请求接入,服务进程fork子进程进行处理,并将子进程pid进行记录,以便回收处理、断开连接等。子进程中会采用伪终端处理连接,由从设备开启交互服务,主设备处理与连接请求方的链路通信。
服务进程在接收到关闭服务消息后,会将开启中的服务中断。如无业务维护操作时,通过定期关闭服务,可以提高服务安全性。
运行在代理主机上的接入封装进程,能有效的处理管理功能域的请求消息,执行本机接入操作。该封装进程还可以将常用交互操作进行批量处理:顺序执行命令;可变信息通过通用消息进行传参;对于交互服务的应答则通过枚举正则匹配、实现跳转[8]。
进程还有回收过期会话功能,当管理功能域的接入控制功能失效时,能自行处理失效会话,以回收系统资源。
接入控制进程负责与上层业务维护接口交互,并管理多个远程主机上的接入会话。在与上层维护操作交互过程中,进程记录所有的操作命令,以及应答信息,使操作过程可回放。进程通过会话池方式管理远程主机会话,定期断开失效会话,并提供会话信息查看功能。
采用chown命令将登录服务程序所有者更改为root,并设置该程序的SUID——使程序可以被代理功能域的用户运行,则在服务启动后的euid是0。通过setuid操作,可以将交互服务的所有者更改为其他所期望接入的用户。之后执行bash login时,则自动登录到指定业务用户。为增强用户接入管理安全性,可以增加黑白名单用户列表,使登录服务禁止无密码接入重要业务用户,或仅能跳转到指定用户。该功能采用的登录方式的是non-login shell,如果需要切换到业务用户的配置环境,则只需要执行命令:source/destDir/.*profile。
在假定网管系统的安全性基础上,无密码登录远程主机功能,因为不需要在网络上传输密码,并没有额外风险,所以它是安全的。基于该功能可以有效的利用网管的代理机制,实现操作维护入口的整合。该综合维护平台,能让业务维护人员从繁琐的密码管理工作中解脱,便捷的访问所有受控远程主机、进行维护;可以将常用维护操作封装处理,让维护工作更加方便。
[1] 王萌, 朱晓民, 李炜. 基于插件技术的综合网管系统通用网元代理的分析与设计[J]. 电信工程技术与标准化, 2012, (8):81-84.
[2] 宋蕾. 智能网网管系统设备侧代理的设计与实现[D]. 北京:北京邮电大学, 2005.
[3] QB-Y-065-2010, 中国移动业务支撑网4A安全技术规范[S].
[4] 张莲龙, 李炜. 一种骚扰电话识别与监控技术[J]. 北京工商大学学报(自然科学版), 2009, 27(5):31.
[5] 郭盛兴, 王晶, 廖建新. 基于通用消息的持久化消息队列设计[J]. 北京工商大学学报(自然科学版), 2010, 28(1):69-71.
[6] 彭淑芬, 张颖江, 崔成法. Linux伪终端设备及其在L2TP中的应用[J]. 计算机工程与设计, 2005, 26(7):1956.
[7] 卢东, 陆以勤, 吕锦. 利用伪终端实现串行通信链路复用功能[J]. 嵌入式软件应用, 2008, 24(12):75.
[8] 杭州东信北邮信息技术有限公司.多个网络设备智能操作逻辑的实现方法和系统[P].中国:2011103052894,2012-03-21.