CentOS 上 Node.js 安全加固清单
一 系统与网络加固
- 保持系统与软件包为最新:定期执行 yum update,及时修补内核与中间件漏洞。
- 防火墙仅放行必要端口:启用 firewalld,开放 22/80/443,按需仅暴露应用端口;示例:
sudo systemctl start firewalld && sudo systemctl enable firewalld
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
- SSH 安全:更改默认端口、禁用 root 登录、使用 SSH 密钥 认证,必要时限制可登录用户或来源网段。
- 账户与口令:设置强口令策略(长度≥10位,包含大小写字母、数字与特殊字符),锁定或删除不必要的系统账户。
- 关键文件保护:对 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 设置不可更改属性(如 chattr +i),降低被篡改风险。
- 登录安全:设置 root 自动注销(如 TMOUT=300),限制 su 使用范围,减少提权路径。
二 Node.js 运行时与进程隔离
- 最小权限运行:创建专用系统用户(如 nodeapp),禁止以 root 启动进程;文件与目录权限最小化(如日志与上传目录仅属主可写)。
- 进程管理:使用 systemd 托管应用,设置 User=nodeapp、WorkingDirectory、ExecStart,并开启 Restart=on-failure;通过反向代理(如 Nginx)对外暴露 443,应用监听 127.0.0.1:3000。
- 传输加密:全站启用 HTTPS/TLS;可使用 Certbot 获取免费证书并自动配置 Nginx,或在 Node.js 中直接加载证书。
- 安全响应头:使用 Helmet 设置 X-Frame-Options、X-XSS-Protection、X-Content-Type-Options、Strict-Transport-Security 等头部,降低常见 Web 攻击面。
- 请求限制与输入校验:对登录/注册/支付等接口实施 速率限制(如 express-rate-limit),对所有用户输入进行严格校验与清理,防范 SQL 注入、XSS、DoS。
- 依赖与漏洞治理:定期执行 npm audit fix,结合 Snyk 等工具持续监测依赖链风险;避免安装非必要或维护不良的包。
三 配置与密钥管理
- 分级配置与 NODE_ENV:区分 development/test/production,生产环境设置 NODE_ENV=production 以启用性能与安全优化。
- 环境变量与密钥:禁止硬编码,使用 process.env 注入 DB_PASSWORD、API_KEY 等敏感信息;开发环境可用 dotenv,生产环境通过系统服务或 Secrets 管理。
- 配置映射与模板:采用分层配置(如 config/ 目录 + custom-environment-variables.json 映射),便于在不同环境注入不同密钥。
- 文件与权限:将 .env 加入 .gitignore,避免误提交;服务器上配置文件权限设为 600/640,仅属主与必要组可读写。
- 密钥轮换与审计:定期轮换 API Key/DB 口令,记录变更与访问审计,减少泄露影响范围。
四 监控日志与备份恢复
- 日志采集与轮转:使用 rsyslog/systemd-journald 集中收集日志,配置 logrotate 控制单文件大小与保留周期,避免磁盘被占满。
- 应用日志:记录关键业务与错误日志(如 morgan 输出 combined 格式),确保可追溯性但不泄露敏感堆栈到客户端。
- 入侵检测:部署 Snort/Suricata 等 IDS/IPS,对异常流量与可疑行为进行告警与阻断。
- 备份与恢复:建立自动化备份(全量+增量),采用 异地/加密 存储,定期演练恢复流程,确保 RPO/RTO 达标。
五 快速检查清单
| 检查项 |
期望状态/做法 |
| Node.js 与依赖 |
运行最新稳定版;定期 npm audit fix 与 Snyk 监测 |
| 运行用户 |
非 root 专用用户;最小权限与目录权限 |
| 端口与暴露面 |
仅 22/80/443 对外开放;应用仅 127.0.0.1 监听 |
| 传输加密 |
全站 HTTPS/TLS;HSTS 启用 |
| 请求限制 |
登录/注册等关键接口启用 速率限制 |
| 安全响应头 |
Helmet 启用并合理配置 |
| 输入校验 |
全量校验与清理,防 SQLi/XSS/DoS |
| 配置与密钥 |
环境变量管理;.env 不入库;密钥轮换 |
| 日志与监控 |
集中日志、轮转;IDS/IPS 与告警 |
| 备份恢复 |
自动化、加密、异地;定期演练 |
以上清单可作为上线前与日常巡检的基线,建议纳入变更管理与合规审计流程,持续迭代优化。