温馨提示×

Linux服务器Node.js如何进行安全配置

小樊
31
2025-12-10 12:19:54
栏目: 云计算

Linux服务器上Node.js安全配置清单

一 基础运行环境与权限

  • 使用nvmNodeSource安装与切换版本,保持版本可控与可回滚;避免使用系统自带旧版本。示例:nvm install 18 && nvm use 18 或按发行版导入 NodeSource 仓库后安装。
  • 非 root专用用户运行进程,最小化权限;如需对外仅暴露必要端口,例如3000
  • 进程守护建议使用systemd并配置最小权限、工作目录、日志与重启策略,避免以 root 直接启动应用。
  • 示例(创建低权限用户):adduser --disabled-login nodejsUser,服务单元文件中设置 User=nodejsUser

二 传输加密与反向代理

  • 全站启用HTTPS,可使用Let’s Encrypt免费证书与自动化工具(如 certbot)获取与续期;将 HTTP 自动重定向到 HTTPS。
  • 推荐用Nginx/Apache做反向代理与 TLS 终止,同时设置安全响应头并隐藏后端细节。
  • 示例 Nginx 片段:
    • 监听 443 ssl;配置 ssl_certificatessl_certificate_key
    • proxy_pass http://127.0.0.1:3000;
    • 设置头部:Host $host; X-Real-IP $remote_addr; X-Forwarded-For $proxy_add_x_forwarded_for; X-Forwarded-Proto $scheme;
  • 在 Node.js 中识别代理协议:app.enable('trust proxy'),并对安全 Cookie 设置 Secure 属性。

三 应用层安全控制

  • 启用Helmet设置安全响应头(如 X-Frame-Options、X-XSS-Protection、Referrer-Policy 等),并按需配置 CSP(内容安全策略)。
  • 严格CORS:仅允许受信源、必要方法与头;避免通配 Access-Control-Allow-Origin: *
  • 输入校验与输出编码:使用如express-validator定义规则,防范SQL 注入、XSS、命令注入等。
  • 安全会话与 Cookie:使用强随机secret,设置 HttpOnlySecureSameSite=Strict/Lax,并自定义会话 Cookie 名称,避免泄露技术栈。
  • 限流与防滥用:对登录、注册、API 关键路径启用express-rate-limit等限流中间件,缓解暴力与 DoS。
  • 请求体大小限制:如 express.json({ limit: '50mb' }),防止超大请求导致资源耗尽。
  • 错误处理:生产环境返回通用错误信息,详细堆栈写入日志,避免信息泄露。

四 依赖与代码安全

  • 持续更新Node.js与依赖,定期执行 npm audit fix,并在 CI/CD 中集成Snyk进行依赖漏洞监测与修复。
  • 锁定依赖版本,使用package-lock.json确保可重复构建与一致性。
  • 使用ESLint配合安全插件(如 eslint-plugin-security)在开发阶段发现常见安全问题。
  • 避免危险 API(如 eval())、减少全局变量、审查第三方库来源与维护状况。

五 系统与网络安全加固

  • 防火墙与端口:仅开放必要端口(如 22/SSH、80/HTTP、443/HTTPS)。
    • Ubuntu/Debian:ufw allow 22,80,443/tcp && ufw enable
    • CentOS/RHEL:firewall-cmd --permanent --add-service=http --add-service=https && firewall-cmd --reload
  • SSH 安全:禁用root 登录、使用密钥认证、可修改默认端口、设置空闲超时与登录失败限制。
  • 系统与自动更新:保持系统与安全补丁最新;Ubuntu 可启用 unattended-upgrades 做自动安全更新。
  • 强制访问控制:启用 SELinuxAppArmor,为 Node.js 进程定义最小权限与安全策略。
  • 监控与日志:记录访问与错误日志,结合 APM/告警工具监测异常行为;定期备份关键数据与配置。

0