我有一个Ubuntu服务器,我的SIP代理服务器当前正在运行。 我已经根据以下语句在我的代理服务器上configuration了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我可以看到我的Jitsi (支持SIP,XMPP / Jabber等协议的audio/video和聊天通信器)发送的数据包到我的代理服务器进行身份validation正在被接受:
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 ?
您正在接受状态为NEW或ESTABLISHED数据包,但不是RELATED 。 RELATED状态可能被分配给正在开始一个新连接的数据包(或者任何conntrack认为UDP的“连接”),但是与另一个现有的连接有关。 此状态用于使用多个连接(如FTP或SIP)以及ICMP错误答复的协议。
在你的情况下, xt_conntrack_sip模块可能会拦截SIP控制连接,并添加conntrack条目来标记相关的audio/videostream的UDP数据包为RELATED ; 你的规则应该接受这样的包。
此外,您可能需要接受所有ESTABLISHED和RELATED数据包而不检查端口号 – 否则由您的机器启动的连接将无法工作,因为此类连接通常在您的端使用短暂(不固定)的端口号。 这应该是安全的,因为具有这些状态的数据包或者属于您的机器启动的连接,或者与其他已经允许的需要多于一个连接的协议的连接相关联。
但在你的情况下,第一个问题是你的日志logging规则实际上是插入INPUT链的开始,并logging一切为“拒绝”! 只需使用-A而不是-I将其放在链的末尾(假设-P INPUT DROP已设置,因此未明确允许的数据包将被丢弃)。
(是的,在这种情况下,Ubuntu wiki上的iptables howtobuild议使用错误的命令。)