McAfee ESM 11.5.X告警触发时Python脚本无法执行
问题环境与现象
- 部署环境:McAfee ESM 虚拟机,软件版本 ESM 11.5.4 20220106
- 需求:实现告警触发时自动运行指定Python脚本
- 故障现象:告警规则已开启
Execute remote command配置项,告警本身可以正常触发,但绑定的Python脚本始终无法执行,已参考如下配置调整仍未解决问题:
故障排查与解决方法
ESM 11.5.4版本的Execute remote command模块对执行上下文有严格限制,脚本无法运行基本都是权限、路径、环境变量配置不符合要求导致,按以下步骤逐一排查:
- 权限配置校验
ESM触发命令时默认使用nobody低权限用户运行,无root权限、不加载任何用户环境变量:- 脚本不要存放在
/root、/home/个人用户目录这类权限隔离路径,统一放到/opt/scripts/这类全局可访问的公共目录 - 给脚本及所有上层目录配置全局可执行、可读权限:
chmod -R 755 /opt/scripts/ chmod 755 /opt/scripts/your_alarm_script.py
- 脚本不要存放在
- 命令配置校验
配置框内必须写全路径调用,禁止使用相对路径、省略解释器路径:- 先在ESM后台查询Python解释器绝对路径:
which python3 # 版本默认路径一般为 /usr/bin/python3 - 命令配置框直接填写完整执行指令,不要加sudo、多余的管道/重定向符号,示例:
/usr/bin/python3 /opt/scripts/your_alarm_script.py - Python脚本首行必须添加对应解释器的shebang头,脚本内所有文件、模块引用全部使用绝对路径,禁止使用相对路径:
#!/usr/bin/python3 # 业务代码从第二行开始编写
- 先在ESM后台查询Python解释器绝对路径:
- 系统限制校验
ESM虚拟机默认开启SELinux,会拦截低权限用户的自定义脚本执行:- 执行
setenforce 0临时关闭SELinux测试,如果脚本恢复执行,修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive,重启设备后永久生效。
- 执行
- 链路连通性验证
先不要直接调Python脚本,在命令配置框写入简单测试指令验证执行链路是否正常:
手动触发告警后检查/usr/bin/touch /tmp/esm_alarm_test.log/tmp目录下是否生成对应测试文件:- 能生成:说明命令执行链路正常,问题出在Python脚本本身的路径、依赖配置上
- 不能生成:直接查看
/var/log/mfe/alarm.log日志,根据报错定位具体拦截原因
已知问题提示:ESM 11.5.4 20220106初始版本存在Execute Command模块的bug,低权限用户无法触发自定义脚本,以上配置全部校验后仍无法执行的,安装2022年3月及之后发布的ESM累积补丁即可修复。
内容的提问来源于stack exchange,提问作者Praveen Deshpande
相关产品推荐
相关产品推荐

