保护你的Web服务器 iptables防火墙脚本全解读

14 年 ago jony 保护你的Web服务器 iptables防火墙脚本全解读已关闭评论
#!/bin/bash
iptables -F
iptables -F -t nat
iptables -X

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#load connection-tracking modules
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

iptables -A INPUT -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 10 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 80,22 -j ACCEPT

在本脚本中,我们配置了一些安全措施,以防止外部的ping和SYN洪水攻击,并且考虑到外部的疯狂端口扫描软件可能会影响服务器的入口带宽,所以在这里也做了限制:

iptables -A INPUT -p tcp --syn -m limit --limit 100/s --limit-burst 100 -j  ACCEPT

上面的命令每秒钟最多允许100个新连接。请注意这里的新连接指的是state为New的数据包,在后面我们也配置了允许状态为ESTABLISHED和RELATED的数据通过;另外,100这个阀值则要根据服务器的实际情况来调整,如果是并发量不大的服务器这个数值就要调小,如果是访问量非常大且并发数不小的服务器,这个值则还需要调大。

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s –limit-burst 10 -j ACCEPT

这是为了防止ping洪水攻击,限制每秒的ping包不超过10个。

iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT

上面的命令防止各种端口扫描,将SYN及ACK SYN限制为每秒钟不超过200个,免得把数务器带宽耗尽了。