温馨提示×

ubuntu如何进行nodejs安全配置

小樊
34
2025-12-10 18:00:02
栏目: 编程语言

Ubuntu 上 Node.js 安全配置清单

一 系统与账户加固

  • 保持系统与软件包为最新:执行sudo apt update && sudo apt upgrade,及时修补漏洞。
  • 启用自动安全更新:安装并配置unattended-upgrades,编辑**/etc/apt/apt.conf.d/50unattended-upgrades**以自动安装安全更新。
  • 强化 SSH:修改默认端口、禁用root登录、仅允许密钥认证、设置空闲超时;用ufw仅放行必要端口(如22/80/443)。
  • 最小权限运行:创建非 root专用用户运行 Node.js,避免以 root 直接启动应用。
  • 进程隔离:启用AppArmor或 SELinux 对 Node.js 进程进行系统调用与文件访问限制(如查看状态:sudo aa-status)。

二 Node.js 运行时与应用安全

  • 版本与依赖管理:使用nvm安装与切换受支持的 Node 版本;定期执行npm audit / npm audit fix,必要时配合Snyk进行依赖漏洞扫描与升级。
  • 传输加密:全站启用HTTPS,可用Let’s Encrypt证书;或临时自签仅用于测试:openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
  • 安全响应头:使用Helmet设置CSP、X-Frame-Options、X-XSS-Protection等以降低常见 Web 攻击面。
  • 输入校验与速率限制:对请求参数进行严格校验(如express-validator);对接口实施限流(如express-rate-limit)缓解 DoS。
  • 安全会话与密码存储:启用HttpOnly/Secure等会话 Cookie 属性;密码使用bcrypt/scrypt等强哈希算法存储。
  • 错误处理:生产环境避免泄露堆栈与敏感信息,统一返回通用错误并记录到日志。
  • 子进程与命令执行:谨慎使用child_process,避免拼接用户输入;必要时以最小权限、受限环境执行。

三 进程运行与反向代理

  • 以非 root 用户运行:例如创建用户nodeapp并赋权,应用监听127.0.0.1:3000等本地端口。
  • 进程守护与日志:使用PM2启动与管理进程(如:pm2 start app.js --name “myapp”),并通过pm2 logspm2 monit查看日志与资源。
  • 反向代理与静态资源:用Nginx终止 TLS、承载静态资源并设置安全头,示例:
    • 安装:sudo apt install nginx
    • 站点配置片段:
      • 监听 443 ssl;配置证书路径
      • proxy_pass http://127.0.0.1:3000
      • 设置头部:Host $hostX-Real-IP $remote_addrX-Forwarded-For $proxy_add_x_forwarded_forX-Forwarded-Proto $scheme
    • 启用 HTTPS:可用certbot --nginx -d yourdomain.com自动申请与配置证书。

四 防火墙网络与持续运维

  • 防火墙策略:使用ufw仅开放必要端口(如22/80/443),默认拒绝其他入站流量。
  • 网络最小暴露面:Node.js 仅监听127.0.0.1,由 Nginx 对外暴露;云上配合安全组仅放行业务所需端口与来源。
  • 日志与监控:应用侧记录访问与错误日志(如morgan),结合PM2或系统日志进行审计;持续关注异常流量与登录行为。
  • 备份与演练:定期备份代码、配置与数据库,并进行恢复演练;将安全更新、依赖审计、证书续期纳入变更与巡检流程。

0