iptables的表、链结构
-
规则链
- 规则的作用:对数据包进行过滤或处理
- 链的作用:容纳各种防火墙规则
- 链的分类依据:处理数据包的不同时机
-
默认包括5种规则链
- INPUT:处理入站数据包
- OUTPUT:处理出站数据包
- FORWARD:处理转发数据包
- POSTROUTING链: 在进行路由选择后处理数据包
- PREROUTING链:在进行路由选择前处理数据包
-
规则表
- 表的作用:容纳各种规则链
- 表的划分依据:防火墙规则的作用相似
-
默认包括4个规则表
- raw表:确定是否对该数据包进行状态跟踪
- mangle表:为数据包设置标记
- nat表:修改数据包中的源、目标IP地址或端口
- filter表:确定是否放行该数据包(过滤)
-
默认的表、链结构示意图
数据包过滤的匹配流程
-
规则表之间的顺序
- raw- > mangle >nat > filter
-
规则链之间的顺序
- 入站: PREROUTING→INPUT
- 出站: OUTPUT→POSTROUTING
- 转发: PREROUTING> FORWARD>POSTROUTING
-
规则链内的匹配顺序
- 按顺序依次检查,匹配即停止(LOG策略例外)
- 若找不到相匹配的规则,则按该链的默认策略处理
匹配流程示意图
**注意:**CentOS 7默认使用firewalld防火墙,若想使用iptables防火墙, 必须先关闭firewalld防火墙
iptables安装
- 关闭firewalld防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
- 安装iptables防火墙
[root@localhost ~]# yum -y install iptables iptables-services
- 设置iptables开机启动
[root@localhost ~]# systemctl start iptables.service
[root@localhost ~]# systemctl enable iptables.service
iptables的基本语法
- 语法构成
- iptables -t 表名 选项 链名 条件 -j 控制类型
[root@localhost ~]# iptables -t filter -I INPUT -p icmp-j REJECT
-
注意事项
- 不指定表名时,默认指filter表
- 不指定链名时,默认指表内的所有链
- 除非设置链的默认策略,否则必须指定匹配条件
- 选项、链名、控制类型使用大写字母,其余均为小写
-
数据包的常见控制类型
- ACCEPT:允许通过
- DROP:直接丢弃,不给出任何回应
- REJECT:拒绝通过,必要时会给出提示
- LOG:记录日志信息,然后传给下一条规则继续匹配
-
常用管理选项汇总
类别 | 选项 | 用途 |
---|---|---|
添加新的规则 | -A | 在链的末尾加一条规则 |
添加新的规则 | -I | 在链的开头(或指定序号)插入一条规则 |
查看规则列表 | -L | 列出所有的规则条目 |
查看规则列表 | -n | 以数字形式显示地址、端口等信息 |
查看规则列表 | -v | 以更详细的方式显示规则信息 |
查看规则列表 | –line-numbers | 查看规则时,显示规则的序号 |
删除、清空规则 | -D | 删除链内指定序号(或内容)的一条规则 |
删除、清空规则 | -F | 删除所有的规则 |
设置默认策略 | -P | 为指定的链设置默认规则 |
规则的匹配条件
常见的通用匹配条件
- 协议匹配:-p 协议名
- 地址匹配:-s 源地址 -d 目的地址
- 接口匹配:-i 入站网卡 -o出站网卡
常用的隐含匹配条件
- 端口匹配:–sport 源端口 --dport 目的端口
- ICMP类型匹配: --icmp-type ICMP 类型
示例:
iptables -I INPURT -p icmp -j DROP
iptables -A INPUT -i ens33 -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
注释: 8:请求 、 0:回显 、3:不可达
常用的显示匹配条件
多端口匹配:
- -m multiport --sports 源端口列表
- -m multiport --dports 目的端口列表
IP范围匹配:
- -m iprange --src-range IP范围
MAC地址匹配:
- -m mac -mac-source MAC地址
状态匹配:
- -m state --state 连接状态
示例
iptable -A INPUT -p tcp -m multiport --dports 25,80,110 -j ACCEPT
iptable -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
iptable -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j ACCEPT
iptable -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
常见的连接状态:
NEW ------------ 与任何连接无关的
ESTABLISHED ------------ 响应请求或者已建立连接的
RELATED ------------ 与已有连接有相关性的,如FTP数据连接
总结:
iptables防火墙默认包括4个表,5种链
iptables的基本语法
iptables常用管理选项
- A、I、L、n、v、 --line-numbers、D、F、P
iptables规则匹配条件
- 通用匹配、隐含匹配、显示匹配