iptables 防火墙
Linux包过滤防火墙概述
netfilter
- 位于Linux内核中的包过滤功能体系
- 称为Linux防火墙的‘内核态’
iptables - 位于/sbin/iptables、
- 用来管理防火墙规则的工具
- 称为Linux防火墙的‘用户态’
包过滤的工作层次
- 主要是网络层、针对IP数据包
- 体现在对包内的IP地址、端口等信息的处理上
iptables的表、链结构
规则链
- 规则的作用:岁数据包进行过滤或处理
- 链的作用:容纳各种防火墙规则
- 链的分类依据:处理书包的不同时机
默认暴扣5种规则链 - INPUT:吃力入站数据包
- OUPUT:处理出站数据包
- FORWARD:处理转发数据包
- POSTROUTING链:在进行路由选择后处理数据包
- PREROUTING链:在进行路由选择前处理数据包
默认的表。链结构示意图
数据包过滤的匹配流程
规则表之间的顺序
- raw→mangle→nat→filter
规则链之间的顺序 - 入站:PEROUTING→INPUT
- 出站:OUTPUT→POSTROUTING
- 转发:PREROUTNG→FORWARD→POSTROUTING
规则链内的匹配顺序 - 按顺序依次检查,匹配即停止(LOG策略例外)
- 若找不到相匹配的规则、泽按该链接的默认策略处理
iptables的基本语法
语法结构
- iptables 【-t表名】 选项 【链名】 【条件】 【-j控制类型】
注意事项 - 不指定表名是、默认指filter
- 不指定链名时,默认指表内的所有链
- 除非设置的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
选项名 | 功能及特点 |
---|---|
-A | 在指定链的末尾添加一条新的规则 |
-D | 删除指定链中的莫一条规则,可指定规则序号或 具体内容 |
-I | 在指定链中插入一天新的规则,未指定序号是默认作为第一条规则 |
-R | 修改、替换指定链中的某一条规则,可指定规则序号或具体内容 |
-L | 列出指定链中所有的规则,若没有指定链名,则列出表中所有 链 |
-F | 清空指定链中的所有规则若没有指定链名,则清空表中所有链 |
-P | 设置指定链的默认策略 |
-n | 使用数字形式显示输出的结果,如显示IP地址而不是主机名 |
数据包的常见控制类型
- ACCEPT:允许听过
- DROP:直接丢弃,不给出任何回应
- REJECT:拒绝通过,不要是会给出提示
- LOG:记录日志信息,然后传给下一条规则继续匹配
规则匹配条件:在编写防火墙规则是,匹配条件的设置起着决定性的作用,只用清晰、准确的设置好匹配调价,防火墙才知道要对符合什么条件的数据进行处理,避免‘误杀’。对于同一条防火墙规则,可以指定多个匹配条件,表示这些条件必须满足规则才会生效。根据数据包的各种特征,结合iptables的模块结构,匹配条件的设置包括三大类:通用匹配、隐含匹配、显示匹配。
通用匹配:也称为常规匹配,这种匹配盎司可以独立使用不依赖与其他条件或者扩展模块,常见的通用匹配包括协议匹配、地址匹配、网络接口匹配。
隐含匹配:肿着匹配方式要求制定的协议匹配作为前提条件,相当于子条件,因此无法独立使用,其对应的功能有iptables在需要时自动(隐含)载入内核,常见的隐含匹配包括端口匹配、TCP标记匹配、ICMP类型匹配
IP范围匹配:编写iptables规则是使用“-m iprange --src-range IP 范围”、 “-m iprange --dst-range IP 范围” 的形式,用来检查数据包的源地址、目标地址,其中IP范围采用起始地址-结束地址
规则匹配条件
通用匹配
- 可直接使用,不依赖与其他条件或者扩展
- 包括网络协议 、IP地址、网络接口等条件
隐含匹配 - 要求以特定的协议匹配作为前提
- 包括端口、TCP标记、ICMP类型等条件
显示匹配 - 要求以-m 扩展模块 的形式明确指出类型
- 包括多端口、MAC地址。IP范围。数据包状态等条件