CentOS镜像中firewalld防火墙设置教程(适用于CentOS 7及以上版本)
firewalld是CentOS 7及以上版本的默认防火墙管理工具,采用动态管理模式,支持IPv4/IPv6双栈,允许实时调整规则(无需重启服务),并通过**区域(Zone)**机制划分网络信任级别(如public、home、internal等)。默认区域为public,适用于公网服务器。
多数CentOS镜像已默认安装firewalld,可通过以下命令验证:
rpm -q firewalld
若未安装,执行以下命令安装:
sudo yum install -y firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl status firewalld # 查看服务运行状态
sudo firewall-cmd --state # 查看firewalld是否激活
sudo firewall-cmd --list-all
sudo firewall-cmd --list-ports
sudo firewall-cmd --get-services
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
sudo firewall-cmd --permanent --zone=public --remove-port=80/tcp
sudo firewall-cmd --permanent --zone=public --remove-service=ssh
sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
添加/删除规则后,必须执行以下命令使更改生效:
sudo firewall-cmd --reload
sudo firewall-cmd --get-zones
home):sudo firewall-cmd --set-default-zone=home
eth0接口绑定到public区域):sudo firewall-cmd --permanent --zone=public --change-interface=eth0
sudo firewall-cmd --reload
Enforcing模式:sudo setenforce 1 # 临时启用
sudo vi /etc/selinux/config # 设置SELINUX=enforcing(永久生效)
sudo firewall-cmd --permanent --zone=public --add-log-prefix="Firewall: "
sudo firewall-cmd --reload
--reload命令,或规则未添加--permanent参数(临时规则重启后失效)。systemctl stop iptables停止冲突服务。ss -tulnp | grep <port>),并检查云服务商安全组设置(若有)。