centos中nodejs如何安全设置
小樊
33
2026-01-04 01:25:09
CentOS 上 Node.js 安全设置清单
一 系统与账户安全
- 使用普通用户 + sudo运维,禁用root远程登录;云上同时收紧安全组,仅开放必要端口(如:22/SSH、80/HTTP、443/HTTPS、应用端口),来源 IP 尽量白名单化。
- 强化口令与登录安全:设置强密码策略(长度≥10位,包含大小写字母、数字、特殊字符中至少3种),配置TMOUT(如:300秒)自动注销,限制su切换为 root(编辑**/etc/pam.d/su**仅允许特定组)。
- 精简特权账户:排查**/etc/passwd**,锁定或删除不必要的超级账户与测试账号。
- 保护关键文件:对**/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow**设置不可修改属性(如:chattr +i),防止被篡改。
二 Node.js 运行环境与进程管理
- 用NVM安装与切换Node.js LTS,便于快速升级与安全修复:
nvm install --lts && nvm use --lts。
- 使用PM2托管进程:支持零停机重启、集群模式与开机自启,生产推荐:
pm2 start app.js -i max --max-memory-restart 512M && pm2 save && pm2 startup systemd -u your-user --hp /home/your-user。
- 以非 root用户运行应用,最小化进程权限;必要时通过sudo授权特定管理命令。
三 网络与反向代理安全
- 启用firewalld仅放行80/443(以及22),并定期持久化规则:
firewall-cmd --permanent --add-service=http && firewall-cmd --permanent --add-service=https && firewall-cmd --reload。
- 通过Nginx反向代理对外暴露服务,隐藏应用真实端口与实现TLS/HTTP/2:
- 示例:将 443 的 SSL 终止于 Nginx,反向代理到 http://127.0.0.1:3000;配置
proxy_set_header X-Real-IP $remote_addr; X-Forwarded-For $proxy_add_x_forwarded_for; X-Forwarded-Proto $scheme;,便于后端获取真实协议与客户端 IP。
- 证书建议用Let’s Encrypt/Certbot自动化签发与续期,减少过期与自签风险。
四 应用层安全加固
- 强制HTTPS,禁用明文 HTTP 访问;启用HSTS与相关安全头(由Helmet简化设置)。
- 严格CORS:仅允许受信源、必要方法与头;避免通配符在生产环境开放。
- 限制请求体大小与请求频率,缓解 DoS/放大攻击(如:限制 JSON/URL 编码大小、使用速率限制中间件)。
- 安全依赖与代码:定期执行npm audit fix,及时升级依赖;杜绝硬编码密钥,使用环境变量或安全的密钥管理服务。
- 输入校验与输出编码:防范XSS/SQL 注入;使用参数化查询/ORM;表单场景启用CSRF保护。
- 错误处理:生产环境不暴露堆栈与敏感信息,统一记录安全审计日志。
五 运维与持续安全
- 日志与审计:使用Winston等结构化日志,按级别输出到文件并定期轮转;结合PM2 logrotate或系统日志方案控制保留周期与大小。
- 监控与告警:接入PM2 Keymetrics或自建Prometheus + Grafana,对异常响应、重启、内存泄漏与高延迟及时告警。
- 备份与变更:定期备份代码、配置、证书与数据库;变更走CI/CD与灰度/蓝绿发布,回滚预案就绪。
- 安全基线与巡检:周期性核查系统与服务基线、开放端口、证书有效期、依赖漏洞与账户权限,形成闭环整改。