CentOS虚拟机防火墙配置指南(以firewalld为核心)
firewalld是CentOS 7及以上版本的默认防火墙管理工具,支持动态规则调整、区域划分和服务管理,以下是详细配置步骤:
若系统未预装firewalld,需先通过包管理器安装:
sudo yum install firewalld -y # CentOS 7/8使用yum;CentOS Stream 9+可使用dnf
安装完成后,启动firewalld服务并设置开机自启:
sudo systemctl start firewalld # 启动服务 sudo systemctl enable firewalld # 开机自动启动
确认服务是否运行正常:
sudo systemctl status firewalld # 查看服务状态(显示"active (running)"即为运行中) firewall-cmd --state # 快速查看防火墙状态(running/ not running)
firewalld通过**区域(Zone)**管理不同网络环境的规则,默认区域为public
(适用于公共网络)。常见操作包括:
firewall-cmd --get-default-zone
home
,适用于家庭网络):sudo firewall-cmd --set-default-zone=home
firewall-cmd --get-zones
例如,开放TCP协议的80端口(HTTP)和443端口(HTTPS):
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
若需临时测试,可省略--permanent
参数:
sudo firewall-cmd --zone=public --add-port=8080/tcp
sudo firewall-cmd --list-ports # 列出所有开放端口 sudo firewall-cmd --zone=public --list-all # 查看public区域的详细规则(含端口、服务)
firewalld内置了常见服务(如SSH、HTTP、HTTPS)的规则,可直接添加服务名称,比开放端口更便捷:
sudo firewall-cmd --zone=public --add-service=ssh --permanent # 允许SSH登录 sudo firewall-cmd --zone=public --add-service=http --permanent # 允许HTTP访问 sudo firewall-cmd --zone=public --add-service=https --permanent # 允许HTTPS访问
添加后需重载配置:
sudo firewall-cmd --reload
例如,删除TCP 8080端口:
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
例如,删除SSH服务:
sudo firewall-cmd --zone=public --remove-service=ssh --permanent
删除后同样需要重载配置:
sudo firewall-cmd --reload
firewall-cmd --get-services
sudo firewall-cmd --set-default-zone=drop
此时需手动开放必要的端口(如SSH的22端口),否则将无法远程连接。sudo systemctl stop firewalld sudo systemctl disable firewalld
然后安装iptables-services:sudo yum install iptables-services -y sudo systemctl enable iptables sudo systemctl start iptables
--permanent
参数确保规则重启后仍有效,临时规则需省略该参数但会在重启后失效。通过以上步骤,可完成CentOS虚拟机防火墙的基本配置,根据实际需求调整区域、端口和服务规则,保障系统安全。