Iptables小总结


1、iptables四表五链
四个表:
filter:用于过滤
nat:用于nat功能(端口映射,地址映射等)
mangle:用于对特定数据包的修改
raw:一般不让iptables做数据包的链接跟踪处理
五个链:
INPUT:匹配目的地址为本机的
OUTPUT:向外转发的
FORWARD:需要经过本机的数据包
PREROUTING:路由前,用于修改目的地址(DNAT)
POSTROUTING:路由后,用于修改源地址(SNAT)

2、常用操作命令
命令格式:iptables  [-t表]  -命令  匹配  操作
-A(append):追加一条规则
-I(insert):插入一条规则
-D(delete):删除一条规则,例如:iptables –D INPUT 3,删除第三条规则
-F(flush):清空规则
-L(list):列出规则,使用-vnL来显示比较好
-P(policy):设置某链默认规则

3、匹配条件
-i:进入接口
-o:出去接口
-s:来源地址,例如:-s 192.168.1.0/24,可单IP
-d:目的地址
-p:协议类型(tcp、udp、icmp)
--sport:来源端口,例如:--sport 1000:,匹配源端口1000以上的,也可以1000:3000指定范围
--dport:目的端口

4、动作
ACCEPT:允许数据包通过
DROP:阻止数据包通过
REJECT:拒绝数据包通过,并返回报错信息
SNAT:应用nat表的POSTROUTING链,进行源地址转换,可单个、一组IP
DNAT:应用nat表的PREROUTING链,进行目的地址转换,可单个、一组IP
MASQUERADE:动态源地址转换,动态IP时使用
例如ADSL拨号上网:iptables–t nat –A POSTROUTING –s 192.168.1.0/24 –o pppo –j MASQUERADE

5、附加模块
state:包状态匹配,例如:iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(NEW 第一个数据包状态,RELATED 有关系的,当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就是RELATED状态,像FTP连接。ESTABLISHED 已建立连接的状态,INVALID 没有任何状态)
mac:来源MAC地址匹配
limit:包速率匹配
multiport:多端口匹配,端口以逗号分隔

6、防止小量攻击
预防DOS攻击,限制单个IP最多30个初始连接:
iptables -I INPUT -ptcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT
iptables -A INPUT -ptcp -m state --state ESTABLISHED,RELATED -j ACCEPT
预防DDOS攻击,限制每秒并发连接数:
iptables -A INPUT -ptcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables-A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT 

7、配置NAT
echo "1" > /proc/sys/net/ipv4/ip_forward
内网访问外网(SNAT):
iptables –t nat -A PREROUTING -i eth0 -d 172.0.0.10 -j DNAT --to 192.168.0.100
外网访问内网(DNAT):
iptables–t nat -A PREROUTING -d 172.0.0.10 -p tcp --dport 80 -j DNAT --to 192.168.0.100
iptables -t nat -A POSTROUTING -d 192.168.0.100 -p tcp --dport 80 -j SNAT --to 172.0.0.10

推荐阅读:

iptables—包过滤(网络层)防火墙

Linux防火墙iptables详细教程

iptables+L7+Squid实现完善的软件防火墙

iptables的备份、恢复及防火墙脚本的基本使用

Linux下防火墙iptables用法规则详解

相关内容