温馨提示×

Node.js在CentOS中的安全设置有哪些

小樊
37
2026-01-02 02:27:20
栏目: 编程语言

Node.js 在 CentOS 的安全设置清单

一 系统与账户安全

  • 保持系统与 Node.js 为最新稳定版本,及时修补漏洞;优先使用 LTS 版本,便于获得长期安全修复。
  • 强化登录安全:禁用 root 的 SSH 登录,使用普通用户 + sudo;启用 SSH 密钥认证,禁用密码登录;如条件允许,限制可登录的 SSH 来源 IP
  • 精简特权账户:清理不必要的 sudoers 与可登录账户,定期检查 /etc/passwd/etc/shadow,锁定或删除无用账号。
  • 加强密码与会话策略:设置复杂度要求(大小写字母、数字、特殊字符中至少 3 种,长度 ≥10 位);为 root 设置会话超时(例如在 /etc/profile 中设置 TMOUT=300 秒);在 /etc/pam.d/su 中限制仅特定用户组可使用 su 切换到 root。
  • 保护关键系统文件:对 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 设置不可修改属性(如 chattr +i),降低被篡改风险。

二 网络与防火墙

  • 使用 firewalld 最小化开放端口:仅放行 22/TCP(SSH)80/TCP(HTTP)443/TCP(HTTPS);如应用监听 3000 等端口,仅在受控的反向代理或内网中开放,避免直接暴露公网。
  • 云上环境同步配置 安全组:仅允许指定来源 IP 访问管理端口,遵循最小暴露面原则。
  • 建议通过 Nginx 反向代理对外暴露服务,统一处理 TLS、压缩、静态资源与请求头安全。

三 Node.js 应用层安全

  • 启用 HTTPS:部署有效 TLS/SSL 证书(可用 Let’s Encrypt/Certbot),强制 HSTS,避免明文传输与中间人攻击。
  • 使用 Helmet 设置安全响应头(如 X-Frame-Options、X-XSS-Protection、X-Content-Type-Options 等),降低常见 Web 攻击面。
  • 严格 CORS:仅允许受信任源、必要方法与头;避免通配符 origin 在生产环境使用。
  • 限制请求体大小:如 express.json({ limit: ‘50mb’ }),缓解大体积请求导致的 DoS 风险。
  • 速率限制:使用 express-rate-limit 等中间件防止暴力请求与滥用。
  • 输入校验与输出编码:对参数进行类型与范围校验,防范 XSS 与逻辑漏洞;使用 bcrypt 等安全哈希算法存储密码。
  • 安全的错误处理:生产环境不暴露堆栈与敏感信息,统一记录到日志并返回通用错误提示。
  • 依赖安全:定期执行 npm auditnpm update,及时修复已知漏洞;锁定依赖版本(如 package-lock.json)。

四 进程运行与权限隔离

  • 使用 非 root 用户运行 Node.js 进程,遵循最小权限原则;应用目录与日志目录禁止其他用户写入。
  • 采用 PM2 管理进程:支持守护、零停机重启、集群模式与开机自启;配置内存上限与日志轮转,便于稳定与审计。
  • 通过 Nginx 反向代理与 Node.js 解耦:对外仅暴露 80/443,由 Nginx 终止 TLS、处理压缩与静态资源,Node.js 专注业务。
  • 环境变量管理敏感信息:使用 dotenv 或系统环境变量注入 DB_PASSWORD、JWT_SECRET 等,避免硬编码。

五 日志监控与持续加固

  • 结构化日志:使用 winston 等库输出 JSON 格式日志,按级别分离错误与访问日志,便于检索与告警。
  • 日志轮转与保留:通过 PM2 logrotate 控制单文件大小与保留天数,防止磁盘被占满。
  • 运行监控与告警:接入 PM2 Keymetrics 或自建 Prometheus + Grafana,监控进程存活、内存/CPU、异常重启与响应时延。
  • 持续更新与审计:定期更新 Node.js、NPM 依赖与操作系统补丁;对公网开放面、账户权限、证书有效期与防火墙规则进行周期性复核。

0