“firewalld”是firewall daemon。它提供了一个动态管理的防火墙,带有一个非常强大的过滤系统,称为 Netfilter,由 Linux 内核提供。
FirewallD 使用zones和services的概念,而 iptables 使用chain和rules。与 iptables 相比,“FirewallD”提供了一种非常灵活的方式来处理防火墙管理。
每个zones都可以按照指定的标准进行配置,以根据你的要求接受或拒绝某些服务或端口,并且它可以与一个或多个网络接口相关联。默认区域为public区域。
[yijiFirewalld zones[/yiji]
以下 列出 FirewallD 提供的zones。运行以下 以列出zones:
[root@server1 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
block: 对于 IPv4,任何传入连接都会被 icmp-host-prohibited 消息拒绝,对于 IPv6 则是 icmp6-adm-prohibited。
dmz:应用于你的DMZ区域的计算机,这些计算机可公开访问,但对内部网络的访问受到限制。仅接受选定的传入连接。
drop:任何传入连接都将在没有任何通知的情况下被丢弃。只允许传出连接。
external:用于在系统中充当路由器时启用 NAT 伪装的外部网络。只允许选定的传入连接。
home:用于家庭网络。仅接受选定的传入连接。
internal:用于内部网络,网络上的其他系统通常是可信任的。仅接受选定的传入连接。
public:用于公共区域,仅接受选定的传入连接。
trusted:接受所有网络连接。
work:用于工作区域,同一网络上的其他计算机大多受信任。仅接受选定的传入连接。
Firewalld services
Firewalld 的service配置是预定义的服务。要列出可用的服务模块,请运行以下命令:
[root@server1 ~]# firewall-cmd --get-services
如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则
Firewalld的临时设置和永久设置
Firewalld 使用两个独立的配置,即临时设置和永久设置:
临时设置: 临时设置不会在系统重启时保持不变。这意味着临时设置不会自动保存到永久设置中。
永久设置: 永久设置会存储在配置文件中,将在每次重新启动时加载并成为新的临时设置。
启用、禁用Firewalld
Firewalld默认安装在 7/8中,下面命令时如何启用或者停用firewalld:
启用Firewalld
[root@server1 ~]# systemctl start firewalld
禁用Firewalld
[root@server1 ~]# systemctl stop firewalld
开机启动
[root@server1 ~]# systemctl enable firewlald
禁止开机启动
[root@server1 ~]# systemctl disable firewalld
查看firewlald的状态:
[root@server1 ~]# systemctl status firewalld
或者
[root@server1 ~]# firewall-cmd --state
running
如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则
zone管理
Firewalld 为每个区域提供不同级别的安全性,公共区域设置为默认区域。下面命令查看默认区域:
[root@server1 ~]# firewall-cmd --get-default-zone
public
下面命令查看默认区域的配置:
[root@server1 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: cockpit dhcpv6-client ntp ssh
ports: 2222/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则
通过使用选项"–zone”和“–change-interface”的组合,可以轻松更改zone中的接口。例如,要将“ens33”接口分配给“home”区域,请运行以下命令:
[root@server1 ~]# firewall-cmd --zone=home --change-interface=ens33
success
[root@server1 ~]# firewall-cmd --zone=home --list-all
home (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: cockpit dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则
要查看所有活动的zone,请运行以下命令:
[root@server1 ~]# firewall-cmd --get-active-zones
home
interfaces: ens33
public
interfaces: ens160
如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则
要更改默认zone,请使用以下命令。例如,要将默认区域更改为 home,请运行以下命令:
[root@server1 ~]# firewall-cmd --set-default-zone=home
要找出与 ens160 接口关联的区域,请运行以下命令:
[root@server1 ~]# firewall-cmd --get-zone-of-interface=ens160
public
要创建新zone,请使用以下命令。例如,要创建一个名为“test”的新区域,并永久生效,请运行:
[root@server1 ~]# firewall-cmd --permanent --new-zone=test
success
[root@server1 ~]# firewall-cmd --reload
success
开放和关闭端口
打开特定端口允许用户从外部访问系统,这代表了安全风险。因此,仅在必要时为某些服务打开所需的端口。
要获取当前区域中开放的端口列表,请运行以下命令:
[root@server1 ~]# firewall-cmd --list-ports
2222/tcp
下面实例将特定端口永久添加到列表中:
[root@server1 ~]# firewall-cmd --permanent --add-port=8080/tcp
success
[root@server1 ~]# firewall-cmd --reload
success
同样,要删除特定端口,请运行以下命令:
[root@server1 ~]# firewall-cmd --remove-port=8080/tcp
success
可以使用以下命令每次确认端口是否已添加或删除:
[root@server1 ~]# firewall-cmd --list-ports
如果要为特定区域开放端口,例如,以下命令将为 home 区域打开端口 80:
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-port=80/tcp
success
[root@server1 ~]# firewall-cmd --reload
success
如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则
同样,要从开放的端口中删除特定区域的特定端口,请运行:
[root@server1 ~]# firewall-cmd --zone=home --remove-port=80/tcp
success
添加和移除服务类型
Firewalld 服务配置是预定义的服务,如果启用了服务,则会自动加载。使用预定义服务使用户可以更轻松地启用和禁用对服务的访问。
预定义的服务配置文件位于 /usr/lib/firewalld/services目录中。
Firewalld的服务,你不需要记住任何端口,并且可以一次性允许所有端口。
例如,执行以下命令允许 samba 服务。samba 服务需要启用以下一组端口:“139/tcp 和 445/tcp”以及“137/udp 和 138/udp”。
添加’samba’服务后,所有端口都会同时激活,因为所有端口信息都在samba服务配置中。下面是Firewalld中预定义的samba的服务配置文件:
[root@server1 ~]# cat /usr/lib/firewalld/services/samba.xml
如何在 Linux 中配置 firewalld 规则如何在 Linux 中配置 firewalld 规则
下面是在home区域放行samba服务:
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-service=samba
success
[root@server1 ~]# firewall-cmd --reload
success




