Solaris 11.4中libbsm函数缺失问题及audit插件开发咨询
Solaris 11.4 libbsm函数缺失与审计插件开发指南
一、函数缺失的原因
- Solaris 11.4对libbsm做了API精简,手册里提到的
au_fetch_tok这类函数已经被废弃,属于内部私有接口,不再对外提供公开调用的入口,自然找不到对应的定义。 - 手册更新不及时:部分libbsm的旧版手册内容没同步更新,还保留了已移除的函数说明,导致手册和实际可用API对不上。
二、手册更新情况
- Solaris 11.4的官方手册已经通过后续补丁修正了libbsm的内容,你可以执行以下操作获取最新本地手册:
- 安装
system/manual包的最新补丁:pkg update system/manual - 用
man -M /usr/share/man/libbsm查看更新后的libbsm手册,重点看au_read_rec、au_tok_iter这些替代函数的说明。
- 安装
三、审计插件开发建议
1. 用当前支持的公开API
别再碰废弃函数,改用Solaris 11.4正式支持的接口:
- 用
au_read_rec()读取完整审计记录 - 用
au_tok_iter()遍历记录里的令牌,替代au_fetch_tok的功能 - 搭配
au_tok_to_str()把令牌转成可读字符串,省得自己手动解析
2. 参考系统自带工具的实现
Solaris自带的auditreduce、praudit都是基于libbsm写的,你可以去usr/src/cmd/audit目录看它们的源码,学习正确的审计数据解析流程,比如怎么处理不同类型的令牌、怎么应对异常记录。
3. 遵循审计插件规范
开发类似audit_syslog的插件,得符合Solaris审计框架的规则:
- 必须实现
audit_plugin_init()、audit_plugin_process()、audit_plugin_fini()这三个核心函数 - 注册插件时,要在
/etc/security/audit_control里加配置,指定插件路径和参数 - 处理审计记录时要注意线程安全,因为审计框架会用多线程调用插件的处理函数
4. 测试与调试技巧
- 用
praudit验证你的解析结果,对比插件输出和praudit的格式化内容,确保一致 - 开启审计调试模式:
auditconfig -setdebug 1,查看插件运行时的错误日志 - 测试边界场景,比如空记录、异常格式的令牌、大体积审计记录的处理
内容的提问来源于stack exchange,提问作者phantom
相关产品推荐
相关产品推荐

