Linux防火墙教程(三):firewalld

iptables 和 nftables 都比较底层,用于精细控制 Linux 的网络层,而不仅仅是作为防火墙使用。如果只是想要使用防火墙的保护功能,可以使用 firewalld 和 ufw 这样的高级防火墙,它们都是基于*tables的。

安装和启用

1
2
3
sudo pacman -S firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld

配置

区域

列出所有或者单个区域。

1
2
firewall-cmd --list-all-zones
firewall-cmd --info-zone=zone_name

改变区域。

1
firewall-cmd --zone=zone --change-interface=interface_name

获取当前区域。

1
firewall-cmd --get-active-zones

当新的接口连接上的时候,会自动应用默认区域。要改变默认区域:

1
2
firewall-cmd --get-default-zone
firewall-cmd --set-default-zone=zone

使用 NetworkManager 可以在特定接口上设定区域。

1
2
3
4
# 列出所有接口
nmcli connection show
# 在接口上设定区域
nmcli connection modify myssid connection.zone home

服务

服务即是预定义的规则。

列出服务的信息。

1
2
firewall-cmd --get-services
firewall-cmd --info-service service_name

向区域添加或者删除服务。

1
2
firewall-cmd --zone=zone_name --add-service service_name
firewall-cmd --zone=zone_name --remove-service service_name

如果这些服务仍然不能满足需求,也可以自行设定端口号。

1
2
firewall-cmd --zone=zone_name --add-port port_num/protocol
firewall-cmd --zone=zone_name --remove-port port_num/protocol

运行时配置和永久配置

命令行配置的默认都是运行时配置,需要永久生效的话。

1
firewall-cmd --runtime-to-permanent

超时设置

可以暂时让一个服务或者端口号生效,这仅适用于运行时配置。

1
firewall-cmd --add-service ssh --timeout=3h

图形化界面

firewalld包自带了名为firewall-config的图形界面配置程序,可以在桌面环境下使用。

如果在服务器环境下的话可以安装cockpit,附带了一个 web 配置界面,端口号默认为9090

comments powered by Disqus
本站总访问量次,总访客数人,当前页面总访问量
Built with Hugo
主题 StackJimmy 设计