目录
一、Linux防火墙基础
1.什么是防火墙
防火墙是一种网络安全设备或软件,旨在监控和控制网络流量,保护计算机和网络系统免受未授权访问、恶意攻击和其他安全威胁。防火墙通过一组定义好的安全规则来决定哪些网络流量可以进入或离开网络
Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制。属于典型的包过滤防火墙。Linux系统的防火墙体系基于内核编码实现,具有非常稳定的性能和极高的效率,因此获得广泛的应用
2.防火墙的功能
(1)包过滤
根据数据包的源IP地址、目标IP地址、源端口、目标端口、协议类型等条件来允许或拒绝网络数据包
(2)状态检测监控网络连接的状态(如已建立、相关的连接),并基于连接状态决定是否允许流量通过。例如,允许已建立的连接通过,而阻止新的连接请求
(3)网络地址转换(NAT)允许内部网络使用私有IP地址,并通过公共IP地址访问外部网络,从而隐藏内部网络结构
(4)访问控制限制内部用户访问外部网络的某些服务或网站
(5)日志记录和警报记录所有通过防火墙的流量,并在检测到异常行为时生成警报
3.防火墙的类型
网络防火墙 | 位于网络边界,用于保护整个网络。通常是硬件设备,但也可以是运行在网络设备上的软件 |
主机防火墙 | 安装在单个主机(如服务器或个人计算机)上,用于保护该主机。通常是软件形式 |
应用层防火墙 | 能够检查应用层数据(如HTTP、FTP等)并基于应用层协议规则进行过滤 |
代理防火墙 | 充当客户端与服务器之间的中介,检查和过滤通过它的所有流量 |
二、Linux防火墙工具
1.iptables
iptables是Linux操作系统中的一个用户空间工具,用于配置、管理和维护网络防火墙规则。它通过内核的网络子系统来过滤和控制进出网络的数据包
属于“用户态”(User Space, 又称为用户空间)的防火墙管理体系
iptables的工作原理:
通过定义规则来决定如何处理数据包,从而实现网络流量的控制和保护
2. netfilter
是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作
属于“内核态”又称内核空间(kernel space)的防火墙功能体系
3.四表五链结构
3.1四表
raw | 确定是否对该数据包进行状态跟踪 |
mangle | 为数据包设置标记 |
nat | 修改数据包种的源、目标IP地址或端口 |
filter | 确定是否放行该数据包(过滤) |
3.2五链
INPUT | 处理入站数据包 |
OUTPUT | 处理出站数据包 |
FORWARD | 处理转发数据包 |
PREROUTING | 在进行路由选择前处理数据包 |
POSTROUTING | 在进行路由选择后处理数据包 |
3.3总结
规则表
表的作用:容纳各种规则链
表的划分依据:与防火墙规则的作用相似
规则链
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包的不同时机
规则
规则的作用:对数据包进行过滤或处理
总结
表里有链,链里有规则
4.数据包过滤的匹配流程
4.1规则表之间的顺序
raw→mangle→nat→filter
4.2规则链之间的顺序
入站:PREROUTING→INPUT→本机的应用程序
出站:本机的应用程序→OUTPUT→POSTROUTING
转发:PREROUTING→FORWARD→POSTROUTING
4.3规则链内的匹配顺序
自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)要么放行,要么丢弃
若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)
4.4数据包在防火墙中的匹配流程
入站数据流向
1.PREROUTING链:
数据包从外部网络到达防火墙,首先被PREROUTING链处理
进行地址修改等预处理(如 DNAT)
2.路由选择:
防火墙内核进行路由选择,判断数据包的目标地址
如果目标地址是防火墙本机(如访问防火墙的Web服务),则进入INPUT链
3. INPUT链:
数据包进入INPUT链进行过滤处理,决定是否允许通过
通过后,数据包被交给系统上层的应用程序(如 httpd 服务器)进行响应转发数据流向
1.PREROUTING链:
数据包从外部网络到达防火墙,首先被PREROUTING链处理
进行地址修改等预处理(如 DNAT)
2.路由选择:
防火墙内核进行路由选择,判断数据包的目标地址
如果目标地址不是防火墙本机,而是其他外部地址(如局域网用户访问外部的 QQ 服务器),则进入FORWARD链
3.FORWARD链:
数据包进入FORWARD链进行过滤处理,决定是否允许转发或拦截、丢弃
4.POSTROUTING链:
转发允许的数据包进入POSTROUTING链,进行地址修改等后处理(如 SNAT)
数据包最终被转发到目标网络出站数据流向
1.路由选择:
防火墙本机生成的数据包(如测试公网 DNS 服务),首先进行路由选择,确定输出路径
2.OUTPUT链:
数据包进入OUTPUT链进行过滤处理,决定是否允许发送
3.POSTROUTING链:
允许发送的数据包进入POSTROUTIN