温馨提示×

CentOS防火墙安全策略如何制定

小樊
35
2025-10-11 01:27:02
栏目: 智能运维

CentOS防火墙安全策略制定指南
CentOS系统中,firewalld是默认的防火墙管理工具(CentOS 7及以上版本),其通过“区域(Zone)”概念组织规则,实现分级流量控制。以下是制定安全策略的具体步骤:

1. 基础准备:安装与启动firewalld

确保firewalld已安装并运行:

# 安装firewalld(若未安装) sudo yum install firewalld -y # 启动服务并设置开机自启 sudo systemctl start firewalld sudo systemctl enable firewalld 

验证状态:

sudo firewall-cmd --state # 应返回“running” 

2. 配置默认区域策略(第一道防线)

firewalld预定义了public(公共)、home(家庭)、work(工作)等区域,其中public为默认区域(适用于对外提供服务的主机)。核心原则:默认拒绝所有未明确允许的流量

  • 查看当前默认区域:
    sudo firewall-cmd --get-default-zone 
  • 修改默认区域(如设为public,更严格):
    sudo firewall-cmd --set-default-zone=public 
  • 将网络接口绑定到对应区域(如eth0绑定到public):
    sudo firewall-cmd --zone=public --add-interface=eth0 --permanent sudo firewall-cmd --reload 

3. 最小化开放端口(减少攻击面)

仅开放业务必需的端口,避免不必要的服务暴露:

  • 开放单个端口(如HTTP的80/tcp、SSH的22/tcp):
    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=22/tcp --permanent 
  • 开放服务(更便捷,自动关联端口)(如httphttpsssh):
    sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --zone=public --add-service=https --permanent 
  • 移除不必要的端口(如关闭闲置的9001/tcp):
    sudo firewall-cmd --zone=public --remove-port=9001/tcp --permanent 
  • 重新加载配置使更改生效:
    sudo firewall-cmd --reload 
  • 查看当前开放的端口和服务:
    sudo firewall-cmd --zone=public --list-ports # 查看开放端口 sudo firewall-cmd --zone=public --list-services # 查看开放服务 

4. 使用富规则(Rich Rules)实现精细化控制

富规则支持基于IP地址、协议、时间段、用户等条件的复杂过滤,提升安全性:

  • 允许特定IP访问SSH(如仅允许公司IP 192.168.1.100访问22端口):
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' 
  • 拒绝特定IP段访问Web服务(如拒绝192.168.2.0/24访问80端口):
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="80" reject' 
  • 限制时间段访问(如仅允许上班时间(9:00-18:00)访问80端口):
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept time start="09:00" end="18:00"' 
  • 重新加载配置:
    sudo firewall-cmd --reload 

5. 配置日志记录(监控与审计)

启用日志记录可追踪防火墙活动,便于排查异常:

  • 设置日志前缀(如“Firewall:”):
    sudo firewall-cmd --permanent --add-log-prefix="Firewall: " 
  • 调整日志级别(如记录拒绝的流量):
    sudo firewall-cmd --permanent --set-log-denied=all # 记录所有拒绝的流量(可选:all/unicast/broadcast/multicast) 
  • 查看实时日志(过滤firewalld相关记录):
    sudo tail -f /var/log/messages | grep firewalld 

6. 结合SELinux增强安全(深度防御)

SELinux是CentOS的安全增强模块,可与firewalld协同工作:

  • 启用SELinux(临时生效):
    sudo setenforce 1 
  • 永久生效:编辑/etc/selinux/config,将SELINUX=enforcing(强制模式,推荐)。
  • 配置SELinux端口标签(如允许SSH使用非标准端口2222):
    sudo semanage port -a -t ssh_port_t -p tcp 2222 

7. 定期维护与优化

  • 定期审查规则:每月检查一次firewall-cmd --list-all,移除不再需要的端口或规则。
  • 更新firewalld:及时升级firewalld以修复安全漏洞:
    sudo yum update firewalld -y 
  • 备份规则:定期备份配置文件(/etc/firewalld/目录),便于恢复:
    sudo tar -czvf firewalld_backup.tar.gz /etc/firewalld/ 

通过以上步骤,可构建一个最小化开放、精细化控制、可监控审计的CentOS防火墙安全策略,有效降低服务器遭受攻击的风险。

0