iptables的使用
一、iptables的规则链
PREROUTING链:在进行路由选择前处理数据包
二、iptables的规则表
filter表:确定是否放行该数据包(过滤)
三、数据包过滤匹配流程
四、iptables命令的语法格式
除非设置规则链的缺省策略,否则需要指定匹配条件
五、设置匹配数据包的条件
包括网络协议、IP地址、网络接口等匹配方式
常用的协议包括tcp、udp、icmp等
iptables -I INPUT -p icmp -j REJECT iptables -A FORWARD -p !icmp -j ACCEPT
地址可以是单个IP地址、网络地址(带掩码长度)
iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -A INPUT -i eth1 -s 192.168.0.0/12 -j DROP iptables -A FORWARD -o eth1 -d 12.1.15.1 -j DROP
包括端口、TCP标记、ICMP类型等匹配方式
采用“端口1:端口2”的形式可以指定一个范围的端口
iptables -A FORWARD -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 20:80 -j ACCEPT
如“--tcp-flags SYN,RST,ACK SYN”表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件
iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK -就REJECT
iptables -A INPUT -i eth0 -p icmp --icmp-type ECHO-Request -j DROP iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
使用“-m mac”结合“--mac-source MAC地址”的形式
iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3f -j DROP
多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔
iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
以“-”符号连接起始IP地址、结束IP地址
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
同时表示多种状态时以逗号“,”分隔
iptables -A FORWARD -m state --state NEW -p tcp ! --svn -j DROP iptables -A INPUT -p tcp -m state --state NEW -j DROP iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
常见的数据包状态包括:NEW、ESTABLISHED、RELATED
六、数据包控制
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j LOG iptables -A INPUT -p tcp --dport 22 -j DROP iptables -t filter -N MyLAN1 iptables -A FORWARD -s 192.168.1.0/24 -j MyLAN1 iptables -A FORWARD -d 192.168.1.0/24 -j MyLAN1 iptables -A MyLAN1 -p icmp -j DROP