CentOS如何管理防火墙
CentOS防火墙管理指南(以firewalld为核心)
CentOS 7及以上版本默认使用firewalld作为防火墙管理工具,它支持动态规则调整、区域(Zone)划分及服务关联,提供了更灵活的安全管理能力。以下是firewalld的常用管理操作:
一、基础状态管理
-
查看防火墙状态
使用以下命令确认firewalld是否运行及状态:sudo systemctl status firewalld # 查看服务运行状态(active/running表示运行中) firewall-cmd --state # 快速查看防火墙状态(running表示运行中)
-
启动/停止/重启防火墙
- 启动firewalld(即时生效,重启后失效):
sudo systemctl start firewalld
- 停止firewalld(即时生效,重启后恢复):
sudo systemctl stop firewalld
- 重启firewalld(应用配置变更,即时生效):
sudo systemctl restart firewalld
- 启动firewalld(即时生效,重启后失效):
-
设置开机自启
若需firewalld随系统启动自动运行,执行:sudo systemctl enable firewalld
若需禁用开机自启:
sudo systemctl disable firewalld
二、规则配置(核心操作)
-
开放/关闭端口
- 开放端口(永久生效,需重载):
例如开放HTTP(80/tcp)、HTTPS(443/tcp)端口:sudo firewall-cmd --permanent --zone=public --add-port=80/tcp sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
- 关闭端口(永久生效,需重载):
例如关闭22/tcp端口:sudo firewall-cmd --permanent --zone=public --remove-port=22/tcp
- 即时生效(无需重载):
若需临时开放端口(重启后失效),去掉--permanent
参数即可。
- 开放端口(永久生效,需重载):
-
添加/移除服务
firewalld内置了常见服务(如http、https、ssh)的规则,可直接通过服务名管理:- 添加服务(永久生效):
例如开放SSH服务(22/tcp):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、协议、端口范围),适用于高级场景:- 允许特定IP访问端口:
例如允许192.168.1.100访问80/tcp端口:sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept'
- 拒绝特定IP段访问:
例如拒绝192.168.2.0/24访问所有端口:sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.2.0/24" reject'
- 允许特定IP访问端口:
三、其他常用操作
-
查看规则
- 查看所有开放端口:
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系统防火墙的有效管理,保障系统网络安全。需注意,生产环境中修改规则前应充分测试,避免误操作导致服务中断。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS如何管理防火墙
本文地址: https://pptw.com/jishu/721163.html