Security Onion 16.04.5.6下BroCtl无法生成http.log问题求助
我来帮你排查这个头疼的问题——用Security Onion 16.04.5.6的Bro(现在已更名为Zeek)时,通过BroCtl管理却生成不了http.log,咱们一步步来梳理可能的原因和解决办法:
确认HTTP脚本是否被正确加载
Bro默认应该加载HTTP分析脚本,但偶尔会因为配置遗漏导致未加载。你可以执行broctl scripts查看当前加载的脚本列表,检查是否包含policy/protocols/http/main.bro或http.bro。如果没有,找到Security Onion的Bro站点配置文件(通常是/opt/bro/share/bro/site/local.bro),在文件末尾添加:@load policy/protocols/http然后执行
broctl deploy让新配置生效。正确配置
ignore_checksums参数
你提到local.bro里没有这个选项,其实可以手动添加。打开/opt/bro/share/bro/site/local.bro,在文件末尾加入:redef ignore_checksums = T;一定要执行
broctl deploy,否则Bro不会读取新的配置项。检查Bro的监听接口配置
首先确认Bro监听的是你操作的enp0s3接口:- 执行
broctl status查看节点的监听接口信息; - 或者直接查看
/opt/bro/etc/node.cfg中的interface字段,确保它设置为enp0s3。
如果监听接口不对,Bro捕获不到目标流量,自然不会生成http.log。
- 执行
修正网卡校验和设置并重启Bro
虽然ethtool报了UDP分片卸载不支持的错误,但关键的校验和选项已经关闭了。不过可以再补充关闭接收端校验和:sudo ethtool --offload enp0s3 rx-checksum off之后执行
broctl restart重启Bro服务,让网卡设置生效。找对日志存储的正确路径
这是新手最容易踩的坑!Security Onion中Bro的日志默认不在当前执行目录,而是在专门的日志目录里。你可以用broctl config LogDir命令查看Bro的日志存储路径,通常是/nsm/bro/logs/current/或/opt/bro/logs/current/,去这个目录下找找http.log。确认监听接口有HTTP流量
最后要确保enp0s3接口上有实际的HTTP流量(比如用浏览器访问HTTP站点,或用curl http://example.com发起请求)。可以用tcpdump -i enp0s3 port 80抓包验证,如果没有HTTP流量,Bro当然不会生成对应的日志文件。
内容的提问来源于stack exchange,提问作者roffensive

