温馨提示×

如何利用CentOS防火墙保护服务器

小樊
40
2025-12-29 04:50:24
栏目: 云计算

CentOS 防火墙加固与实战指南

一 工具选择与基线

  • CentOS 7 及以上版本,默认使用 firewalld 进行动态防火墙管理;早期版本常用 iptables。两者可共存,但建议只启用一种以免规则冲突。
  • 基线动作:
    • 查看状态:sudo systemctl status firewalldsudo firewall-cmd --state
    • 启动与开机自启:sudo systemctl start firewalld && sudo systemctl enable firewalld
    • 仅放行必要端口与服务,遵循最小权限原则;变更前备份当前规则,变更后在测试环境验证再上线。

二 使用 firewalld 的常用配置

  • 区域与默认策略
    • 设置默认区域:sudo firewall-cmd --set-default-zone=public
    • 查看区域与规则:sudo firewall-cmd --get-default-zonesudo firewall-cmd --zone=public --list-all
  • 开放端口与服务
    • 开放单端口:sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    • 开放端口范围:sudo firewall-cmd --zone=public --add-port=10000-10010/tcp --permanent
    • 按服务放行:sudo firewall-cmd --zone=public --add-service=http --permanent
    • 使配置生效:sudo firewall-cmd --reload
  • 源地址限制与富规则
    • 仅允许指定来源访问某端口(示例:仅 192.168.1.100 访问 3306):
      sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'
      sudo firewall-cmd --reload
  • 常用查询
    • 已开放端口/服务:sudo firewall-cmd --list-portssudo firewall-cmd --list-services
  • 注意:使用 --permanent 写入持久配置,修改后务必 reload 使其生效。

三 使用 iptables 的常用配置

  • 安装与启停(如系统默认未启用 iptables)
    • 安装:sudo yum install iptables-services
    • 启动与开机自启:sudo systemctl start iptables && sudo systemctl enable iptables
  • 基本策略与放行
    • 默认拒绝入站、放行已建立连接与回环:
      sudo iptables -P INPUT DROP
      sudo iptables -P FORWARD DROP
      sudo iptables -P OUTPUT ACCEPT
      sudo iptables -A INPUT -i lo -j ACCEPT
      sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    • 放行端口(示例:放行 8080/TCP):
      sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
    • 保存与恢复
      • 保存:sudo service iptables save(或按发行版保存到 /etc/sysconfig/iptables
      • 重启生效:sudo service iptables restart
  • 提示:iptables 规则顺序敏感,务必先放行回环与已建立连接,再按需放行业务端口。

四 加固要点与运维建议

  • 端口与服务最小化:仅开放 80/443/22 等必要端口;对数据库、管理端口采用来源 IP 白名单或跳板机访问。
  • SSH 安全:优先使用 SSH 密钥认证、禁用 root 直连、更改默认端口、限制失败重试;变更前确保有控制台/带外方式可回滚。
  • 日志与审计:启用并集中 rsyslog/firewalld 日志,定期审计规则命中与异常连接。
  • 规则治理:变更前备份;变更后在测试环境验证;定期审查与清理不再使用的端口/规则;对公网接口使用 public 区域,内网接口使用更宽松的 trusted 区域并严格限制来源。
  • 纵深防御:配合 WAF、IDS/IPS、系统补丁、强密码策略 与安全基线,提升整体防护能力。

五 常见场景命令清单

  • 放行 Web 与 SSH(firewalld)
    • sudo firewall-cmd --permanent --zone=public --add-service=http --add-service=https --add-service=ssh
    • sudo firewall-cmd --reload
  • 放行 8080 端口(firewalld)
    • sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
    • sudo firewall-cmd --reload
  • 仅内网网段访问数据库 3306(firewalld)
    • sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept'
    • sudo firewall-cmd --reload
  • 放行 10000–10010/TCP(firewalld)
    • sudo firewall-cmd --permanent --zone=public --add-port=10000-10010/tcp
    • sudo firewall-cmd --reload
  • 放行 8080/TCP(iptables)
    • sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT && sudo service iptables save
  • 查看规则
    • firewalld:sudo firewall-cmd --zone=public --list-all
    • iptables:sudo iptables -Ssudo iptables -L -n -v

0