安装软件
我们购买的VPS,一般都已经预装iptables,可以先检查下iptables状态,确认是否安装.
service iptables status
若提示为iptables:unrecognized service,则需要安装.
yum install iptables
#CentOS系统
apt-get install iptables
#Debian系统
配置规则
以下命令以CentOS为例.
安装好的iptables配置文件在/etc/sysconfig/iptables,默认的iptables我们可以无视之,采用下面的命令,清除默认规则.
iptables –F
iptables –X
iptables –Z
以下是一个简单的规则:
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp –dport 21 -j ACCEPT
iptables -A INPUT -p tcp –dport 20 -j ACCEPT
iptables -A INPUT -j REJECT
(注意:如果22端口未加入允许规则,SSH链接会直接断开。)
iptables -A FORWARD -j REJECT
如果还有需要开启的端口,可以在上面添加,然后,保存规则并重启。
service iptables save
#保存
或者/etc/rc.d/init.d/iptables save
service iptables restart
#重启
在写到iptalbes规则的时候,我这里列出可能涉及的其他规则,譬如禁止单个IP:
-A INPUT -s 1.2.3.4 -j DROP
查询修改及删除
iptables -L –n
#查询规则
iptables -L -n --line-numbers
#将规则按数字序号显示方便删除
iptables -D INPUT 4
#删除第四条规则
设定开机启动
chkconfig iptables on
其他规则
以下部分规则,大家可以做些参考.
sysctl -w net.ipv4.tcp_syncookies=1 &>/dev/null
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=3800 &>/dev/null
sysctl -w net.ipv4.ip_conntrack_max=300000 &>/dev/null
iptables -N syn-flood
iptables -A INPUT -p tcp –syn -j syn-flood
iptables -A syn-flood -p tcp -m limit –limit 3/s –limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT
iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT
iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j LOG –log-prefix “New not syn:”
iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP