CentOS防火墙管理指南(以firewalld为核心)
CentOS 7及以上版本默认使用firewalld作为防火墙管理工具,它支持动态规则调整、区域(Zone)划分及服务关联,提供了更灵活的安全管理能力。以下是firewalld的常用管理操作:
查看防火墙状态
使用以下命令确认firewalld是否运行及状态:
sudo systemctl status firewalld # 查看服务运行状态(active/running表示运行中)
firewall-cmd --state # 快速查看防火墙状态(running表示运行中)
启动/停止/重启防火墙
sudo systemctl start firewalld
sudo systemctl stop firewalld
sudo systemctl restart firewalld
设置开机自启
若需firewalld随系统启动自动运行,执行:
sudo systemctl enable firewalld
若需禁用开机自启:
sudo systemctl disable firewalld
开放/关闭端口
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 --remove-port=22/tcp
--permanent参数即可。添加/移除服务
firewalld内置了常见服务(如http、https、ssh)的规则,可直接通过服务名管理:
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --remove-service=ssh
配置默认区域
区域(Zone)定义了不同网络环境的信任级别(如public、home、internal),默认区域为public(最严格)。
firewall-cmd --get-default-zone
home:sudo firewall-cmd --set-default-zone=home
富规则(Rich Rules)
富规则支持更复杂的条件过滤(如基于IP、协议、端口范围),适用于高级场景:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.2.0/24" reject'
查看规则
sudo firewall-cmd --list-ports
sudo firewall-cmd --list-all
firewall-cmd --list-all-zones
重载配置
修改规则后,需重载firewalld使变更生效:
sudo firewall-cmd --reload # 动态重载(不中断现有连接)
sudo firewall-cmd --complete-reload # 完全重载(断开现有连接,类似重启)
接口绑定区域
将指定网络接口(如eth0)绑定到特定区域(如public):
sudo firewall-cmd --permanent --zone=public --add-interface=eth0
sudo firewall-cmd --reload
限制不必要的端口
仅开放业务必需的端口(如Web服务的80/443端口、SSH的22端口),关闭其他端口以减少攻击面。
使用SELinux增强安全
SELinux与firewalld配合,提供更细粒度的访问控制。确保SELinux处于启用状态:
sudo setenforce 1 # 临时启用(0为禁用)
sudo vi /etc/selinux/config # 永久启用(修改SELINUX=enforcing)
定期更新规则
根据业务变化及时调整防火墙规则,避免过时规则导致安全隐患。
监控日志
启用firewalld日志记录,便于排查安全事件:
sudo firewall-cmd --permanent --zone=public --add-log-prefix="Firewall: "
sudo firewall-cmd --reload
日志路径通常为/var/log/messages或/var/log/firewalld。
通过以上操作,可实现对CentOS系统防火墙的有效管理,保障系统网络安全。需注意,生产环境中修改规则前应充分测试,避免误操作导致服务中断。