网络防火墙
netfilter: 过滤框架
iptables:数据报文过滤,NAT mangle等规则生成的工具
网络:IP报文首部 TCP报文首部
防火墙:框架(Frame)
规则(匹配标准 处理办法)
工作在主机或者网络边缘(对于进出报文进行检查监控,并根据定义好的规则标准,并对其进行处理)
默认规则; (开放):堵
关闭:通行证才可进,一般拒绝所有,开放一部分
规则:匹配标准
IP:源IP 目的IP
TCP:源端口 SPORT,目标端口DPORT, ( SYN=1,FIN=0,RST=0,ACK=0 TCP第一次握手) (SYN=1,ACK=1,Fin=0,RST=0第二次)
UDP:SPORT DPORT
ICMP: icmp-type
数据报文过滤:
linux内核有网络功能,所以规则要运行在内核才可以。 在内核中TCP/IP内核模块(TCP/ip协议栈),选了几个位置,app可以控制这几个位置,所以规则就可以通过app直接写入内核。
iptables/netfiter (netfiter工作在内核,所以它起关键作用) (iptables应用程序,相当于说的app,写到netfiter)
报文走法(3种,所以它要经过这三个位置,前面提到的位置,通过路由决策(进入本机网卡到TCP/IP协议栈判断)走哪个位置):
1.报文从外来到达本机
2.本机报文到外部
3.转发的报文
(实施特殊----地址转换)
4.路由处理之前
5.路由决策之后,在报文要从网卡离开本机,马上转发出去
源地址是1.1.1.1请求放问本机172.16.100.7全部拒绝 (写入进位置,即为1情况)
hook function: 钩子函数
prerouting
input
output
forward
postrouting
规则链:PREROUTING
INPUT
OUTPUT
FORWARD
POSTROUTING
filter(过滤)
INPUT
OUTPUT
FORWARD
nat(地址转换)
PREROUTING
POSTOUTING
自上而下依次检查策略
netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件 netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。
iptables包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。
4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。表的处理优先级:raw>mangle>nat>filter。
filter:一般的过滤功能
nat:用于nat功能(端口映射,地址映射等)
mangle:用于对特定数据包的修改
raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能
5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARDING:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROUTIONG:发送到网卡接口之前。如下图:
iptables中表和链的对应关系如下: