温馨提示×

CentOS与Node.js的安全性问题

小樊
34
2025-11-30 02:33:45
栏目: 编程语言

CentOS 与 Node.js 的安全性实践指南

一 系统层安全基线

  • 账户与权限
    • 仅保留必要的超级用户,定期检查并清理多余或共享账号;将非必要账号的 shell 改为 /sbin/nologin 或锁定。
    • 强化口令策略:长度不少于10位,包含大小写字母、数字与特殊字符;必要时通过 /etc/login.defs 统一策略。
    • 保护关键文件:对 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 设置不可更改属性(如 chattr +i),防止未授权篡改。
    • 会话安全:为 root 设置 TMOUT 自动注销;通过 /etc/pam.d/su 限制仅特定组可使用 su;必要时禁用 Ctrl+Alt+Del 重启组合键。
  • 网络与边界
    • 启用并配置 firewalld/iptables,仅开放必要端口(如 80/443),对管理口限制来源网段。
    • 最小化暴露面:关闭不必要的服务与端口,移除未使用的软件包与内核模块。
  • 运行与资源
    • 设置 ulimit(文件描述符、进程数、内存)与内核参数,缓解资源耗尽与 DoS 风险。
    • NFS 等共享存储实施最严格的访问控制(如 /etc/exports 精细化配置)。

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

  • 运行时与依赖
    • 使用 NodeSourceNVM 管理版本,保持 Node.js 与 npm 为最新稳定版;优先使用 LTS 版本线。
    • 依赖管理:固定版本(如 package-lock.json),使用 npm ci 部署;定期执行 npm audit,必要时结合 Snyk 做供应链风险监测。
  • 传输与边界
    • 全站启用 HTTPS(如 Let’s Encrypt/Certbot),对外仅暴露 443;使用 Nginx 反向代理与静态资源卸载,隐藏后端实现细节。
    • 设置安全响应头:使用 Helmet 启用 X-Frame-Options、X-XSS-Protection、X-Content-Type-Options、Strict-Transport-Security 等。
    • 严格 CORS:仅允许受信源、方法与头;限制请求体大小(如 50MB 上限视业务而定)以缓解滥用。
  • 应用逻辑与常见漏洞
    • 输入校验与输出编码,防范 XSS/SQL 注入;使用 参数化查询/ORM 杜绝拼接。
    • 身份认证与口令存储:使用 bcrypt/scrypt/PBKDF2 等强哈希;为敏感比较使用 crypto.timingSafeEqual 防时序攻击。
    • 限流与防滥用:对登录、注册、短信/邮件发送等接口使用 express-rate-limit 等中间件。
    • 错误处理:生产环境不暴露堆栈与敏感信息,统一错误码与日志审计。
    • 进程与内存:使用 PM2 守护与集群模式;在内存敏感场景评估 –secure-heap 以降低敏感信息泄露风险。

三 已知风险与修复要点

  • HTTP/2 资源耗尽导致拒绝服务(CVE-2021-22883
    • 影响范围:当时所有 10.x/12.x/14.x/15.x 早期版本;修复版本为 10.24.0、12.21.0、14.16.0、15.10.0
    • 处置:升级至修复版本;结合 ulimit 与连接数限制降低爆炸半径。
  • HTTP 请求走私(CVE-2020-8287
    • 影响范围:早期 10.x/12.x/14.x/15.x;修复版本为 10.23.1、12.20.1、14.15.4、15.5.1
    • 处置:升级;在反向代理/网关统一规范化请求头,避免前端与后端对 Transfer-Encoding/Content-Length 解析差异。
  • TLS 内存破坏(CVE-2020-8265
    • 影响范围:早期 10.x/12.x/14.x/15.x;修复版本同上(分别为 10.23.1、12.20.1、14.15.4、15.5.1)。
    • 处置:升级;启用 TLS 1.2+,禁用已知弱套件与压缩,减少攻击面。

四 运维与监控实践

  • 进程与部署
    • 使用 PM2 管理进程生命周期、日志轮转与集群;通过 Nginx 终止 TLS、压缩与缓存,降低后端压力与暴露面。
  • 配置与密钥
    • 使用 环境变量 管理数据库密码、API 密钥与第三方令牌;禁止硬编码与提交至代码仓库。
  • 日志与审计
    • 记录访问与错误日志(如 morgan),集中到受控的日志系统;对登录、权限变更与异常流量设置告警。
  • 持续更新与演练
    • 建立 周/月度 安全巡检:系统补丁、Node.js 与依赖升级、漏洞扫描与基线核查;定期开展应急与回滚演练。

五 最小可行安全清单

领域 关键动作 工具/配置
系统账户 清理多余账号、锁定不必要 root 登录、强口令 /etc/passwd、/etc/shadow、/etc/login.defs、chattr +i
会话与登录 root 自动注销、限制 su、禁用 Ctrl+Alt+Del TMOUT、/etc/pam.d/su
防火墙 仅开放 80/443,管理口白名单 firewalld/iptables
Node 版本 使用 NVM/NodeSource,保持 LTS 最新 nvm、NodeSource 仓库
传输加密 全站 HTTPS,HSTS Certbot、Nginx、Helmet
依赖安全 锁定版本、npm ci、npm audit/Snyk package-lock.json、npm audit
请求安全 严格 CORS、限流、请求体大小限制 cors、express-rate-limit
进程守护 进程托管、日志轮转、集群 PM2
日志与监控 访问/错误日志、集中化与告警 morgan、日志平台

以上清单可作为上线前自检与日常巡检的基线,配合变更管理与回滚预案执行,可显著降低被攻破概率并提升响应效率。

0