有人可以看看这个 iptables 数据并告诉我它有什么问题吗?
这 24 小时简直是一场噩梦,我甚至无法通过 SSH 连接到我的服务器,而让服务器重新上线的唯一方法是使用 KVM 控制台并禁用防火墙(即service iptables stop
)
最糟糕的是:我必须service iptables stop
每隔 15-30 分钟重新运行此命令才能让服务器重新上线,这太疯狂了!
# Generated by iptables-save v1.3.5 on Sun Dec 8 21:56:04 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:ALLOWIN - [0:0]
:ALLOWOUT - [0:0]
:INVALID - [0:0]
:INVDROP - [0:0]
:LOCALINPUT - [0:0]
:LOCALOUTPUT - [0:0]
:LOGDROPIN - [0:0]
:LOGDROPOUT - [0:0]
:acctboth - [0:0]
-A INPUT -j acctboth
-A INPUT -i eth0 -j LOCALINPUT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p tcp -j INVALID
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 465 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 2077 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 2078 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 2082 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 2083 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 2086 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 2087 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 2095 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 2096 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 2382 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 26 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 30000:35000 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 12001:12009 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 9418 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 8001 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 8002 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 119 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 20 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 21 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 2382 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 26 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 119 -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 0 -m limit --limit 1/sec -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -i eth0 -j LOGDROPIN
-A OUTPUT -j acctboth
-A OUTPUT -o eth0 -j LOCALOUTPUT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 53 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -p tcp -j INVALID
-A OUTPUT -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 9418 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 37 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 43 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 113 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 2087 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 2089 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 2703 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 2382 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 26 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 30000:35000 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 12001 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 12009 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW -m tcp --dport 119 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 20 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 21 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 113 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 123 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 873 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 6277 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 2382 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 26 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW -m udp --dport 119 -j ACCEPT
-A OUTPUT -o eth0 -p icmp -m icmp --icmp-type 0 -m limit --limit 1/sec -j ACCEPT
-A OUTPUT -o eth0 -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A OUTPUT -o eth0 -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A OUTPUT -o eth0 -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A OUTPUT -o eth0 -j LOGDROPOUT
-A ALLOWIN -s 41.228.96.0/255.255.255.0 -i eth0 -j ACCEPT
-A ALLOWIN -s 41.228.96.65 -i eth0 -j ACCEPT
-A ALLOWIN -s 209.51.153.82 -i eth0 -j ACCEPT
-A ALLOWOUT -d 41.228.96.0/255.255.255.0 -o eth0 -j ACCEPT
-A ALLOWOUT -d 41.228.96.65 -o eth0 -j ACCEPT
-A ALLOWOUT -d 209.51.153.82 -o eth0 -j ACCEPT
-A INVALID -m state --state INVALID -j INVDROP
-A INVALID -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j INVDROP
-A INVALID -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j INVDROP
-A INVALID -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j INVDROP
-A INVALID -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j INVDROP
-A INVALID -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j INVDROP
-A INVALID -p tcp -m tcp --tcp-flags FIN,ACK FIN -j INVDROP
-A INVALID -p tcp -m tcp --tcp-flags PSH,ACK PSH -j INVDROP
-A INVALID -p tcp -m tcp --tcp-flags ACK,URG URG -j INVDROP
-A INVALID -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j INVDROP
-A INVDROP -j DROP
-A LOCALINPUT -i eth0 -j ALLOWIN
-A LOCALOUTPUT -o eth0 -j ALLOWOUT
-A LOGDROPIN -p tcp -m tcp --dport 67 -j DROP
-A LOGDROPIN -p udp -m udp --dport 67 -j DROP
-A LOGDROPIN -p tcp -m tcp --dport 68 -j DROP
-A LOGDROPIN -p udp -m udp --dport 68 -j DROP
-A LOGDROPIN -p tcp -m tcp --dport 111 -j DROP
-A LOGDROPIN -p udp -m udp --dport 111 -j DROP
-A LOGDROPIN -p tcp -m tcp --dport 113 -j DROP
-A LOGDROPIN -p udp -m udp --dport 113 -j DROP
-A LOGDROPIN -p tcp -m tcp --dport 135:139 -j DROP
-A LOGDROPIN -p udp -m udp --dport 135:139 -j DROP
-A LOGDROPIN -p tcp -m tcp --dport 445 -j DROP
-A LOGDROPIN -p udp -m udp --dport 445 -j DROP
-A LOGDROPIN -p tcp -m tcp --dport 513 -j DROP
-A LOGDROPIN -p udp -m udp --dport 513 -j DROP
-A LOGDROPIN -p tcp -m tcp --dport 520 -j DROP
-A LOGDROPIN -p udp -m udp --dport 520 -j DROP
-A LOGDROPIN -p tcp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *TCP_IN Blocked* "
-A LOGDROPIN -p udp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *UDP_IN Blocked* "
-A LOGDROPIN -p icmp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *ICMP_IN Blocked* "
-A LOGDROPIN -j DROP
-A LOGDROPOUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 30/min -j LOG --log-prefix "Firewall: *TCP_OUT Blocked* " --log-uid
-A LOGDROPOUT -p udp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *UDP_OUT Blocked* " --log-uid
-A LOGDROPOUT -p icmp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *ICMP_OUT Blocked* " --log-uid
-A LOGDROPOUT -j DROP
-A acctboth -s 111.11.11.146 -i ! lo -p tcp -m tcp --dport 80
-A acctboth -d 111.11.11.146 -i ! lo -p tcp -m tcp --sport 80
-A acctboth -s 111.11.11.146 -i ! lo -p tcp -m tcp --dport 25
-A acctboth -d 111.11.11.146 -i ! lo -p tcp -m tcp --sport 25
-A acctboth -s 111.11.11.146 -i ! lo -p tcp -m tcp --dport 110
-A acctboth -d 111.11.11.146 -i ! lo -p tcp -m tcp --sport 110
-A acctboth -s 111.11.11.146 -i ! lo -p icmp
-A acctboth -d 111.11.11.146 -i ! lo -p icmp
-A acctboth -s 111.11.11.146 -i ! lo -p tcp
-A acctboth -d 111.11.11.146 -i ! lo -p tcp
-A acctboth -s 111.11.11.146 -i ! lo -p udp
-A acctboth -d 111.11.11.146 -i ! lo -p udp
-A acctboth -s 111.11.11.146 -i ! lo
-A acctboth -d 111.11.11.146 -i ! lo
-A acctboth -s 111.11.11.160 -i ! lo -p tcp -m tcp --dport 80
-A acctboth -d 111.11.11.160 -i ! lo -p tcp -m tcp --sport 80
-A acctboth -s 111.11.11.160 -i ! lo -p tcp -m tcp --dport 443
-A acctboth -d 111.11.11.160 -i ! lo -p tcp -m tcp --sport 443
-A acctboth -s 111.11.11.160 -i ! lo -p tcp -m tcp --dport 25
-A acctboth -d 111.11.11.160 -i ! lo -p tcp -m tcp --sport 25
-A acctboth -s 111.11.11.160 -i ! lo -p tcp -m tcp --dport 110
-A acctboth -d 111.11.11.160 -i ! lo -p tcp -m tcp --sport 110
-A acctboth -s 111.11.11.160 -i ! lo -p icmp
-A acctboth -d 111.11.11.160 -i ! lo -p icmp
-A acctboth -s 111.11.11.160 -i ! lo -p tcp
-A acctboth -d 111.11.11.160 -i ! lo -p tcp
-A acctboth -s 111.11.11.160 -i ! lo -p udp
-A acctboth -d 111.11.11.160 -i ! lo -p udp
-A acctboth -s 111.11.11.160 -i ! lo
-A acctboth -d 111.11.11.160 -i ! lo
-A acctboth -i ! lo
COMMIT
# Completed on Sun Dec 8 21:56:04 2013
# Generated by iptables-save v1.3.5 on Sun Dec 8 21:56:04 2013
*nat
:PREROUTING ACCEPT [52:2991]
:POSTROUTING ACCEPT [131:10103]
:OUTPUT ACCEPT [131:10103]
COMMIT
# Completed on Sun Dec 8 21:56:04 2013
# Generated by iptables-save v1.3.5 on Sun Dec 8 21:56:04 2013
*mangle
:PREROUTING ACCEPT [1314:156437]
:INPUT ACCEPT [1314:156437]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1741:1844557]
:POSTROUTING ACCEPT [1741:1844557]
COMMIT
# Completed on Sun Dec 8 21:56:04 2013
KVM 控制台显示很多这样的错误
显然错误是由这些行引起的:
-A LOGDROPIN -p tcp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *TCP_IN Blocked* "
-A LOGDROPIN -p udp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *UDP_IN Blocked* "
-A LOGDROPIN -p icmp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *ICMP_IN Blocked* "
-A LOGDROPIN -j DROP
-A LOGDROPOUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 30/min -j LOG --log-prefix "Firewall: *TCP_OUT Blocked* " --log-uid
-A LOGDROPOUT -p udp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *UDP_OUT Blocked* " --log-uid
-A LOGDROPOUT -p icmp -m limit --limit 30/min -j LOG --log-prefix "Firewall: *ICMP_OUT Blocked* " --log-uid
-A LOGDROPOUT -j DROP
但我完全不知道为什么会发生这种情况以及如何解决这个问题!!!
PS. 如您所见,我对防火墙规则完全是个新手。
我在跑CentOS 6.4 + Apache 2.2.15,我不再在此服务器上使用 cPanel。
答案1
我看到两件事:
您不应该在之前设置任何规则:
-A 输入 -i eth0 -m 状态 --状态相关,已建立 -j 接受
您的“无效”规则不应该存在,而且看起来太复杂,而且可能有错误。
-m state --state INVALID
我建议你限制它只您记录了无效的数据包。
还存在一些错误,其中 netfilter 会将有效数据包视为无效(当然 netfilter 表示其他供应商错了),尤其是当您位于负载平衡器/防火墙后面时,但首先您应该简单地删除伪“无效检查”,如果您认为它们有任何价值,您应该将它们放在 --state RELATED,ESTABLISHED 规则之后,并记录您认为无效的数据包。
根据您的规则集,KVM 控制台上的消息完全正常。
答案2
我建议删除 --limit 记录,看看是否有效。如果您遇到拒绝服务攻击的问题,那么您可以尝试找出限制。但我猜你不需要它们。