Linux的防火墙的术语
先整理一下他们之间的关系
- netfilter
netfilter 项目是一个社区驱动的协作 FOSS 项目,为Linux 2.4.x 和更高版本的内核系列提供包过滤软件。netfilter 项目通常与iptables及其后继者nftables相关联。
netfilter 项目支持数据包过滤、网络地址 [和端口] 转换 (NA[P]T)、数据包日志记录、用户空间数据包排队和其他数据包处理。
这是个linux内核的东西。
- iptables
iptables 是一个配置 Linux 内核 防火墙 的命令行工具,是 Netfilter 项目的一部分。术语 iptables 也经常代指该内核级防火墙。iptables 可以直接配置,也可以通过许多 控制台 和 图形化 前端配置。iptables 用于 ipv4,ip6tables 用于 IPv6。iptables和ip6tables 拥有相同的语法,但是有些特别的选项,对 IPv4 和 IPv6 有些不同的。
这个东西工作在用户空间。
还有ip6tables,arptables ,ebtables。
4表5链
- filter表——过滤数据包
- Nat表——用于网络地址转换(IP、端口)
- Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
- Raw表——决定数据包是否被状态跟踪机制处理
- INPUT链——进来的数据包应用此规则链中的策略
- OUTPUT链——外出的数据包应用此规则链中的策略
- FORWARD链——转发数据包时应用此规则链中的策略
- PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
- POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)
- nfttables
nftables取代了流行的{ip,ip6,arp,eb}tables。该软件提供了一个新的内核数据包分类框架,该框架基于特定于网络的虚拟机 (VM) 和新的nft用户空间命令行工具。nftables重用了现有的 Netfilter 子系统,例如现有的钩子基础设施、连接跟踪系统、NAT、用户空间队列和日志子系统。
- firewalld
Firewalld 提供动态管理的防火墙,支持定义网络连接或接口的信任级别的网络/防火墙区域。它支持 IPv4、IPv6 防火墙设置、以太网桥和 IP 集。运行时和永久配置选项是分开的。它还为服务或应用程序提供直接添加防火墙规则的接口。
firewalld是centos自带的防火墙软件,当然Ubuntu也可以安装。
- ufw
ufw是Ubuntu自带的防火墙软件,也是管理netfilter的一个软件。使用方式非常简单。
centos也可以安装。
归根结底,不管是ufw还是firewalld,还是iptables最后都是操作内核的netfilter。
2 ufw的用法
2.1 ufw防火墙开启关闭状态确认
ufw [--dry-run] enable|disable|reload
# ufw防火墙关闭
root@node2:~# systemctl stop ufw
# ufw防火墙状态
root@node2:~# systemctl status ufw
● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2022-01-08 10:49:50 UTC; 17s ago
# ufw防火墙打开
root@node2:~# systemctl start ufw
# ufw防火墙状态
root@node2:~# systemctl status ufw
● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2022-01-08 10:51:09 UTC; 3s ago
# ufw防火墙无效
root@node2:~# ufw disable
Firewall stopped and disabled on system startup
# ufw防火墙状态-无效
root@node2:~# ufw status
Status: inactive
# ufw防火墙生效
root@node2:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
# ufw防火墙状态-有效
root@node2:~# ufw status
Status: active
这里要注意一下,开启ufw防火墙可能会中断正在连接中的ssh。