3.iptables的匹配顺序:
1)表的顺序(优先级):raw-->mangle-->nat-->filter
2)链的顺序:按照数据流向进行的。
a.入站数据流:PREROUTING-->INPUT
b.出站数据流:OUTPUT-->POSTROUTING
c.转发数据流:PREROUTING-->FORWARD-->POSTROUTING
3)链内规则顺序:从上到下顺序匹配,匹配即停止(LOG除外),如果不匹配使用默认规则。
二.编写iptables规则:
语法:iptables -t 表名 选项 链名 条件 -j 动作
1.编写iptables规则的注意事项:
表省略默认filter,链省略表内所有链,必须设置链的默认策略,选项、链名、动作大写、其他小写。
2.动作:
DROP丢弃,REJECT拒绝,ACCEPT允许,LOG日志
3.选项:对链内规则进行增删改查
1)增:-I指定序号添加规则默认开始添加,-A末尾添加规则,-N新建链
2)删:-D删除一条规则,-F清空链内所有规则,-X删除新建链
3)查:-L列表查看规则,-n数字方式显示,-v显示更详细的信息,--line-numbers显示规则序号;一般用组合如:-L -n、-L -n -v、-L -n -v --line-numbers
4)设置默认策略:-P 链名 DROP
4.iptables编写的条件分类:
1)通用匹配条件:
网络协议(tcp、udp、icmp):-p 网络协议
接口(网卡名:入站、出站):-i 入站网卡, -o 出站网卡
ip地址(源、目标地址):-s 源ip地址或网段,-d 目的ip地址
2)隐含匹配条件:
端口(源、目的端口):-p tcp或udp --dport 目标端口 | --sport 源端口 (单个端口,或连续端口2000:3000);
icmp的类型(8请求,0返回,3网络不可达):-p icmp --icmp-type 类型;
TCP协议标记(SYN,ACK,FIN,RST):-p tcp --tcp-flags 标记范围 被标记的状态 (常用:fin,syn,ack,rst syn);
3)显示匹配条件:
多端口:-m multiport -p tcp|udp --sports 源端口1,源端口2... 或--dports 目的端口1,...
ip地址范围:-m iprange --src-range 源ip1-源ip2
mac地址范围:-m mac --source-mac 源MAC地址
状态:-m state --state 状态 (状态有:NEW新连接,ESTABLISHED已经建立连接,RELATED和已经建立连接相关连接)
三.主机型防火墙规则编写建议流程:
1.需求分析:对外开放的服务;远程管理严格控制;允许本地相互访问;允许已经建立连接和相关连接状态;剩余流量拒绝。
2.编写主机型防火墙流程:
1)对外开放服务:
iptables -A INPUT -m state --state NEW -p tcp或udp -m multiport --dport 服务端口,... -j ACCEPT
2)远程管理严格控制:
iptables -A INPUT -s 管理员IP地址 -p tcp --dport 22 -j ACCEPT
3)允许本地相互访问:
iptables -A INPUT -i lo -j ACCEPT
4)允许已经建立和相关连接状态:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
5)剩余流量拒绝:
iptables -P INPUT DROP
iptables -P FORWARD DROP (设置默认策略)
3.管理防火墙流程:
1)停止防火墙服务:/etc/init.d/iptables stop
2)根据“编写主机型防火墙流程”编写规则
3)保存规则并开机启动防火墙:/etc/init.d/iptables save;chkconfig iptables on
4)后续禁用特定访问流量:iptables -I INPUT 条件 -j DROP (可以结合一次性计划任务做删除操作)
原文:https://blog.51cto.com/14386255/2406847