温馨提示×

Apache在Ubuntu上如何配置防火墙

小樊
44
2026-01-03 14:27:57
栏目: 智能运维

Ubuntu 上配置防火墙以放行 Apache

一、使用 UFW 放行 Apache(推荐)

  • 查看应用配置档案并放行:
    • 列出可用档案:sudo ufw app list(常见有 Apache、Apache Full、Apache Secure
    • 放行全部 Web 流量:sudo ufw allow ‘Apache Full’(同时开放 80/tcp443/tcp
    • 仅放行 HTTP 或 HTTPS:sudo ufw allow 80/tcpsudo ufw allow 443/tcp
    • 如通过 SSH 管理,务必放行:sudo ufw allow ssh
  • 启用并验证:
    • 启用防火墙:sudo ufw enable
    • 查看状态与规则:sudo ufw status(应看到 80/443 或 Apache 档案为 ALLOW IN)
  • 按需设置默认策略(更安全):
    • 默认拒绝入站、允许出站:sudo ufw default deny incoming && sudo ufw default allow outgoing
  • 规则变更后可重载:sudo ufw reload
    以上做法可确保仅开放必要端口,兼顾安全与可用性。

二、自定义端口与 HTTPS 配置

  • 修改 Apache 监听端口(示例改为 8080/4433):
    • 编辑:sudo nano /etc/apache2/ports.conf,设置 Listen 8080Listen 4433
    • 在站点配置(如 /etc/apache2/sites-available/000-default.conf)中同步更新 *<VirtualHost :80> 与 *<VirtualHost :443> 的端口
    • 语法检查:sudo apache2ctl configtest
    • 重启服务:sudo systemctl restart apache2
  • 让防火墙匹配新端口:
    • 放行新端口:sudo ufw allow 8080/tcpsudo ufw allow 4433/tcp
  • 启用 HTTPS(示例自签名,生产建议用 Let’s Encrypt):
    • 启用模块:sudo a2enmod ssl && sudo systemctl restart apache2
    • 生成证书并配置虚拟主机(证书路径:/etc/ssl/certs//etc/ssl/private/
    • HTTP 到 HTTPS 跳转(在 80 虚拟主机中添加):Redirect permanent / https://你的域名/
      当监听端口变更时,务必同步更新 UFW 规则,避免端口被防火墙拦截。

三、使用 iptables 的高级用法(可选)

  • 放行端口示例:
    • HTTP/HTTPS:sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    • 仅允许指定来源 IP 访问某端口:sudo iptables -A INPUT -p tcp -s 203.0.113.10 --dport 80 -j ACCEPT
  • 常用维护:
    • 查看规则:sudo iptables -L -n -v
    • 删除规则:按编号删除(先 iptables -L --line-numbers 查看编号,再 iptables -D INPUT <编号>
    • 持久化(避免重启丢失):
      • 安装持久化工具:sudo apt install iptables-persistent
      • 保存规则:sudo netfilter-persistent save(或 sudo iptables-save > /etc/iptables/rules.v4
        iptables 规则灵活强大,适合精细化控制与复杂网络策略。

四、验证与排错

  • 端口监听与服务状态:
    • 检查是否监听:sudo ss -tulnp | grep ‘:80|:443’
    • 查看 Apache:sudo systemctl status apache2
  • 防火墙与连通性:
    • 防火墙状态:sudo ufw status(或 sudo iptables -L -n -v
    • 外部连通性测试:curl http://服务器IPtelnet 服务器IP 80
  • 日志定位:
    • Apache 错误日志:sudo tail -f /var/log/apache2/error.log
      按“监听→放行→连通→日志”的顺序排查,可快速定位大多数访问问题。

0