Shorewall 重定向规则仅适用于同一网络中的某些主机

Shorewall 重定向规则仅适用于同一网络中的某些主机

我正在尝试使用 Shorewall 的REDIRECT操作来拦截发往防火墙端口 514(TCP 和 UDP)到端口 5000(也是 TCP 和 UDP)的流量,同时也允许流量直接流向后者端口。(原因并不重要,但简而言之,我们以非特权用户身份运行日志聚合器,但守护进程不支持放弃 root 权限,因此它无法侦听特权端口;同时,我们有许多不允许发送到备用端口的旧系统日志实现。)

除了防火墙本身之外,还定义了 3 个区域:loc(10.0.0.0/8)、dmz(172.16.0.0/16)和 net(其他所有区域);后者主要用于拒绝/丢弃来自“不受信任”网络的所有内容。

相关规则如下:

#ACTION         SOURCE          DEST            PROTO   DEST
#                                                       PORT
SECTION NEW
REDIRECT:info   loc             5000            tcp,udp 514
REDIRECT:info   dmz             5000            tcp,udp 514
ACCEPT:info     loc             $FW             tcp,udp 5000
ACCEPT:info     dmz             $FW             tcp,udp 5000

到目前为止一切顺利。(还有其他规则,例如允许 SSH 和 HTTP 连接,但这些规则仅与端口 514 或 5000 相关。)默认策略适用REJECT于 loc 和 dmz,以及DROPnet。

问题是,我有很多主机被拒绝的情况,而同一网络中的相邻主机则被重定向和接受。例如,172.16.0.194 正在尽可能快地将消息塞入我们的聚合器,但 172.16.0.166 的每个数据包都被拒绝。同样,10.140.88.150 被接受,而 10.192.253.4 被拒绝。以下是后一对主机的示例系统日志消息:

Shorewall:loc_dnat:REDIRECT:IN=eth0 OUT= MAC=/*anon*/:08:00 SRC=10.140.88.150 DST=10.1.25.14 LEN=134 TOS=0x00 PREC=0x00 TTL=253 ID=9092 PROTO=UDP SPT=62162 DPT=514 LEN=114
Shorewall:loc2fw:REJECT:IN=eth0 OUT= MAC=/*anon*/:08:00 SRC=10.192.253.4 DST=10.1.25.14 LEN=164 TOS=0x00 PREC=0x00 TTL=254 ID=58464 PROTO=UDP SPT=514 DPT=514 LEN=144

REDIRECT我发现有趣的是,尽管成功发送了成千上万条消息的主机,但在我的日志中成功发送的实例却很少(例如,该主机只有 1 个),而似乎有一个REJECT拒绝的主机发送的每条消息似乎都有一行。同样有趣的是,对于现在被拒绝的许多主机,它们被重定向和接受,直到我们尝试添加新规则时防火墙重新启动(该规则已被删除,但我们仍然遇到相同的问题)。所有当前消息都通过 UDP 传入,但规则需要适用于两种协议。

(同样有趣的是,使用tcpdump,我可以看到 ICMP“端口不可达”响应被发送给一些被拒绝的主机,但没有发送给其他主机。我不知道那意味着什么。)

ESTABLISHED我的理论是,由于某种原因,iptables 将来自被拒绝主机的消息视为或连接的一部分RELATED,因此不会与 中的任何内容匹配SECTION NEW;但是,这是唯一可以放置REDIRECTDNAT规则的部分,所以如果这是问题所在,我不知道如何解决它。(我也不知道如何证实或反驳这个理论。)

我尝试过使用DNAT(列$FW::5000中有DEST)代替REDIRECT,但结果相同。我还尝试过ACCEPT为端口 514 添加规则,但这对谁被规则选中或未被选中没有影响REDIRECT

我需要如何配置 Shorewall 以便正确地将所有连接从指定网络(区域)重定向到给定端口,而不仅仅是其中看似随机的主机?

相关内容