APP下载

访问代理执行的服务器安全运维技术研究

2021-08-02王国峰代明臣

软件导刊 2021年7期
关键词:命令代理指令

王国峰,雷 琦,唐 云,代明臣

(1.中电科第三十研究所;2.中国电子科学研究院;3.中电科网络空间安全研究院有限公司,北京 100041;4.日照市军队离退休干部休养所,山东 日照 276800)

0 引言

在云计算与大数据时代,大量服务器都部署在云端[1-3],需要操作人员远程对服务器执行运维操作,保障其正常运行。然而,操作人员可能会利用自身权限窃取隐私数据,损害用户数据的完整性、保密性与可用性[4-6]。在操作人员具备偷窥与泄露用户隐私数据条件的情况下,如何保障服务器远程运维管控的安全性变得尤为重要,这也是近年来工业界与学术界共同研究的热点问题[7-13]。

本文研究访问代理执行的服务器运维管控技术方案,所有服务器操作行为均需经过访问代理审计与管控,符合权限认证后才能单点登录到对应服务器,从而做到统一管控,避免访问认证上的混乱。操作人员经过访问代理认证后,对服务器的所有操作都会被审计与管控,并基于操作角色的分级机制对越权操作和危险操作进行阻断与预警。实验结果表明,该方案可有效管控和审计服务器远程运维操作,具有很高的效率和安全性,且不需要安装额外的客户端软件。

1 国内外相关研究

国内外媒体报道过大量由内部人员导致的数据泄露事件。美国联邦调查局(FBI)和计算机安全协会(CSI)在2008 年发布的《计算机犯罪和安全调查报告》中指出,由内部安全事件带来的损失高于外部安全事件[14]。许多大型网站,如CSDN、LinkedIn 等出现过用户数据泄漏事件[15]。对比传统模式下内部威胁的防御技术[16-18],云计算和大数据模式的引入带来很多新的安全问题与挑战[19-20],需要给出切实有效的解决方案。在针对内部人员远程管控运维服务器方面,Dusi 等[21]尝试使用机器学习的方式分析与监控远程服务器运行了何种类型的服务和应用;Emmert 等[22]监视在远程服务器中使用的微软办公软件,如Word、Ex⁃cel、PowerPoint。国内主要使用操作回放技术审计服务器远程运维操作,即用户在远程服务器上执行的任何操作都会像屏幕录制一样被记录下来,以供事后分析。Huang等[23]针对远程服务器运维管控,设计了基于访问代理的安全审计系统,能对主流桌面协议进行审计,如VNC、RDP、X-Window;Tan 等[24]设计实现了基于访问代理的单点登录与安全审计系统,以应对服务器远程运维安全问题。上述研究主要集中在桌面服务器系统远程操作的审计机制方面,没有探讨怎样对运维操作进行实时拦截,即如何对越权和危险操作进行阻断与预警。

在操作人员权限管控方面,SSC 自服务体系架构[25]通过设计用户管理域和系统管理域保护用户隐私数据,以避免被内部人员窃取。然而,该方法依赖特定的物理芯片,且需要修改服务器配置,不具有很好的通用性。本文以Linux 服务器为例,研究如何基于访问代理对服务器的远程运维操作进行实时持续地审计,并对越权和危险操作进行有效阻断与预警。

2 访问代理设计方案

2.1 系统架构

本文拟实现一个非侵入式访问代理,其支持B/S 方式访问。访问该代理的客户端仅需要一个支持HTML5 的浏览器,无需安装其他软件。被访问的服务器也不需要安装额外程序,仅需要安装远程连接必须的SSH 服务端程序(大多数Linux 操作系统已默认安装该程序),就可以通过访问代理连接该服务器。该访问代理的系统架构如图1 所示,由连接模块、传输转化模块、显示模块与审计模块构成。其中,显示模块通过浏览器将服务器桌面呈现给用户,传输转化模块与显示模块之间使用HTTP 协议进行通信,连接模块与传输转化模块之间使用TCP 协议进行通信,服务器与连接模块之间通过SSH 协议进行通信,审计模块与传输转化模块之间主要通过共享存储的方式进行通信。

(1)连接模块是访问代理网关的重要组成部分,以守护进程的方式一直运行,监听来自传输转化模块的TCP Socket 连接,主要负责以下功能:①该模块实现了SSH 客户端的功能,其接收来自传输转化模块的连接命令后,会根据连接命令中指定的地址向SSH 服务器发起SSH 连接,负责与SSH 服务器进行通信;②该模块需要将SSH 服务器的输出通过TCP Socket 发送给传输转化模块,并接收来自该模块的指令,将其转化为SSH 输入事件,发送给SSH 服务器。

(2)传输转化模块是连接模块与显示模块的中间枢纽,是访问代理网关的核心部分,主要负责以下功能:①该模块负责与连接模块进行TCPSocket 通信,接收连接模块从服务器传回的SSH 输出,经过协议转换成显示模块可以处理的指令,即传输转化模块收到SSH 服务器的输出后,需要将其转化为与显示模块约定的协议指令,然后通过HTTP 的方式发送给显示模块。同时,该模块需要将显示模块传来的用户输入的指令,如键盘鼠标指令,转化为SSH输入指令发送给连接模块;②该模块需要对来自连接模块的SSH 输出与来自显示模块的用户指令进行持久化存储,供审计模块使用。

(3)显示模块通过浏览器与用户进行实时交互,主要负责以下功能:①该模块对传输转化模块发来的协议指令进行解析,并在用户浏览器上执行,通过浏览器渲染,将远程服务器桌面图像实时显示给用户;②该模块对用户的键盘/鼠标事件进行监听,一旦触发键盘或鼠标事件,就会将事件信息发送给传输转化模块进行处理。

(4)审计模块主要对传输转化模块保存的协议指令数据进行处理与分析,同时基于服务器使用人员操作的分级机制对危险和越权操作进行预警与阻断。

Fig.1 System architecture of access agent图1 访问代理系统架构

2.2 审计与管控运维命令

用户运维服务器时会事先在权限数据库存储与用户对应的合法命令集,当用户经过访问代理审核登录服务器后,访问代理会记录用户登录了该服务器,并可以为审计模块使用。传输转化模块在接收到用户的可显示键盘事件时,会将键盘事件所对应的字母值存储到与审计模块共享的缓存中。当传输转化模块接收到显示模块发往服务器的“Enter”特殊键盘事件时,会调用审计模块对将要执行的命令进行权限判断。审计模块读取传输转化模块存储到缓存中的用户命令,并与权限数据库进行比对,若符合该用户命令集规则则放行,不符合则阻断。

审计模块实时记录操作人员对服务器的使用行为,并基于权限分级机制对危险与越权操作进行审计和管控。该模块会阻断此类行为并产生告警事件,具体流程如下:

(1)根据操作人员等级不同,访问代理会预先为其设定权限,即操作人员可执行的正常操作、敏感操作和危险操作,分为正常、告警、禁止3 个级别,操作人员的权限划分与对应命令集保存在数据库中。

(2)操作人员发出命令时,访问代理的审计模块解析操作命令,并识别数据库中的会话标志值,从而得知操作人员信息。审计模块根据操作命令查询数据库,找到对应的操作危险等级并进行相应处理,然后将完整的行为记录在操作人员日志数据库中。

2.3 特权用户执行脚本审计与管控

上述审计与管控方案仅对用户手敲输入的命令有效,若用户将命令嵌入到可执行脚本中,以上方案就会失去效果。针对特权用户执行脚本审计与管控,设计以下方案:

(1)在服务器开机自启动目录下放置可执行脚本,每个用户登入服务器时都会访问此脚本。

(2)编辑可执行脚本,使用户使用受限模式,不加载系统默认的profile 文件,而是加载自定义的profile 文件。

(3)编辑自定义的profile 文件,内容为“PATH=${HOME}/bin;export PATH”。

(4)加入想让该用户使用的命令,如ifconfig,内容为“mkdir$HOME/bin;ln-s/sbin/ifconfig $HOME/bin/”,其中“/sbin/ifconfig”为系统实际可执行的ifconfig 命令。

使用以上方案,当用户登陆该服务器时,除了被允许的可执行命令可用外,不能使用其他命令。此外,为防止特权用户修改可执行文件,可在系统启动中使用文件属性设置命令对可执行脚本加锁,防止文件被修改或删除。移动并重命名文件属性设置命令,以隐藏该命令,使特权用户登录后无法使用该命令再次修改文件属性。

3 仿真实验

3.1 性能测试

在保证访问代理正常运行的前提下,对其进行压力性能测试,测试指标包括用户通过代理远程运维服务器资源的最大并发数等。用户通过代理登录服务器(如Linux、Windows 虚拟机),访问代理可支持的最大用户并发数,具体可通过代理所在主机的内存使用率、CPU 使用率、响应时间与吞吐量等性能参数判断得出。

代理和测试服务器被部署在同一可连通网络内,使用性能测试工具JMeter[26]模拟用户访问服务器资源。在代理可正常运行的前提下,通过逐步增加资源的并发访问数,并记录访问代理所在主机性能参数(CPU、内存占用率等)的变化情况对资源访问最大并发数进行测试。

仿真实验中代理所处的虚拟机配置为CPU 2.5GHz 双核,内存4G。测试结果表明,随着用户远程访问服务器资源并发数的增加,代理所在主机的内存消耗和CPU 利用率不断提升,网络吞吐率明显下降,系统响应时间也随之增加。在访问代理处接受一个对Linux 服务器字符型协议的连接访问平均消耗约10MB 内存,代理可支持Linux 协议远程连接的最大并发数约为235。

3.2 有效性测试

在针对一般运维命令审计与管控的有效性实验中,分别选取敏感指令和非敏感指令,测试访问代理能否阻断敏感指令,放行非敏感指令。以ifconfig 命令为例,实验结果如图2、图3 所示。当将ifconfig 设置为敏感指令时,访问代理自动阻断,在用户界面显示阻断信息,并将用户信息和命令记录到审计日志中;当将ifconfig 设置为非敏感指令时,访问代理则放行命令,同时将用户信息和操作命令记录到日志中。

Fig.3 Execution result of non-sensitive instruction图3 非敏感指令执行结果

在针对特权用户脚本命令审计与管控的有效性实验中,分别选取含有敏感指令和非敏感指令的shell 脚本,测试访问代理能否阻断敏感指令,并放行非敏感指令。实验结果如图4、图5 所示,当服务器设置ifconfig 为敏感指令时,访问代理虽然执行含有敏感指令的脚本,但后台云服务器会阻断敏感指令的执行;当服务器设置ifconfig 为非敏感指令时,访问代理则放行命令,同时云服务器也执行非敏感指令。

Fig.4 Execute scripts containing sensitive commands图4 执行含有敏感指令的脚本

4 结语

针对云服务器远程运维管控问题,本文提出一种访问代理执行的服务器远程运维管控技术方案,并设计了原型系统,对其性能和有效性进行了测试。实验结果表明,该方案通过访问代理对所有服务器远程运维操作进行审计与管控,且不改变用户的使用习惯和服务器配置。但是,该方案对角色权限的细粒度分级管控机制没有作详细阐述,还需进一步研究。

Fig.5 Execute scripts containing non-sensitive commands图5 执行含有非敏感指令的脚本

猜你喜欢

命令代理指令
只听主人的命令
代理圣诞老人
ARINC661显控指令快速验证方法
LED照明产品欧盟ErP指令要求解读
代理手金宝 生意特别好
移防命令下达后
复仇代理乌龟君
这是人民的命令
坐标系旋转指令数控编程应用
一个村有二十六位代理家长