先查看本机配置
sudo iptables -L -n
如要重新配置,则先清除已有配置
sudo iptables -F //清除预设表filter中的所有规则链的规则
sudo iptables -X //清除预设表filter中使用者自定链中的规则
如果是远程通过ssh连接服务器进行配置,则先加入允许ssh的规则
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
设定预设规则,DROP掉INPUT链与FORWARD链
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
INPUT链规则配置
允许来自于lo接口的数据访问本机sudo iptables -A INPUT -i lo -j ACCEPT
lo:loopback,回环接口,通常对应的IP地址为127.0.0.1(未开启之前,本机不能ping通本机)允许icmp包通过,也就是允许ping
sudo iptables -A INPUT -p icmp -j ACCEPT
开启web服务端口
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
FORWARD链规则配置
开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丢弃坏的TCP包
sudo iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
处理IP碎片数量,防止攻击,允许每秒100个
sudo iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
限制ICMP,允许每秒1个包,限制触发条件是10个包
sudo iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
保存及调用
iptables-save > /etc/iptables.rules (可能需要切换至root用户)
重启后会失效,重新调用配置
sudo iptables-restore < /etc/iptables.rules
设置自动保存与调用
sudo vim /etc/network/interfaces
在
auto ath0
iface ath0 inet dhcp
后面加上
# Auto save and restore iptables rules
pre-up iptables-restore < /etc/iptables.rules
post-down iptables-save > /etc/iptables.rules
解决INPUT DROP后,引起sshd服务DNS反向解析不顺,从而导致登录等待时间过长的问题:
vim /etc/ssh/sshd_config
在最后添加下面一行,关闭 SSH 的 DNS 反解析
UseDNS no
重启sshd服务
sudo /etc/init.d/ssh restart
-A, --append 新增规则(追加方式)
-D, --delete 删除规则
-L, --list 列出某规则链中的所有规则 iptables -L INPUT
常见参数:
-p, --protocol 指定协议
-d, --dst, --destination 指定目的地址
-i, --in-interface 指定入口网卡 iptables -A INPUT -i eth0 (-i eth+ 所有网卡)
--dport, --destination-port 目的端口
-j 指定对包的处理(ACCEPT、DROP、REJECT、REDIRECT)