温馨提示×

如何配置centos虚拟机防火墙

小樊
40
2025-09-17 16:46:51
栏目: 云计算

CentOS虚拟机防火墙配置指南(以firewalld为核心)
firewalld是CentOS 7及以上版本的默认防火墙管理工具,支持动态规则调整、区域划分和服务管理,以下是详细配置步骤:

1. 安装与启动firewalld服务

若系统未预装firewalld,需先通过包管理器安装:

sudo yum install firewalld -y # CentOS 7/8使用yum;CentOS Stream 9+可使用dnf 

安装完成后,启动firewalld服务并设置开机自启:

sudo systemctl start firewalld # 启动服务 sudo systemctl enable firewalld # 开机自动启动 

2. 检查firewalld状态

确认服务是否运行正常:

sudo systemctl status firewalld # 查看服务状态(显示"active (running)"即为运行中) firewall-cmd --state # 快速查看防火墙状态(running/ not running) 

3. 配置防火墙区域(Zone)

firewalld通过**区域(Zone)**管理不同网络环境的规则,默认区域为public(适用于公共网络)。常见操作包括:

  • 查看当前默认区域
    firewall-cmd --get-default-zone 
  • 修改默认区域(如设为home,适用于家庭网络):
    sudo firewall-cmd --set-default-zone=home 
  • 查看所有可用区域
    firewall-cmd --get-zones 

4. 开放端口(常用操作)

① 永久开放端口(需重载生效)

例如,开放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区域的详细规则(含端口、服务) 

5. 允许服务通过防火墙

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 

6. 删除防火墙规则

① 删除开放的端口

例如,删除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 

7. 其他实用操作

  • 查看所有可用服务(用于添加服务时参考):
    firewall-cmd --get-services 
  • 设置默认拒绝所有流量(增强安全性,需谨慎使用):
    sudo firewall-cmd --set-default-zone=drop 
    此时需手动开放必要的端口(如SSH的22端口),否则将无法远程连接。

注意事项

  • 避免锁定自己:若通过SSH远程管理虚拟机,开放SSH端口(22/tcp)后再修改规则,防止被锁在外面。
  • CentOS 8及以上版本:默认使用firewalld,若需使用iptables,需先禁用firewalld:
    sudo systemctl stop firewalld sudo systemctl disable firewalld 
    然后安装iptables-services:
    sudo yum install iptables-services -y sudo systemctl enable iptables sudo systemctl start iptables 
  • 规则持久化:firewalld的--permanent参数确保规则重启后仍有效,临时规则需省略该参数但会在重启后失效。

通过以上步骤,可完成CentOS虚拟机防火墙的基本配置,根据实际需求调整区域、端口和服务规则,保障系统安全。

0