防火墙相关概念。
逻辑上,防火墙可以分为主机防火墙和网络防火墙。
主机防火墙:针对单个主机进行防护
网络防火墙:处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网
网络防火墙和主机防火墙并不冲突,网络防火墙主外(集体),主机防火墙主内(个人)
物理上,防火墙可以分为硬件防火墙和软件防火墙
硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。
iptables其实不是真正的防护群殴爱你个,理解为一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应内核空间netfilter
iptables是命令行工具,位于用户空间,利用命令行操作内核空间的netfilter,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
netfilter是Linux操作系统核心层内部的数据包处理模块,功能如下:
1.网络地址转换(Network Address Translate)
2.数据包内容修改
3.数据包过滤的防火墙功能
iptables基础
iptables是按照规则处理数据包。
规则 存储在内核空间的信息包过滤表中。
规则指定 源地址、目的地址、传输协议(如TCP、UDP、ICMP)、服务类型(如HTTP、FTP、SMTP)等。
处理 当数据包的包头符合规则指定的内容,iptables就执行所定义的方法来处理这些数据包。
处理方法主要有放行(accept)、拒绝(reject)、丢弃(drop)
配置防火墙的主要工作就是添加、修改和删除这些规则。
客户端访问服务器的web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核一部分,客户端信息会通过内核的TCP协议传输到用户空间的web服务中,此时的客户端报文的目标终点为web服务所监听的套接字(IP:port)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这个时候,web服务所监听的ip和端口反而变成了原点。
①客户端报文访问目标地址是本机某进程。经过的内核链是 PREROUTING链 --> INPUT链--> web服务
②由本机某进程发出的报文。OUTPUT链 --> POSTROUTING链
③客户端访问的目标地址是其他服务器,转发作用,则不会经过INPUT链,也不会发往用户空间,而是直接在内核空间中经过forward链和postrouting链转发出去,经过的链是路由前、转发、路由后,PREROUTING链 --> FORWARD链 --> POSTROUTING链
链的概念
因为经过一个链的时候不可能只有一条规则,所以很多规则在链上就是下图
表的概念
每个链上都有一串规则,但是有些规则是类似的A类规则都是对 ip 或者 端口的过滤,B类规则都是修改报文,实现相同规则的报文应该是可以放在一起的,规则分类相同功能放在一起的集合叫做“表”
filter表:过滤。 内核模块:iptables_filter
nat表:网络地址转换。 内核模块:iptables_nat
mangle表:拆解报文,做出修改,并重新封装。内核模块:iptables_mangle
raw表:关闭nat表上启用的连接追踪机制。 内核模块:iptables_raw
表和链的关系
某些 “链” 中注定不会包含某种规则,就好像游戏中A关卡只负责打击陆地敌人,没有防空能力,B关卡可能只负责空中敌人没有防御步兵能力
prerouting链只拥有 nat 表、raw表和mangle表所对应功能,prerouting规则只存放在nat、raw和mangle表
PREROUTING 规则可以存在 raw表,mangle表,nat表
INPUT 规则可以存在 mangle表,filter表
FORWARD 规则可以存在 mangle表,filter表
OUTPUT 规则可以存在 raw表, mangle表,filter表,nat表
POSTROUTING 规则可以存在 mangle表,nat表
但是在实际的使用过程中,是以“表”作为操作入口,对规则进行定义,表(功能)< -- > 链 (钩子)
raw表 规则可以被使用的链 PREROUTING、OUTPUT
mangle表 规则可以被使用的链
原文地址:https://www.cnblogs.com/chenxiaomeng/p/11991912.html