一、Linux防火墙基础
1.1 iptables的表、链结构
▶规则链
●规则的作用:对数据包进行过滤或处理
●链的作用:容纳各种防火墙规则
●链的分类依据:处理数据包的不同时机
▶默认包括5种规则链
●INPUT: 处理入站数据包
●OUTPUT: 处理出站数据包
●FORWARD: 处理转发数据包
●POSTROUTING: 在进行路由选择后处理数据包
●PREROUTING: 在进行路由选择前处理数据包
▶规则表
●表的作用: 容纳各种规则链
●表的划分依据: 防火墙规则的作用相似
▶默认包括4个规则表
●raw表: 确定是否对该数据包进行状态跟踪
●mangle表: 为数据包设置标记
●nat表: 修改数据包中的源、目标IP地址或端口
●filter表: 确定是否放行该数据包(过滤)
▶默认的表、链结构示意图
如图所示
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f4dd05dc15f4c5c915b9ea3d9aa0f2e5.png)
1.2 数据包控制的匹配流程
▶规则表之间的顺序
●raw——mangle——nat——filter
▶规则链之间的顺序
●入站: PREROUTING——INPUT
●出站: OUTPUT——POSTROUTING
●转发:PREROUTING——FORWARD——POSTROUTING
▶规则链内的匹配顺序
①按顺序依次检查,匹配即停止(LOG策略除外)
②若找不到相匹配的规则,则按该链的默认策略处理
二、编写防火墙规则
2.1 基本语法、控制类型
▶语法构成
●iptables 【-t 表名】 选项 【链名】 【条件】 【-j 控制类型】
★iptables -t filter -I INPUT -p icmp -j REJECT
■注意事项:
●不指定表名时,默认指filter表
●不指定链名时,默认指表内的所有链
●除非设置链的默认策略,否则必须指定匹配条件
●选项、链名、控制类型使用大写字母,其余均为小写
▶数据包的常见控制类型
●ACCEPT: 允许通过
●DROP: 直接丢弃,不给出任何回应
●REJECT: 拒绝通过,必要时会给出提示
●LOG: 记录日志信息,然后传给下一条规则继续匹配
2.2 添加、查看、删除规则
▶添加新的规则
●-A: 在链的末尾追加一条规则
●-I: 在链的开头(或指定序号)插入一条规则
★iptables -t filter -A INPUT -p tcp -j ACCEPT
★iptables -I INPUT -p udp -j ACCEPT
★iptables -I INPUT 2 -p icmp -j ACCEPT