ubuntu lamp防火墙配置指南
小樊
41
2025-11-24 13:37:34
Ubuntu LAMP 防火墙配置指南
一 目标与原则
- 仅开放必需端口:Web 访问 80/443,管理通道 22,数据库 3306(如确需远程)。
- 默认拒绝入站、允许出站,避免“全开”后再逐项限制。
- 变更前先确保当前 SSH 会话不被中断,再启用防火墙。
二 使用 UFW 快速配置(推荐)
- 安装与启用
- 安装 UFW:sudo apt update && sudo apt install ufw -y
- 设置默认策略:sudo ufw default deny incoming,sudo ufw default allow outgoing
- 放行常用服务
- 放行 SSH:sudo ufw allow 22/tcp
- 放行 Web(HTTP/HTTPS):sudo ufw allow ‘Apache Full’(等价于放行 80/tcp 与 443/tcp)
- 如需远程数据库:仅在内网或跳板机场景放行 3306/tcp,例如:sudo ufw allow from 192.168.1.0/24 to any port 3306
- 启用与核验
- 启用防火墙:sudo ufw enable
- 查看状态与规则:sudo ufw status verbose;如需查看应用配置:sudo ufw app list、sudo ufw app info “Apache Full”
- 常用维护
- 临时放行端口:sudo ufw allow 8080/tcp
- 删除规则:先查编号 sudo ufw status numbered,再按编号删除:sudo ufw delete <编号>
- 重载规则:sudo ufw reload;关闭:sudo ufw disable
以上命令适用于 Ubuntu 的 UFW,且“Apache Full”为包含 80/443 的应用配置文件,便于一键放行 Web 流量。
三 使用 iptables 进行精细化控制
- 基本放行与默认策略
- 允许回环:sudo iptables -A INPUT -i lo -j ACCEPT
- 允许已建立连接:sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 放行 SSH/HTTP/HTTPS: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
- 默认拒绝入站:sudo iptables -P INPUT DROP
- 按需放行数据库
- 仅内网访问:sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT
- 规则持久化
- Ubuntu/Debian 可安装持久化工具:sudo apt install iptables-persistent -y
- 保存规则:sudo netfilter-persistent save(或 sudo iptables-save > /etc/iptables/rules.v4)
- 开机恢复:sudo netfilter-persistent reload
上述为常见的最小化 iptables 规则集与持久化方法,适合需要更细粒度策略的场景。
四 场景化规则模板
- 公网 Web 服务器(仅 80/443 + 22)
- UFW:sudo ufw allow ‘Apache Full’,sudo ufw allow 22/tcp,sudo ufw enable
- iptables:放行 22/80/443,其余入站默认 DROP
- 内网数据库服务器(禁止公网 3306)
- UFW:仅允许内网段访问 3306,例如:sudo ufw allow from 10.0.0.0/8 to any port 3306
- iptables:对 3306 采用源地址限制(如仅 192.168.1.0/24)
- 管理口白名单(仅公司出口 IP)
- UFW:sudo ufw allow from <你的公网IP> to any port 22
- iptables:sudo iptables -A INPUT -p tcp -s <你的公网IP> --dport 22 -j ACCEPT
以上模板遵循“最小暴露面”原则,数据库端口不建议对公网开放。
五 验证与运维要点
- 连通性核验
- Web:curl -I http://服务器IP 或 https://域名
- SSH:新开终端测试 ssh user@服务器IP
- 数据库:在应用配置中测试连接,或临时在跳板机 mysql -h 服务器IP -u 用户 -p
- 变更风险控制
- 先添加放行规则再启用/重载防火墙,避免 SSH 被断开
- 规则变更后使用 sudo ufw status verbose 或 sudo iptables -L -n -v 核对
- 日志与告警
- 结合 fail2ban 监控 SSH/HTTP 暴力尝试,配合 logwatch 做日志巡检
- 安全加固建议
- 数据库默认仅本地访问;远程管理优先走 SSH 密钥,禁用 root 登录与密码认证
以上做法有助于在变更后快速验证与持续加固 LAMP 环境。