Ubuntu iptables 丢弃已接受的数据包

Ubuntu iptables 丢弃已接受的数据包

我有一台 Ubuntu 服务器,我的 SIP 代理服务器目前正在运行。我已根据以下语句在代理服务器上配置了 iptables:

*filter


# Allows all loopback traffic and drop all traffic to 127/8 that doesn't use lo
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

-A INPUT -i eth0 -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -i eth2 -p icmp --icmp-type 8 -s 0/0 -d 1.2.3.4 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth2 -d 1.2.3.4 -p udp -m multiport --dports 5060,5061 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth2 -d 1.2.3.4 -p tcp -m multiport --dports 5060,5061 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth2 -j REJECT

# Reject all other inbound from public (eth2) - default deny unless explicitly allowed policy
-A FORWARD -i eth0 -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -i eth2 -j REJECT

# Outbound traffic
-A OUTPUT -j ACCEPT

# Log
-I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7


COMMIT

通过执行,iptables -L -v -n我可以看到我从我的吉特西(支持 SIP、XMPP/Jabber 等协议的音频/视频和聊天通信器)到我的代理服务器进行身份验证,正在被接受:

pkts    bytes   target     prot opt in     out     source               destination
14      7881    ACCEPT     udp  --  eth2   *       0.0.0.0/0            1.2.3.4      multiport dports 5060,5061 state NEW,ESTABLISHED
0       0       ACCEPT     tcp  --  eth2   *       0.0.0.0/0            1.2.3.4      multiport dports 5060,5061 state NEW,ESTABLISHED
0       0       REJECT     all  --  eth2   *       0.0.0.0/0            0.0.0.0/0    reject-with icmp-port-unreachable

但是,iptables 报告说这些数据包被丢弃了!

Feb  5 16:55:25 sip kernel: [  788.538025] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5381 PROTO=UDP SPT=2119 DPT=5060 LEN=546
Feb  5 16:55:26 sip kernel: [  789.041576] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5387 PROTO=UDP SPT=2119 DPT=5060 LEN=546
Feb  5 16:55:27 sip kernel: [  790.041679] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5388 PROTO=UDP SPT=2119 DPT=5060 LEN=546
Feb  5 16:55:29 sip kernel: [  792.041974] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5390 PROTO=UDP SPT=2119 DPT=5060 LEN=546
Feb  5 16:55:33 sip kernel: [  796.042401] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5391 PROTO=UDP SPT=2119 DPT=5060 LEN=546
Feb  5 16:55:41 sip kernel: [  804.043009] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5393 PROTO=UDP SPT=2119 DPT=5060 LEN=546
Feb  5 16:55:53 sip kernel: [  816.043858] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5410 PROTO=UDP SPT=2119 DPT=5060 LEN=546
Feb  5 16:58:18 sip kernel: [  961.394041] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5785 PROTO=UDP SPT=1254 DPT=5060 LEN=546
Feb  5 16:58:18 sip kernel: [  961.894736] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5786 PROTO=UDP SPT=1254 DPT=5060 LEN=546
Feb  5 16:58:19 sip kernel: [  962.894533] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5787 PROTO=UDP SPT=1254 DPT=5060 LEN=546
Feb  5 16:58:21 sip kernel: [  964.894617] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5788 PROTO=UDP SPT=1254 DPT=5060 LEN=546
Feb  5 16:58:25 sip kernel: [  968.894651] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=566 TOS=0x00 PREC=0x00 TTL=127 ID=5789 PROTO=UDP SPT=1254 DPT=5060 LEN=546
Feb  5 16:58:32 sip kernel: [  975.544611] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=614 TOS=0x00 PREC=0x00 TTL=127 ID=5793 PROTO=UDP SPT=1254 DPT=5060 LEN=594
Feb  5 16:58:44 sip kernel: [  987.045243] iptables denied: IN=eth2 OUT= MAC=00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD SRC=4.3.2.1 DST=1.2.3.4 LEN=614 TOS=0x00 PREC=0x00 TTL=127 ID=5808 PROTO=UDP SPT=1254 DPT=5060 LEN=594

为什么我的数据包被丢弃了,尽管它们已被规则接受-A INPUT -i eth2 -d 1.2.3.4 -p udp -m multiport --dports 5060,5061 -m state --state NEW,ESTABLISHED -j ACCEPT

答案1

您正在接受状态为NEW或 的数据包ESTABLISHED,但不是RELATEDRELATED状态可能分配给正在启动新连接(或 conntrack 认为是 UDP 的“连接”)但与另一个现有连接相关的数据包。此状态用于使用多个连接的协议(如 FTP 或 SIP)以及 ICMP 错误回复。

在您的情况下,xt_conntrack_sip模块可能会拦截 SIP 控制连接并添加 conntrack 条目以将与音频/视频流相关的 UDP 数据包标记为RELATED;您的规则应该接受这样的数据包。

此外,您可能需要接受所有数据ESTABLISHEDRELATED而不检查端口号 — 否则您的计算机发起的连接将不起作用,因为此类连接通常使用您这边的临时(非固定)端口号。这应该是安全的,因为具有这些状态的数据包要么属于您的计算机发起的连接,要么与其他已允许的连接相关联,这些连接需要多个连接的协议。


但您的情况中,第一个问题是您的日志记录规则实际上是插入在 INPUT 链的开头,并将所有内容记录为“拒绝”!只需使用-A而不是-I将其放在链的末尾(这假设-P INPUT DROP已设置,因此未明确允许的数据包将被丢弃)。

(是的,在这种情况下Ubuntu wiki 上的 iptables 指南建议使用错误的命令。

相关内容