温馨提示×

Ubuntu Apache怎样设置防火墙

小樊
44
2026-01-09 11:31:33
栏目: 智能运维

Ubuntu 上用 UFW 放行 Apache 的标准做法

  • 查看可用的应用配置:sudo ufw app list(常见有 Apache、Apache Full、Apache Secure
  • 仅放行 HTTP:sudo ufw allow 80/tcp
  • 同时放行 HTTP 与 HTTPS:sudo ufw allow 443/tcp,或一键放行:sudo ufw allow ‘Apache Full’
  • 如通过 SSH 管理服务器,务必先放行 SSH:sudo ufw allow ssh(或 sudo ufw allow 22/tcp
  • 启用防火墙:sudo ufw enable
  • 查看状态与规则:sudo ufw status(应看到 80/443 或 Apache 规则为 ALLOW IN)
    以上做法适用于 Ubuntu 的 UFW,是最常见且安全的起步配置。

按场景选择放行方式

场景 命令示例
仅 HTTP sudo ufw allow 80/tcp
HTTP + HTTPS sudo ufw allow 443/tcp 或 sudo ufw allow ‘Apache Full’
仅 HTTPS sudo ufw allow 443/tcp
同时放行 SSH sudo ufw allow ssh(或 22/tcp)后再放行 80/443

说明:UFW 的 ‘Apache Full’ 预设即允许 80/tcp443/tcp;若你只运行 HTTPS,可只放行 443/tcp

与 Apache 配置保持一致

  • 确认 Apache 监听端口与防火墙放行端口一致:检查 /etc/apache2/ports.conf 与站点配置中的 Listen 80 和(如启用)Listen 443
  • 修改端口或启用 SSL 后,先检测配置语法:sudo apache2ctl configtest;无误后重载:sudo systemctl reload apache2
  • 若使用 UFW 的应用配置(如 ‘Apache’/‘Apache Full’),保持默认应用策略即可;若手动放行端口,请确保与 Apache 的 Listen 指令一一对应。

验证与常见问题排查

  • 查看防火墙状态与规则:sudo ufw status(应看到 80/443 或 Apache 规则为 ALLOW IN)
  • 检查 Apache 是否在运行:sudo systemctl status apache2
  • 本机快速自测:curl -I http://127.0.0.1http://localhost
  • 远程访问测试:在浏览器打开 http://服务器IP(若启用 HTTPS,用 https://服务器IP
  • 无法访问时:
    • 核对 UFW 规则是否生效(sudo ufw status)
    • 核对 Apache 是否在监听正确端口(sudo apache2ctl configtest;必要时 sudo systemctl reload apache2)
    • 查看错误日志定位问题:tail -f /var/log/apache2/error.log
      以上步骤可快速判断是防火墙、Apache 配置还是网络连通性问题。

安全加固建议

  • 启用 HTTPS:使用 Let’s Encrypt 免费证书,一键配置:sudo apt install certbot python3-certbot-apache;sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
  • 隐藏版本信息:在 /etc/apache2/apache2.conf 中将 ServerTokens OS 改为 ServerTokens Prod,将 ServerSignature On 改为 ServerSignature Off;重启 Apache
  • 限制访问与目录权限:合理配置 Require all granted/denied;网站目录建议所有者为 www-data:www-data,权限 755/644
  • 部署 Fail2Ban:sudo apt install fail2ban;启用 Apache 相关 jail 以防御暴力破解
    这些措施能显著提升 Web 服务的安全性与合规性。

0