ubuntu nginx防火墙设置要点
小樊
39
2025-12-24 22:21:07
Ubuntu 上 Nginx 防火墙设置要点
一、基础规则与常用命令
- 使用 UFW 管理防火墙,先查看状态与可用应用配置:sudo ufw status、sudo ufw app list。
- 允许 Web 访问:使用应用配置 sudo ufw allow ‘Nginx Full’(同时放开 80/443),或分别放行 sudo ufw allow 80/tcp、sudo ufw allow 443/tcp。
- 允许 SSH 管理:优先限制来源 IP,例如 sudo ufw allow from 203.0.113.10 to any port 22;如必须全网开放可用 sudo ufw allow OpenSSH。
- 启用防火墙:sudo ufw enable;变更后可用 sudo ufw reload 使规则生效;查看带编号规则:sudo ufw status numbered(按编号删除:sudo ufw delete <编号>)。
二、端口与服务联动检查
- 确认服务监听端口:sudo ss -tulnp | grep ‘:80|:443’;若未监听,检查 Nginx 配置与运行状态。
- 验证 Nginx 配置与运行状态:sudo nginx -t、sudo systemctl status nginx;必要时重启 sudo systemctl restart nginx。
- 外部连通性测试:本地执行 curl http://<服务器IP> 或 telnet <服务器IP> 80;无法访问时,同时排查防火墙与服务监听两方面。
三、安全加固建议
- 默认拒绝入站、放行出站并仅开放必要端口:
- sudo ufw default deny incoming
- sudo ufw default allow outgoing
- sudo ufw allow OpenSSH
- sudo ufw allow 80/tcp
- sudo ufw allow 443/tcp
- sudo ufw enable
- 安装并启用 Fail2Ban 保护 SSH 与 Nginx 登录端点:sudo apt install fail2ban -y && sudo systemctl enable --now fail2ban。
- 全站强制 HTTPS 并开启 HSTS:sudo apt install certbot python3-certbot-nginx -y,然后执行 sudo certbot --nginx --redirect --hsts --staple-ocsp --email your@email.com --agree-tos;Nginx 隐藏版本号:server_tokens off;。
四、按需放行的常见场景
- 仅 HTTP:sudo ufw allow ‘Nginx HTTP’ 或 sudo ufw allow 80/tcp。
- 仅 HTTPS:sudo ufw allow ‘Nginx HTTPS’ 或 sudo ufw allow 443/tcp。
- 同时放行 HTTP/HTTPS:sudo ufw allow ‘Nginx Full’。
- 限制数据库访问(如仅内网):sudo ufw allow from 192.168.1.0/24 to any port 3306;若无需远程数据库,保持默认拒绝更安全。
- 自定义端口(例如 3000):sudo ufw allow 3000/tcp。
五、故障排查清单
- 防火墙未启用或规则未放行:执行 sudo ufw status numbered,确认存在 80/443/22 的允许规则。
- 服务未监听:执行 sudo ss -tulnp | grep ‘:80|:443’,若为空,检查 /etc/nginx/ 配置并 sudo nginx -t && sudo systemctl restart nginx。
- 外部访问失败:在本地用 curl 或 telnet 测试;若仅本机能访问,多为云厂商安全组/外部防火墙未放行。
- 规则顺序或来源限制问题:使用 sudo ufw status numbered 检查靠前规则与来源 IP 限制是否拦截了合法流量。