什么是iptables
1:iptables就是在各个钩子上定义的规则,让每一个钩子在处理报文的时候,有不同的处理规则
2:iptables对于运维工程师而言,只是一个些规则的命令行的工具
防火墙规则
组成部分:根据规则的匹配条件匹配报文,对应匹配到的报文使用定义的处理动作进行处理
匹配条件:
基本匹配
扩展匹配
处理动作:
基本的常见的处理动作
扩展处理动作
自定义处理动作
报文进入主机之后,流经的路径
1:流入本机:prerouting –> input –> 用户空间请求报文
2:流出本机:用户空间响应报文 –> output –> postrouting
3:由本机转发的:prerouting –> forward –> postrouting
防火墙规则的分类
(也可以称之为功能表的分类) 下述黑体字后面 红色字体为防火墙内置链
1: raw:关闭在nat表上启用的连接追踪机制 PREROUTING , OUTPUT
(表明是否对该数据包进行状态跟踪)
2:mangle:将报文拆解,修改之后再封包 PREROUTING , INPUT , FORWARD , OUTPUT , POSTROUTING
(为数据包设置标记)
3:nat:网络地址转换,只拆解修改其地址的那一部分,一般是IP层地址和传输层地址 PREROUTING ,INPUT, OUTPUT , POSTROUTING
(修改数据包中源,目标ip地址或端口)
4:filter:实现过滤,防火墙(默认) INPUT , FORWARD , OUTPUT
(表示是否放行该数据包,,"过滤")
规则表的先后顺序: raw --> mangle --> nat -->filter
防火墙链分类
1:内置链 (与netfilter的hooks函数一一对应,每一个内置链对应于一个hooks函数,在内核中直接实现)
PREROUTING 在进行路由选择前处理的数据包
INPUT 处理入站打的数据包
OUTPUT 处理出站的数据包
FORWARD 处理转发的数据包
POSTROUTING 在进行路由选择后处理数据包
规则链的先后顺序:
入站顺序: PREROUTING ——>INPUT
出站顺序: OUTPUT ——> POSTROUTING
转发顺序: PREROUTING ——> FORWARD——> POSTROUTING
2:自定义链
对内置链进行扩充的,而定义在自定义链上的规则只有通过内置链的调用才能实现,可以实现更加灵活的规则管理机制
是一个写规则的命令行工具防火墙功能表与防火墙内置链的对应关系
(这里的表就是指下面的四种功能)
1:filter:INPUT , FORWARD , OUTPUT
2:mangle:PREROUTING , INPUT , FORWARD , OUTPUT , POSTROUTING
3:nat:PREROUTING ,INPUT, OUTPUT , POSTROUTING
4:raw:PREROUTING , OUTPUT
三点注意事项:
1.没有指定规则表则默认指filter表
2.不指定规则链则指表内所有的规则链
3.在规则链中匹配规则时会依次检查,匹配即停止(LOG规则例外),若没匹配项则按链的默认状态处理