一.iptables基本原理: 1.了解防火墙及iptables: 1)常见的防火墙: 硬件防火墙:思科ASA、华为USG; 软件防火墙:Linux的iptables、windows的ISA; 2)Linux默认防火墙:netfilter(内核的模块)、ipables和firewall(用户工具); 3)iptables是红帽7以前的工具、firewall是rhel7开始提供的工具。 2.iptables的基本结构:表-->链-->规则 1)防火墙表:按照功能进行分类。 raw(状态跟踪)、mangle(标记)、nat(修改)、filter(过滤) 2)防火墙链:按照时机进行分类。 INPUT(入站)、OUTPUT(出站)、FORWARD(转发)、PREROUTING(路由前)、POSTROUTING(路由后) 总结:iptables防火墙工作在网络层,是编写规则、在什么时机完成什么事。是典型的包过滤防火墙。 3)表和链的关系: raw表:PREROUTING,OUTPUT mangle表:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING nat表:PREROUTING、POSTROUTING、OUTPUT filter表:INPUT、OUTPUT、FORWARD 总结:iptables通过4表5链进行组织和管理,表中放链、链中放规则、规则处理数据包。
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 (可以结合一次性计划任务做删除操作)