![Snort 可以使用 X-Forward-For 或 X-Real-IP 标头而不是源来写入日志吗?](https://linux22.com/image/756071/Snort%20%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20X-Forward-For%20%E6%88%96%20X-Real-IP%20%E6%A0%87%E5%A4%B4%E8%80%8C%E4%B8%8D%E6%98%AF%E6%BA%90%E6%9D%A5%E5%86%99%E5%85%A5%E6%97%A5%E5%BF%97%E5%90%97%EF%BC%9F.png)
我们使用 HAProxy 作为第 7 层的负载均衡器,以便我们可以终止 SSL 并使用 Snort 检查流量。问题是 Snort 将负载均衡器视为源,而不是原始客户端。我们添加了 X-Forward-For 标头,但找不到让 snort 以此为源写入日志的方法。
我们在 snort 配置中设置了 enable_xff,但这只会将 IP 放入 Extra Data 部分的统一日志中。它不包含在标准 syslog 中。
统一日志是二进制的,我们读取snort日志所需的工具无法处理它。
有没有办法强制 snort 在其日志中写入正确的 IP?
答案1
可能太晚了,但这个链接可能有用:
https://www.snort.org/faq/readme-http_inspect
摘自上面的链接:
默认的 X-Forwarded-For 和 True-Client-IP 标头始终存在。它们可以在 xff_headers 配置中明确指定,以确定其优先级。如果未指定,它们将自动添加到 xff 列表中作为最低优先级标头。
例如,假设我们有以下(缩写的)HTTP 请求标头:
... Host: www.snort.org X-Forwarded-For: 192.168.1.1 X-Was-Originally-Forwarded-From: 10.1.1.1 ...
使用默认的 xff 行为(无 xff_headers),“X-Forwarded-For”标头将用于在 unified2 日志中提供 192.168.1.1 原始客户端 IP 地址。自定义标头不会被解析。
和:
xff_headers { [ x-was-originally-forwarded-from 1 ] [ x-another-forwarding-header 2 ] [ x-forwarded-for 3 ] }
X-Was-Originally-Forwarded-From 标头具有最高优先级,其值 10.1.1.1 将作为原始客户端 IP 记录在 unified2 日志中。
但有:
xff_headers { [ x-was-originally-forwarded-from 3 ] [ x-another-forwarding-header 2 ] [ x-forwarded-for 1 ] }
现在 X-Forwarded-For 标头具有最高优先级,并且已记录其值 192.168.1.1。