用户在审计和控制运维命令运维服务器时,会提前在权限数据库中存储与用户对应的合法命令集。当用户访问代理审核登录服务器时,访问代理会记录用户登录服务器,可以用于审计模块。当传输转换模块接收到用户可显示的键盘事件时,键盘事件对应的字母值将存储在与审计模块共享的缓存中。当传输转换模块接收到显示模块发送到服务器的特殊键盘事件时,将调用审计模块执行。
判断命令的权限。审计模块读取传输转换模块存储在缓存中的用户命令,并与权限数据库进行比较。如果符合用户命令集的规则,则放行,不符合则阻断。审计模块实时记录操作人员使用服务器的行为,并基于权限分级机制对危险和越权操作进行审计和控制。该模块会阻断此类行为并发生报警事件。具体流程如下:(1)根据操作人员的不同等级,访问代理会提前为其设定权限,即操作人员可以执行的正常操作、敏感操作和危险操作分为正常、报警和禁止三个等级,操作人员的权限划分和相应的命令集保存在数据库中。(2)操作人员发出命令时,访问代理审计模块分析操作命令,识别数据库中的对话标志值,从而了解操作人员的信息。审计模块根据操作命令查询数据库,找到相应的操作风险等级并进行相应的处理,然后在操作人员的日志数据库中记录完整的行为。
特权用户执行脚本审计和控制上述审计和控制方案只对用户手敲输入的命令有效。如果用户将命令嵌入可执行脚本,上述方案将失去效果。针对特权用户的脚本审计和控制,设计了以下方案:(1)在服务器启动自启动目录下放置可执行脚本,每个用户登录服务器时都会访问脚本。(2)编辑可执行的脚本,使用户使用有限的模式,而不是加载系统默认的profile文件,而是加载定制的profile文件。编辑自定义的profile文件,内容为PATH=${HOME}/bin;exportPATH。(4)添加想要用户使用的命令,如ifconfig,内容为mkdir$HOME/bin;ln-s/sbin/ifconfig$HOME/bin/,其中/sbin/ifconfig是系统实际可执行的ifconfig命令。使用上述方案,当用户登录服务器时,除了允许的可执行命令外,不能使用其他命令。此外,为了防止特权用户修改可执行文件,可以在系统启动时使用文件属性设置命令锁定可执行脚本,防止文件被修改或删除。移动并重命名文件属性设置命令,以隐藏命令,使特权用户在登录后无法再次修改文件属性。
不要选择敏感指令和非敏感指令,测试访问代理是否能阻断敏感指令,释放非敏感指令。以ifconfig命令为例,当ifconfig设置为敏感指令时,访问代理自动阻断,在用户界面显示阻断信息,并将用户信息和命令记录在审计日志中;当ifconfig设置为非敏感指令时,访问代理放行命令,并将用户信息和操作命令记录在日志中。