ubuntu lamp防火墙如何配置
小樊
32
2025-12-20 05:15:04
Ubuntu LAMP 防火墙配置指南
一、快速配置 UFW(推荐)
- 查看与启用防火墙
- 查看状态:sudo ufw status verbose
- 启用防火墙:sudo ufw enable(远程操作前务必先放行 SSH,见下条)
- 放行 Web 与 SSH
- 一键放行 Web(HTTP/HTTPS):sudo ufw allow ‘Apache Full’
- 仅放行 HTTP:sudo ufw allow ‘Apache’
- 放行 SSH(端口 22/TCP):sudo ufw allow 22/tcp
- 验证规则
- 查看规则与方向:sudo ufw status numbered
- 示例输出应含:Apache Full ALLOW Anywhere(以及 v6 条目)
- 说明
- UFW 的 Apache Full 配置文件内置了 80/tcp、443/tcp 两条规则,适合大多数 LAMP 场景。
二、按需开放或限制端口
- 仅放通 HTTP/HTTPS(不启用 UFW 的 Apache 应用配置时)
- sudo ufw allow 80/tcp
- sudo ufw allow 443/tcp
- 限制到指定来源 IP(提高安全性)
- 例:仅允许 203.0.113.10 访问 Web
- sudo ufw allow from 203.0.113.10 to any port 80
- sudo ufw allow from 203.0.113.10 to any port 443
- 如需远程管理 MySQL(不建议对公网开放)
- 放通端口:sudo ufw allow 3306/tcp
- 更安全的做法:保持 3306 仅监听 127.0.0.1,通过 SSH 隧道或内网访问数据库。
三、使用 iptables 的进阶配置(可选)
- 基本放行(示例)
- sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- 仅本地访问 MySQL(推荐)
- 不添加 3306 的 INPUT 规则,或明确限制来源:
- sudo iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT
- 默认策略与持久化
- 默认拒绝入站:sudo iptables -P INPUT DROP
- 保存规则:sudo iptables-save > /etc/iptables/rules.v4
- 开机恢复:iptables-restore < /etc/iptables/rules.v4(可放入网络接口启动脚本以持久化)
四、验证与常见问题
- 验证 Web 访问
- 本机:curl -I http://127.0.0.1
- 远程:浏览器访问 http://服务器IP/ 或 https://服务器IP/
- 验证防火墙状态
- UFW:sudo ufw status numbered
- iptables:sudo iptables -L -n -v
- 远程连接被断开
- 原因:启用 UFW 前未放行 22/TCP。
- 处理:在本地控制台或带外管理放行 22/TCP 后再启用 UFW,或临时执行 sudo ufw disable 恢复访问。
- 端口与服务对应
- 80/TCP:HTTP(Apache)
- 443/TCP:HTTPS(Apache + TLS/SSL)
- 22/TCP:SSH(远程管理)
- 3306/TCP:MySQL(仅在确有远程需求时开放,且建议限定来源)