For the complete documentation index, see llms.txt. This page is also available as Markdown.

遥测、日志与流导出

概述

本章提供 OpenBSD 防火墙与路由器的运维可观测性模式:通过 pflog(4)pflogd(8) 进行包过滤日志;用 pflow(4) 向外部收集器导出流(NetFlow v5/v9,以及在你的发行版支持时使用 IPFIX);用 snmpd(8) 进行系统与服务遥测;用 syslogd(8) 配合 syslog.conf(5) 进行集中日志转发。验证依赖 pfctl(8)tcpdump(8)systat(1)。这些模式用于为事件响应、容量规划与安全监控产生可操作的信号。

设计考量

  • 时钟与标识。 关联分析要求时间准确。运行 ntpd(8),并确保遥测的主机名唯一、IP 来源稳定。

  • 范围与隐私。 仅记录与导出你能存储并保护的内容。除非有明确理由,避免完整数据包载荷。聚合可见性优先采用采样或流级遥测。

  • 职责分离。 将防火墙/路由器视为生产者。重度分析、长期存储与仪表盘在外部系统上进行。

  • 网络路径。 将收集器置于专用管理网络或隔离 VPN 上。保护基于 UDP 的馈送(例如 NetFlow)免受丢失与伪造。

  • 版本注意事项。 pflow(4) 支持 NetFlow v5/v9。IPFIX 的可用性与选项取决于发行版。启用特定模板前须在 OpenBSD 7.8 上确认能力。

  • 轮转与留存。/var 合理分配容量,并在 newsyslog.conf(5) 中设置合适的轮转。将日志转发出主机;不要仅依赖本地磁盘。

配置

1) 包过滤日志(pflog)

pf.conf(5) 中启用定向日志。规则上的 log 关键字向 pflog0 输出元数据,pflogd(8) 将其作为轮转 pcap 存储于 /var/log/pflog

## /etc/pf.conf — 带规则日志的摘录

set skip on lo

wan = "em0"
lan = "em1"
lan_net = "10.10.10.0/24"

block all

# 记录被阻断的 WAN 主动流量
block log on $wan

# 记录到防火墙的 SSH 管理访问尝试
pass  log on $wan proto tcp to ($wan) port 22 keep state

# 允许并记录从 LAN 到任意地址的 HTTPS(演示用;生产环境须收紧)
pass  log on $lan proto tcp from $lan_net to any port 443 keep state

应用策略并确保 pflogd 已启用:

pfctl -vvsr 查看哪些规则带 log,并检查每条规则的计数器。

2) 用 pflow(4) 导出流(NetFlow v5/v9,可选 IPFIX)

pflow(4) 通过 UDP 向远端收集器导出 PF 状态流量摘要。配置 pflow0 接口,指定稳定的源地址、收集器目的(IP:端口)与协议版本。

假定:

  • 导出源:192.0.2.10(环回或管理地址)

  • 收集器:192.0.2.50:2055(NetFlow)

  • 协议:v9

在 PF 中放行导出路径(按需替换 em0/地址):

重载并通过对收集器的抓包确认:

若收集器期望 IPFIX,在 OpenBSD 7.8 上检查 pflow(4) 的 IPFIX 支持与模板选项,然后相应切换 flowproto

3) 用 snmpd(8) 进行系统遥测

snmpd(8) 暴露标准 MIB(接口、系统、传感器)。将其绑定到管理接口并限制访问。具体模型(community 还是 SNMPv3)取决于你的安全策略;工具支持时推荐 SNMPv3。

最小示例:在 LAN 上监听,并允许来自 10.10.10.0/24 的只读查询。

SNMPv3 用户配置与 trap 接收器参见 snmpd.conf(5)。确保 PF 允许来自 NMS 的 UDP 161,以及任何 trap 出站(UDP 162)。

4) 用 syslogd(8) 进行集中日志转发

syslog.conf(5) 将本地日志转发到远端收集器。UDP 转发在主机前加单个 @

若收集器要求 TCP 或 TLS,在其前端放置日志中继,或查阅收集器的接入选项。保持 /etc/newsyslog.conf 的本地留存配置合理。

验证

  • PF 规则计数器与日志,使用 pfctl(8) 与实时 pflog:

  • 链路上的 pflow 导出

  • SNMP 可达性(从 NMS 或测试主机):

  • syslog 转发路径

  • 仪表盘:部署期间使用 systat(1)pfifstat 模式,将排队、规则命中与接口速率与导出的遥测关联。

故障排查

  • 无 pflog 记录。 确保规则含 log、PF 已加载、pflogd(8) 正在运行。用 tcpdump -i pflog0 绕过文件验证流。

  • 收集器看不到 pflow。 核对 pflow0 上的 flowsrc/flowdst/flowproto、PF 允许到收集器的 UDP、中间 ACL 放行。确认时间同步;部分收集器会丢弃偏差过大的时间戳。

  • pflow 丢失率高。 流导出基于 UDP,尽力而为。减小采样窗口(如支持)、专用管理路径,或部署更近的收集器。确保突发时 CPU 未饱和。

  • SNMP 超时。 确认 listen on 地址与 source 限制匹配 NMS。核对 PF 允许来自 NMS 的 UDP 161,且 community 或 v3 凭据正确。

  • Syslog 未转发。 检查 /etc/syslog.conf 语法,重载 syslogd,并确认到收集器 UDP 514 的可达性。若收集器要求 TCP/TLS,使用其支持的接入方法。

  • /var 磁盘压力。 提高 newsyslog.conf(5) 中的轮转频率,并将日志/流出主机。考虑排除嘈杂的 facility 或提高阈值。

参见

最后更新于