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/tcp 与 443/tcp)
- 仅放行 HTTP 或 HTTPS:sudo ufw allow 80/tcp 或 sudo 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 8080 与 Listen 4433
- 在站点配置(如 /etc/apache2/sites-available/000-default.conf)中同步更新 *<VirtualHost :80> 与 *<VirtualHost :443> 的端口
- 语法检查:sudo apache2ctl configtest
- 重启服务:sudo systemctl restart apache2
- 让防火墙匹配新端口:
- 放行新端口:sudo ufw allow 8080/tcp、sudo 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 ACCEPT、sudo 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://服务器IP 或 telnet 服务器IP 80
- 日志定位:
- Apache 错误日志:sudo tail -f /var/log/apache2/error.log
按“监听→放行→连通→日志”的顺序排查,可快速定位大多数访问问题。