linux防火墙
1.FW 和 WW
FW : Firewall防火墙 关注外部流量进入的攻击行为
WW : Waterwall 防水墙 是一种防止内部信息泄漏的安全产品。
防火墙的分类
按照保护范围来划分,可以分为主机防火墙和网络防火墙。
按实现方式来划分,可以分为硬件防火墙和软件防火墙。
按网络协议划分,可以分为网络层防火墙和应用层防火墙。
按实现细节角度划分,可以分为 包过滤,应用网关,状态检测,复合型防火墙
2.netfilter 基础
https :// www.netfilter.org / # 官方网站
etfilter / iptables 项目由 Rusty Russe 创建于 1998 年,并于 1999 年建立了 Netfilter Core team ,并在此后负责维护此项目,同时也于 2000 年 3 月合并进了 linux 2.3 .x 版本的 linux 内核。
netfilter 组成
Netfilter / iptables 是 Linux 平台下的包过滤防火墙系统,由 Netfilter 框架和 iptables 两部分组成。
Ubuntu 系统
root @ubuntu24-13: ~ # uname -r
root @ubuntu24-13: ~ # grep -i netfilter /boot/config- 内核版本
CONFIG_NETFILTER_ADVANCED = y # netfilter 已经被编译到内核里面了
CONFIG_BRIDGE_NETFILTER = m # m 就是以模块的方式加载的。


3.防火墙工具
iptables
由软件包 iptables 提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往
netfilter ,告诉内核如何去处理信息包。 iptables 的包软件,默认情况下,已经被安装到操作系统里面了,如果我们希望去扩展对应的功能,开发相应的模块即可。
用户空间工具 内核空间 包管理功能 两部分组成
Rocky 系统下的iptables rpm -q iptables-nft(查看软件包) 具体检索命令如下 ubuntu相同的操作

Ubuntu 系统桌面版已默认安装iptables dpkg -l iptables

1. xtables-nft-multi
xtables-nft-multi 是一个用于在 Linux 系统中管理 iptables 、 arptables 和 ebtables 规则的工具集,它基于 nftables 的后端来实现。 nftables 是 Linux 内核中的一个新的防火墙框架,旨 在替代旧的 iptables 框架,提供更强大、更灵活和更易于管理的防火墙规则。
2. firewalld rethat系列操作系统的防火墙管理服务
Firewalld 是 Linux 系统中一款用于管理网络防火墙的动态守护程序,它允许系统管理员在不需要重启防火墙或停止网络服务的情况下,实时更改防火墙规则。
rocky 默认安装 rpm -q firewalld #有版本信息
systemctl is-active firewalld 默认情况下,该服务是被开启的
ubuntu 中没有安装
dpkg -l firewalld #没有任何版本信息
3. nftables 下一代的netfilter框架
nft ( nftables )是新一代的 Linux 防火墙技术,旨在取代传统的 iptables ,它在性能、功能和易用性等方面都有显著的提升。
rocky 系统默认安装
rpm -q nftables
默认情况下,该服务没有被开启,它一旦启用了,就和其他的防火墙管理软件产生功能冲突
systemctl is-active nftables.service

Ubuntu 系统默认安装
dpkg -l nftables
systemctl is-active uftables 默认情况下,该服务没有被开启
netfilter和nftables区别
客户端工具iptables nft
用户空间 netfilter nftables 可以这样理解 NetworkManger和nmcli之间的关系
查看规则 (前提防火墙需开启 systemctl start firwalld.service。不然看不了下面的内容)
在对防火墙规则进行修改之前,通常需要查看当前已有的规则
[root @rocky9-12 ~ ] # nft list ruleset
而 ubuntu server 环境下是没有启动规则的
规则清理
[root @rocky9-12 ~ ] # nft list ruleset > backup_file.nft 备份 nft 规则
在使用 nft 管理防火墙规则时,有时需要一次性清空系统中所有的 nftables 规则集
[root @rocky9-12 ~ ] # nft flush ruleset
确认效果
[root @rocky9-12 ~ ] # nft list ruleset #结果为空
还原规则
[root @rocky9-12 ~ ] # nft -f backup_file.nft
[root @rocky9-12 ~ ] # nft list ruleset #原来的结果又出现了
4.ufw ubuntu环境中,防火墙的管理服务
root @ubuntu24-16: ~ # apt install ufw 在 ubuntu server 版本中是没有,如果需要安装
root @ubuntu24-13: ~ # systemctl is-active ufw ufw 软件服务默认在 ubuntu 桌面版中是开启的
其他的命令 可以 ufw help 进行查看
4.netfilter/iptables 原理解读
三种报文流向
1.iptables 的组成
netfilter 在内核中设置了五个勾子函数,管理员在用户空间,通过程序设置过滤规则,内核中的勾子函数根据预设的规则进行工作,达到对流经的数据包进行过滤,拒绝,转发等功能。
iptables的功能对应
iptables 中有五个链( chain )对应内核中的五个勾子函数。除此之外, iptables 中还有五个表 一起来配合工作。
iptables 中的链
内置链 对应内核中的每个函数 INPUT,OUTPUT,FORWORD,PREROUTING,POSTROUTING
自定义链 用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有 Hook 钩子调用 自定义链时,才会生效

表的优先级(从高到低) security -- > raw -- > mangle -- > nat -- > filter
2 iptables 的表链关系和数据流转流程
链和表的对应关系( 不是每个链都能支持五个表 )

确认每个表所支持的链,可以通过下面的命令来定位
iptables - t 表名 - vnL 注:iptables -vnL 默认是filter表支持的链信息

数据包的走向
- 数据流入: PREROUTING --> INPUT
- 数据流出: OUTPUT --> POSTROUTING
- 数据转发: PREROUTING --> FORWARD --> POSTROUTING
3.所有主机关闭防火墙服务
root @ubuntu24: ~ # systemctl disable --now ufw 禁用防火墙服务
root @ubuntu24: ~ # iptables -vnL 检查防火墙效果(结果显示略)
同样的道理, Rocky 系统关闭防火墙服务
[root @rocky9 ~ ] # systemctl disable --now firewalld.service 关闭防火墙服务
[root @rocky9 ~ ] # iptables -vnL 检查防火墙效果(结果显示略)
注意:iptables命令,仅能用root命令操作,但是不影响普通用户查看帮助
4. 第一条 iptables 命令
[root @rocky9 ~ ] # ping 10.0.0.13
PING 10.0.0.13 ( 10.0.0.13 ) 56 ( 84 ) 比特的数据。
.....
在 10.0.0.13 主机执行一条命令
root @ubuntu24: ~ # iptables -t filter -A INPUT -s 10.0.0.12 -j DROP 增加第一条规则
root @ubuntu24: ~ # iptables -vnL 查看 iptables 规则

回到 10.0.0.12主机,查看效果
# 当前的界面处于阻塞的状态 ....
# 原因就是, 10.0.0.13 主机的那条规则。
注意:虽然 10.0.0.12 主机的界面处于阻塞的状态,但是 10.0.0.13 的那里依然可以看到效果
命令:iptables -vnL | grep DROP 上图可以看到最前俩个的值是不一样的
root @ubuntu24: ~ # iptables -F 清理刚才定制的防火墙规则
root @ubuntu24: ~ # iptables -vnL 查看效果 恢复正常
同时10.0.0.12 主机界面又回到可以正常访问的状态了
5.iptables命令组成
iptables 完整命令由四部份组成
iptables Table Chain Rule # 通过 iptables 命令,在某个表,某个链上设置一个过滤规则

iptables -t filter -A INPUT -s 192 .168.0.1 -j DROP #刚才命令格式示例
6. iptables命令格式
iptables -h 此处略
。。未完待续