Debian 系统提升 Node.js 安全性的实用清单
一 基础系统与账户加固
- 保持系统与软件包为最新:执行 sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y,及时修补内核与基础组件漏洞。
- 创建非 root专用用户运行应用,遵循最小权限原则;禁用 root 远程登录并启用 SSH 密钥登录:
- 修改 /etc/ssh/sshd_config:设置 PermitRootLogin no、PasswordAuthentication no,重启 sshd。
- 配置 UFW 防火墙,仅开放必要端口:
- 示例:sudo ufw allow OpenSSH、sudo ufw allow 443/tcp、按需放行 80/tcp;生产环境不建议直曝 3000 等应用端口。
- 部署 Fail2ban 监控暴力登录并自动封禁;使用 Logwatch 或集中化日志收集,便于审计与告警。
二 Node.js 运行时与进程管理
- 使用 NodeSource 或 nvm 安装与切换受支持的 LTS 版本,避免使用已停止维护的版本;定期更新 npm。
- 始终以非 root用户运行进程;如需端口 <1024,使用 authbind 或前置 Nginx/Apache 反向代理。
- 使用 PM2 等进程管理工具,开启集群模式、自动重启、内存/重启阈值与日志轮转,提升稳定性与可运维性。
- 配置 环境变量管理密钥与敏感配置,避免硬编码;按需设置 NODE_ENV=production。
三 应用层安全控制
- 启用 Helmet 设置安全响应头,并配置 CSP(内容安全策略) 降低 XSS 风险;仅允许可信源与必要内联脚本。
- 实施 速率限制(如 express-rate-limit)抵御暴力与滥用;对登录、注册、找回等接口设置更严格策略。
- 严格输入校验与清理,使用参数化查询或 ORM 防止 SQL 注入;避免 eval()/new Function() 等动态执行。
- 正确配置 CORS,仅允许受信任源与必要方法/头部;启用 CSRF 保护(如 csurf 或框架内置方案)。
- 全站使用 HTTPS/TLS 加密传输;优先采用 Nginx 终止 TLS 并反向代理到本地端口,简化证书与协议配置。
四 依赖与供应链安全
- 在 package.json 中固定依赖版本(使用精确版本或 npm-shrinkwrap.json / pnpm-lock.yaml / yarn.lock),确保可重复构建与回滚。
- 定期执行 npm audit 与 Snyk 检测并修复漏洞;将依赖升级纳入变更评审与回归测试流程。
- 谨慎引入第三方模块与私有包源;必要时使用 npm 私有仓库/作用域镜像与完整性校验。
五 网络与部署架构
- 通过 Nginx 反向代理与静态资源托管,启用 HTTP/2、HSTS、TLS 1.2+、安全的 DH/ECDHE 参数与 OCSP Stapling;将应用限制在 127.0.0.1:3000 等本地端口。
- 仅开放必要端口与协议,使用 UFW 或云安全组限制来源 IP;对管理接口与调试端点设置IP 白名单与额外鉴权。
- 配置 日志与监控:应用使用结构化日志(如 morgan/bunyan),结合 Fail2ban/Logwatch 与 APM/指标平台进行异常检测与告警;制定备份与应急响应预案并定期演练。