CentOS Stream 8防火墙规则设置指南(基于firewalld)
CentOS Stream 8默认使用firewalld作为防火墙管理工具,它支持动态更新规则且无需重启服务,核心功能包括区域管理、端口/服务控制、富规则等。以下是具体操作步骤:
若未安装firewalld,可通过以下命令安装:
sudo dnf install firewalld
安装完成后,启动服务并设置开机自启:
sudo systemctl start firewalld # 启动firewalld
sudo systemctl enable firewalld # 设置开机自动启动
active (running)):sudo systemctl status firewalld
sudo firewall-cmd --state
区域是firewalld的核心概念,用于定义不同网络环境的安全级别(如public、private、trusted)。常用操作:
sudo firewall-cmd --get-default-zone
public):sudo firewall-cmd --set-default-zone=public
sudo firewall-cmd --get-active-zones # 查看活动区域
sudo firewall-cmd --get-zone-of-interface=eth0 # 查看指定接口(如eth0)所属区域
eth0绑定到public区域):sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-ports
8080/tcp,立即生效但重启后失效):sudo firewall-cmd --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
8080/tcp):sudo firewall-cmd --permanent --remove-port=8080/tcp
sudo firewall-cmd --reload
firewalld预定义了常见服务(如http、ssh、mysql)的规则,可直接通过服务名管理:
sudo firewall-cmd --list-services
http):sudo firewall-cmd --add-service=http
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
sudo firewall-cmd --remove-service=http
富规则用于更精细的访问控制(如允许/拒绝特定IP、端口或协议),语法更灵活。常用场景:
192.168.1.100访问3306/tcp):sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --reload
192.168.1.200):sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject'
sudo firewall-cmd --reload
192.168.1.0/24访问ssh):sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
sudo firewall-cmd --reload
sudo firewall-cmd --complete-reload
sudo systemctl stop firewalld
sudo firewall-cmd --list-all > firewall-backup.txt备份当前配置。以上步骤覆盖了CentOS Stream 8防火墙的核心配置需求,可根据实际场景调整规则。