IPTABLES 由于端口错误而拒绝

IPTABLES 由于端口错误而拒绝

我正在使用防火墙,遇到了一些问题。我打开一个SOCKS5端口,假设33333我在 IPTABLES 中没有任何规则,它就可以正常工作。当我应用我的规则时,它就可以正常工作。这些是我的规则:

# RULE 0 : Add some headers
*filter

# RULE 1
-I INPUT -i eth1 -s 0/0 -p tcp  --dport 1080:65535  -j REJECT <--- THIS RULE MIGHT BE WRONG
-I INPUT -i eth1 -p tcp --dport ssh -j REJECT

# RULE 13
-I INPUT -i eth1 -p tcp --dport 25 -j REJECT
-I INPUT -i eth1 -p tcp --dport 465 -j REJECT

# RULE 2
-I INPUT -i eth1 -p tcp --match multiport --dport 80 -j ACCEPT
-I INPUT -i eth1 -p tcp -s xxx.xxx.175.220 --dport ssh -j ACCEPT
-I INPUT -i eth1 -p tcp -s xxx.xxx.175.222 --dport ssh -j ACCEPT
-I INPUT -i eth1 -p tcp -s xxx.xxx.175.242 --dport ssh -j ACCEPT

# RULE 7
-I INPUT -i eth1 -p tcp --match multiport --dports 15001:25000 -j ACCEPT
-I INPUT -i eth1 -p tcp --dport 18420 -j REJECT
-I INPUT -i eth1 -p tcp  -s xxx.xxx.35.132/32 --dport 18420 -j ACCEPT
-I INPUT -i eth1 -p tcp --dport 23152 -j REJECT
-I INPUT -i eth1 -p tcp  -s xxx.xxx.199.34/32 --dport 23152 -j ACCEPT
-I INPUT -i eth1 -p tcp --dport 16932 -j REJECT
-I INPUT -i eth1 -p tcp  -s xxx.xxx.255.186/32 --dport 16932 -j ACCEPT
-I INPUT -i eth1 -p tcp --dport 19472 -j REJECT

# RULE 8
-I INPUT -i eth1 -p tcp  --match multiport --dports 5000:6000 -j ACCEPT

# RULE 8
-I INPUT -i eth1 -p tcp  -s 127.0.0.1/32 --match multiport --dports 0:65535 -j ACCEPT
-I INPUT -i eth1 -p tcp  -s xxx.xxx.141.110/32 --match multiport --dports 0:65535 -j ACCEPT

# RULE 9
-I OUTPUT -o eth1 -d 0.0.0.0/0 -j ACCEPT
-I INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# RULE 11
-I INPUT -i eth1 -s xxx.xxx.163.214 -p tcp  --dport 6000:65535  -j REJECT
-I INPUT -i eth1 -s xxx.xxx.154.8 -p tcp  --dport 6000:65535  -j REJECT
-I INPUT -i eth1 -s xxx.xxx.208.175 -p tcp  --dport 6000:65535  -j REJECT
-I INPUT -i eth1 -s xxx.xxx.232.43 -p tcp  --dport 6000:65535  -j REJECT
-I INPUT -i eth1 -s xxx.xxx.60.239 -p tcp  --dport 6000:65535  -j REJECT

# RULE 13
COMMIT

如果我运行ifconfig我会得到这个:

eth1      Link encap:Ethernet  HWaddr 0c:c4:7a:0a:89:b0
          inet addr:xxx.xxx.141.110  Bcast:xxx.xxx.141.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4558771351 errors:0 dropped:6351 overruns:0 frame:0
          TX packets:5256425350 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:974002772174 (907.1 GiB)  TX bytes:1003703499168 (934.7 GiB)
          Interrupt:16 Memory:df900000-df920000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8611035 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8611035 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3936947723 (3.6 GiB)  TX bytes:3936947723 (3.6 GiB)

如果我删除这一行

-I INPUT -i eth1 -s 0/0 -p tcp  --dport 1080:65535  -j REJECT <--- THIS RULE MIGHT BE WRONG

它能工作,但其他规则却不行,因为我没有激活任何防火墙,这就是我开发它的方式。“有趣”的是,在其他服务器上,它却eth0运行eth1正常。

我还在-i eth1每个之后添加了-I INPUT但没有...

问题是什么?

在此服务器上,我Debian GNU/Linux 7 \n \l在其他服务器上也使用了Ubuntu 14相同的软件。在此服务器(有问题的服务器)上,我必须使用 Debian7...这不是我的选择。

谢谢。

答案1

由于第一条规则,与端口 33333 的连接无法工作:

-I INPUT -i eth1 -s 0/0 -p tcp  --dport 1080:65535  -j REJECT

此规则虽然被 iptables 接受,但格式不正确。它应该看起来像这样(-s 0/0由于匹配所有数据包,因此是多余的):

-I INPUT -i eth1 -p tcp -m multiport --dports 1080:65535 -j REJECT

此规则将丢弃从 1080 到 65535 的所有端口上的拒绝数据包。一个简单的修复方法是添加一条规则来打开端口 33333:

-A INPUT -i eth1 -p tcp --dport 33333 -j ACCEPT

无论如何,您创建防火墙的方法(即在各个端口/各个主机上混合接受/拒绝)可能不是最佳方法。通常,INPUT 表中的规则如下:

  • 接受某些数据包
  • 丢弃/拒绝所有其他

显示更详细的例子:

# Accept packets on loopback interface
-A INPUT -i lo -j ACCEPT
# Open certain ports
-A INPUT -p tcp -m multiport --dports x,y,z -j ACCEPT
...
# Accept packets from established/related connections - to allow packets from locally-originated connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Drop everything else (or REJECT)
-A INPUT -j DROP

这使得防火墙干净、直接,只有某些端口是打开的,而所有其他端口都关闭。

相关内容