在 Ubuntu 22.04|20.04|18.04 上安装和使用 Firewalld
Firewalld 是 Linux 防火墙管理工具,支持 IPv4、IPv6、以太网桥和 IPSet 防火墙设置。它充当 Linux 内核的 netfilter 框架的前端。 Firewalld 是 RHEL 7 系列上默认的防火墙管理软件。
在本指南中,我将向您展示 Firewalld 在 Ubuntu 22.04|20.04|18.04 Linux 发行版上的基本用法。 Ubuntu 的默认防火墙系统是ufw,但如果您愿意,也可以安装和使用 Firewalld。 Firewalld 对我来说效果很好,因为我是 CentOS 7 的重度用户。
步骤 1 – 在 Ubuntu 22.04|20.04|18.04 上安装 Firewalld
在 Ubuntu 上安装 Firewalld
sudo apt update
sudo apt install firewalld
默认情况下,该服务应该启动,如果没有运行,启动并使其在启动时启动:
sudo systemctl enable firewalld
sudo systemctl start firewalld
确认服务正在运行:
$ sudo firewall-cmd --state
running
如果您启用了 ufw,请将其禁用以使 firewalld 成为您的默认防火墙
sudo ufw disable
步骤 2:在 Ubuntu 上使用 Firewalld <元字符集=utf-8>22.04|20.04|18.04
现在软件包已经安装并启动了firewalld服务,让我们看一些使用示例
有关firewalld的基本用法,请参阅下面的示例。
1.
列出所有已配置的防火墙规则
$ sudo firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
当您启动 Firewalld 服务时,默认情况下会启用 ssh
和 dhcpv6-client
服务。
2.
获取可使用名称启用的所有服务的列表
要查看所有活动服务,请运行以下命令:
sudo firewall-cmd --get-services
3.
启用 http
服务
在本例中我们启用 http 服务。
sudo firewall-cmd --add-service=http --permanent
--permanent
选项表示针对服务器重新启动保留规则。
4.
在一行上启用 http 和 https
以下是同时启用 http 和 https 服务的示例:
sudo firewall-cmd --permanent --add-service={http,https} --permanent
5.
启用 TCP 端口 7070
启用 TCP 端口 7070
sudo firewall-cmd --add-port=7070/tcp --permanent
6.
启用 UDP 端口 514
如何启用UDP端口514
sudo firewall-cmd --add-port=514/udp --permanent
7.
创建新区域
创建一个名为 myzone 的新区域
sudo firewall-cmd --new-zone=myzone --permanent
8.
在特定区域启用服务
让我们在创建的区域上启用服务:
sudo firewall-cmd --zone=myzone --add-port=4567/tcp --permanent
9.
设置默认区域
将创建的区域设置为默认区域
sudo firewall-cmd --set-default-zone=public --permanent
10.
向区域添加接口
将接口添加到区域:
sudo firewall-cmd --get-zone-of-interface=eth0 --permanent
sudo firewall-cmd --zone=<zone> --add-interface=eth0 --permanent
11.
允许从特定子网/IP 访问端口
如何允许指定子网访问服务或端口:
# Allow access to ssh from 192.168.0.12 sing IP address
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" \
source address="192.168.0.12/32" accept' --permanent
# Allow access to ssh from 10.1.1.0/24 network
sudo firewall-cmd --add-rich-rule 'rule family="ipv4" service name="ssh" \
source address="10.1.1.0/24" accept' --permanent
12.
列出丰富的规则
列出系统上丰富的规则
sudo firewall-cmd --list-rich-rules
13.
配置端口转发
启用端口转发:
# Enable masquerading
sudo firewall-cmd --add-masquerade --permanent
# Port forward to a different port within same server ( 22 > 2022)
sudo firewall-cmd --add-forward-port=port=22:proto=tcp:toport=2022 --permanent
# Port forward to same port on a different server (local:22 > 192.168.2.10:22)
sudo firewall-cmd --add-forward-port=port=22:proto=tcp:toaddr=192.168.2.10 --permanent
# Port forward to different port on a different server (local:7071 > 10.50.142.37:9071)
sudo firewall-cmd --add-forward-port=port=7071:proto=tcp:toport=9071:toaddr=10.50.142.37 --permanent
14.
删除端口/服务
将 --add
替换为 --remove
如需进一步阅读,请参阅官方 Firewalld 文档