温馨提示×

怎样在Apache中配置防火墙

小樊
43
2025-12-12 20:20:09
栏目: 编程语言

在 Apache 环境中配置防火墙的正确做法

一、先明确防火墙与 Web 服务器的职责

  • 防火墙负责在网络层/传输层放行或阻断端口与来源,例如仅允许访问 TCP 80/443
  • Apache 负责应用层访问控制(如基于 IP、路径、方法的限制),两者配合才能既“通得上”又“控得住”。

二、在主流系统上放行 Apache 端口

  • RHEL/CentOS 7/8(firewalld)
    1. 启动并持久化防火墙 sudo systemctl start firewalld sudo systemctl enable firewalld
    2. 放行 HTTP/HTTPS sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
    3. 按需限制来源 IP(示例仅放行 192.168.1.100) sudo firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.100” accept’ sudo firewall-cmd --reload
    4. 验证 sudo firewall-cmd --list-all
  • Ubuntu/Debian(ufw)
    1. 允许 Apache 常用端口组合 sudo ufw allow ‘Apache Full’ # 同时放行 80/tcp 与 443/tcp
    2. 按需仅放行 80 sudo ufw allow 80/tcp
    3. 验证 sudo ufw status verbose
  • Windows Server(高级安全 Windows 防火墙)
    1. 打开“高级安全 Windows 防火墙”→“入站规则”→“新建规则”→选择“端口”。
    2. 指定特定端口:80,443(如有需要可加 8080)。
    3. 选择“允许连接”,完成向导并命名规则。
    4. 用浏览器访问服务器 http://服务器IP/ 验证连通性。

三、与 SELinux 或端口变更相关的配合设置

  • 若系统启用 SELinux 且 Apache 需要发起对外连接(如反向代理到后端服务),放行策略: sudo setsebool -P httpd_can_network_connect 1
  • 若修改了 Apache 监听端口(例如改为 8080),需同步在防火墙放行对应端口: sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp sudo firewall-cmd --reload 并在 Apache 配置中更新 Listen 80/443/8080 等指令后重载服务。

四、验证与常见问题排查

  • 连通性验证
    • 本机:curl http://127.0.0.1 或 http://localhost
    • 远程:浏览器访问 http://服务器IP/ 或 curl http://服务器IP
  • 防火墙规则核验
    • firewalld:sudo firewall-cmd --list-all(应看到 http/https 或已放行端口)
    • ufw:sudo ufw status verbose
  • 服务状态与配置语法
    • RHEL/CentOS:sudo systemctl status httpd;sudo httpd -t
    • Ubuntu/Debian:sudo systemctl status apache2;sudo apache2ctl configtest
  • 若外部仍无法访问,优先检查:云厂商安全组/本机防火墙是否放行 80/443、Apache 是否在目标端口监听、以及站点配置是否绑定到正确的 ListenVirtualHost

五、进阶 应用层防护与访问控制

  • 在系统防火墙放行 80/443 的基础上,可用 Apache 访问控制 做细粒度限制(示例仅允许内网网段访问管理路径): <Directory “/var/www/html/admin”> Require ip 192.168.1.0/24
  • 如需更强的 Web 攻击防护,可部署 ModSecurity WAF 并结合 OWASP CRS 规则集;在 Ubuntu 上可安装并启用模块后,使用 ufw 放行 Apache 端口,再按需配置规则引擎与日志审计。

0