温馨提示×

ubuntu nginx防火墙设置要点

小樊
39
2025-12-24 22:21:07
栏目: 智能运维

Ubuntu 上 Nginx 防火墙设置要点

一、基础规则与常用命令

  • 使用 UFW 管理防火墙,先查看状态与可用应用配置:sudo ufw statussudo ufw app list
  • 允许 Web 访问:使用应用配置 sudo ufw allow ‘Nginx Full’(同时放开 80/443),或分别放行 sudo ufw allow 80/tcpsudo 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 -tsudo 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 并开启 HSTSsudo 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
  • 外部访问失败:在本地用 curltelnet 测试;若仅本机能访问,多为云厂商安全组/外部防火墙未放行。
  • 规则顺序或来源限制问题:使用 sudo ufw status numbered 检查靠前规则与来源 IP 限制是否拦截了合法流量。

0