开源堡垒机除了录相,还需要做操作识别,主要的操作识别功能包括:
ssh/telnet
的操作命令识别
ftp/sftp
的操作命令识别
RDP/VNC/X11
的打开窗口
title
识别
RDP/VNC/X11
窗口中的文字识别
RDP
剪切版内容识别
RDP/VNC/X11
键盘记录
对于一个只能录相的开源堡垒机,其可用性是非常差的,因为开源堡垒机的审计功能主要用于事后,如果发生了内部运维事件,并且时间点难以确定,审计员必须面对海量的日志进行识别,由专人对每个会话从头到尾看整个操作录相。而操作过程往往是一瞬间的事,比如几天的操作日志可能有上千个小时,但是出现问题的操作可能只在几秒钟,这时的劳动强度和枯燥程度是相当大的,一个人要从上千小时的录相中找到几秒种的有问题的录相,难度之大可以想像。
我们也曾经出过某电信后台数据库被人删除的问题,那时我们系统的
RDP
识别功能还没有做,所以我们派专人,连续看了七天的日志,最终才找到责任人。
因此,一个开源堡垒机的好坏,不只是操作界面是不是漂亮、日志报表是不是通用,最重要的标准是分析功能是不是好,如果一但分析识别做的到位,当出现问题时,可以大大缩小审计人员的精确程度,直接找到责任人。
开源堡垒机的操作识别功能中,
FTP/SFTP
的命令操作开发是最简单的,因为命令本身在协议中有标,开发时只要解开
FTP/SFTP
的协议流,可以直接得到。
ssh/telnet
的命令识别是较难的功能,因为ssh/telnet
对于命令在协议中是没有标注的,和在屏上其它回显一样,都是一个一个的字符,实际开发中,很通在实际回显中找到哪个是命令,哪个是回显,而键盘记录,只能对命令识别有帮助,并不能通过键盘记录来记录到命令,因为敲击键盘的时候,用户有可能在
vi
等行编辑器中,这时操作的并不是命令而且一些文件编辑,另外目前的
linux bash
中有很多快捷键,比如命令可以通过上翻找到,可以用
TAB
补齐,此外,运维人员在输入命令的时候,用退格去修改等也会造成命令识别无法通过键盘记录来实现,ssh/telnet
的命令识别,只能通过将键盘与回显关联的方式识别,程序在判断用户键盘击打顺序的同时,判断回显字符,当出现回车的时候,将前面的所有键盘记录下来,并且在回显中进行一些判断,就可以准确的记录用户操作的命令,这种模式,代理程序还必须判断的出用户是不是在
vi
等编辑器模式中,麒麟开源开源堡垒机系统的ssh/telnet
命令识别开发周期大约为
2
个月,后期做了很多的修改,目前命令识别率达到了
99.9%
。
RDP/X11/VNC
的窗口
title
识别和窗口内部文字识别,可以说是一个业界的难题,因为
RDP
整个显示没有字符,完全是通过
GDI
函数绘出,因此,即使解开了
RDP
的流,也无法从流中得到任何文字 ,因为全部是
GDI
函数绘出的图形,麒麟开源开源堡垒机的
RDP/X11/VNC
窗口的识别开发周期大约为
4
个月,目前已经可以识别出窗口标题和内部操作文字。
此外,
RDP
的键盘记录、剪切版记录也可以在协议中识别,键盘记录比较键盘,解开
RDP
协议即可得到剪切版复杂些,因为涉及内部文字编码识别。
以后会在其它文章中详细描述这些识别技术的原理。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。