CentOS 6.8 iptables 不保存

CentOS 6.8 iptables 不保存

我有一个 VPS,用于托管一个 Wordpress 网站,我想限制该网站的访问。最终目标是将 SSH 访问限制为两个 IP,并限制除下面规则中指定的端口之外的所有入站。它们似乎在重新启动服务器(reboot 命令)时没有保存。规则似乎在运行后适用,但在服务器重新启动后不适用。我已验证它们正在写入/etc/sysconfig/iptables。以下是我在控制台中添加到文件的内容:

iptables -F; iptables -X; iptables -Z

iptables -A INPUT -s X.X.X.X -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s X.X.X.X -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables-save > /etc/sysconfig/iptables

实际写的内容如下:

# Generated by iptables-save v1.4.7 on Wed Nov 30 16:01:17 2016
*mangle
:PREROUTING ACCEPT [572:59036]
:INPUT ACCEPT [572:59036]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [486:358945]
:POSTROUTING ACCEPT [483:358793]
-A PREROUTING -p tcp -m tcp --sport 110 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p udp -m udp --sport 110 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p tcp -m tcp --sport 1110 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p udp -m udp --sport 1110 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p tcp -m tcp --sport 465 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p udp -m udp --sport 465 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p tcp -m tcp --sport 993 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p udp -m udp --sport 993 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p tcp -m tcp --sport 995 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p udp -m udp --sport 995 -j TOS --set-tos 0x04/0xff
-A PREROUTING -p tcp -m tcp --sport 20 -j TOS --set-tos 0x08/0xff
-A PREROUTING -p udp -m udp --sport 20 -j TOS --set-tos 0x08/0xff
-A PREROUTING -p tcp -m tcp --sport 21 -j TOS --set-tos 0x08/0xff
-A PREROUTING -p udp -m udp --sport 21 -j TOS --set-tos 0x08/0xff
-A PREROUTING -p tcp -m tcp --sport 22 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p udp -m udp --sport 22 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p tcp -m tcp --sport 25 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p udp -m udp --sport 25 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p tcp -m tcp --sport 53 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p udp -m udp --sport 53 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p tcp -m tcp --sport 80 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p udp -m udp --sport 80 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p tcp -m tcp --sport 443 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p udp -m udp --sport 443 -j TOS --set-tos 0x10/0xff
-A PREROUTING -p tcp -m tcp --sport 512:65535 -j TOS --set-tos 0x00/0xff
-A PREROUTING -p udp -m udp --sport 512:65535 -j TOS --set-tos 0x00/0xff
-A POSTROUTING -p tcp -m tcp --dport 110 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p udp -m udp --dport 110 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p tcp -m tcp --dport 1110 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p udp -m udp --dport 1110 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p tcp -m tcp --dport 465 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p udp -m udp --dport 465 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p tcp -m tcp --dport 993 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p udp -m udp --dport 993 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p tcp -m tcp --dport 995 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p udp -m udp --dport 995 -j TOS --set-tos 0x04/0xff
-A POSTROUTING -p tcp -m tcp --dport 20 -j TOS --set-tos 0x08/0xff
-A POSTROUTING -p udp -m udp --dport 20 -j TOS --set-tos 0x08/0xff
-A POSTROUTING -p tcp -m tcp --dport 21 -j TOS --set-tos 0x08/0xff
-A POSTROUTING -p udp -m udp --dport 21 -j TOS --set-tos 0x08/0xff
-A POSTROUTING -p tcp -m tcp --dport 22 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p udp -m udp --dport 22 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p tcp -m tcp --dport 25 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p udp -m udp --dport 25 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p tcp -m tcp --dport 53 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p udp -m udp --dport 53 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p tcp -m tcp --dport 80 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p udp -m udp --dport 80 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p tcp -m tcp --dport 443 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p udp -m udp --dport 443 -j TOS --set-tos 0x10/0xff
-A POSTROUTING -p tcp -m tcp --dport 512:65535 -j TOS --set-tos 0x00/0xff
-A POSTROUTING -p udp -m udp --dport 512:65535 -j TOS --set-tos 0x00/0xff
COMMIT
# Completed on Wed Nov 30 16:01:17 2016
# Generated by iptables-save v1.4.7 on Wed Nov 30 16:01:17 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s X.X.X.X/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s X.X.X.X/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p udp -m udp --dport 123 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
COMMIT
# Completed on Wed Nov 30 16:01:17 2016

似乎 mangle 被附加在过滤器之前。这有什么区别吗?

输出iptables -L -v -n如下:

Chain INPUT (policy DROP 37 packets, 1951 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1029 86325 ACCEPT     tcp  --  *      *       X.X.X.X              0.0.0.0/0           tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       X.X.X.X              0.0.0.0/0           tcp dpt:22
  632  316K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
   85 40646 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    2   128 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:123
    9   678 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:53
    2   100 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:53

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1529 packets, 484K bytes)
 pkts bytes target     prot opt in     out     source               destination

如果我重新启动服务(但不是整个服务器),service iptables restart所有内容都会保留,规则似乎仍然有效。但是,如果我使用 重新启动服务器reboot,/etc/sysconfig/iptables 中的所有内容仍然存在,但是 的输出iptables -L -v -n现在非常不同,有数千行。我的规则似乎也不再适用,尽管文件中的所有内容看起来仍然相同。

我相信运行级别也设置得适当:

[root@s1 ~]# chkconfig --list iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

所以,我的问题是:1. 为什么服务器重启后规则不适用,尽管它们在服务重启后适用并且似乎保持不变?我怎样才能让它们适用?2. iptables 文件中的 mangle 部分有区别吗?在这种情况下是否需要它?3. 为什么重启后输出不同iptables -L -v -n?它似乎只在服务器重启后发生变化,而不是在服务重启后发生变化。

非常感谢任何想法和帮助。

答案1

听起来好像有另一个防火墙正在运行。检查是否有任何防火墙服务(如 Shorewall、UFW 等),或者是否有任何其他服务(如 Webmin)干扰您的规则设置。

答案2

我对 Unix 还不是很熟悉,但就我而言,我发现将 iptables 规则创建到一个文件中然后从以下位置运行它很有趣:

/etc/网络/接口

相关内容