- 首页 >
- 问答 >
-
云计算 >
- Debian服务器上JS如何进行安全加固
Debian服务器上JS如何进行安全加固
小樊
40
2025-11-30 14:39:51
Debian服务器上JS安全加固清单
一 系统与运行时基线
- 保持系统与包为最新:执行apt update && apt upgrade,并启用unattended-upgrades自动安装安全补丁,减少内核与基础库暴露窗口。
- 以非特权用户运行:创建专用用户(如nodeuser),禁止以root直接启动 Node.js;应用目录设置最小权限(如 chown -R nodeuser:nodeuser /var/www/jsapp)。
- 加固网络边界:使用ufw仅开放必要端口(如22/SSH、80/HTTP、443/HTTPS),其余默认拒绝;对外服务尽量只暴露 443。
- 强制HTTPS:使用Let’s Encrypt获取证书并配置Nginx自动跳转(return 301 https://$host$request_uri;),或在 Node 层启用 TLS。
- 安装与维护Node.js:优先通过NodeSource仓库安装稳定版本,避免使用系统旧版;定期更新 Node 与全局依赖。
二 依赖与代码安全
- 依赖漏洞治理:在 CI/CD 中集成npm audit与Snyk定期扫描并修复高危漏洞;对生产依赖使用锁定文件(package-lock.json)并谨慎升级。
- 安全编码与静态检查:启用ESLint及安全规则插件(如 eslint-plugin-security),对输入进行严格校验与输出编码,避免反射/存储型XSS与模板注入。
- 安全 HTTP 头:在 Express 等框架使用Helmet设置关键安全头(如 X-XSS-Protection、X-Content-Type-Options、X-Frame-Options、Strict-Transport-Security),降低常见 Web 攻击面。
- 内容安全策略(CSP):在 Nginx 或应用层配置 CSP(如 default-src ‘self’; script-src ‘self’),仅允许受信源执行脚本,显著缓解 XSS 风险。
- 错误处理与信息泄露:生产环境关闭堆栈与详细错误信息(如自定义错误中间件统一返回 500),敏感细节仅写入服务端日志。
三 运行时与访问控制
- 身份认证与会话:使用bcrypt等强哈希存储口令;为会话 Cookie 设置secure、httpOnly(并视场景设置 SameSite),避免被脚本窃取;设置自定义会话 Cookie 名称,减少技术栈指纹暴露。
- 速率限制与抗滥用:对登录、注册、API 关键路径实施速率限制(如 1 秒内最多 10 次请求示例),缓解暴力破解与 DDoS。
- 请求与资源控制:限制请求体大小(如将 JSON 限制为1 MB),降低资源耗尽与放大攻击风险。
- 输入校验与数据访问:对所有用户输入进行白名单校验;数据库访问使用参数化查询/ORM防止SQL 注入。
- 跨域策略:按需配置CORS,仅允许受信源、方法与头,避免宽泛开放。
四 监控 日志与响应
- 日志与审计:应用侧使用morgan/winston记录访问与错误;系统侧通过journalctl -u nodejs-service -f实时查看;配合Logwatch做日报汇总。
- 入侵防护:部署Fail2ban监控 SSH/应用失败登录并自动封禁;使用auditd记录关键系统调用,便于事后取证。
- 运行监控与告警:接入Sentry/Prometheus/New Relic等 APM,关注错误率、延迟、异常流量与可疑行为。
- 应急响应:制定事件预案(隔离受影响实例、保留现场、取证与修复、通知相关方、复盘改进),并定期演练。
五 前端 JS 与部署加固
- 构建与混淆:前端静态资源使用Terser压缩、必要时使用javascript-obfuscator增加逆向难度(注意:混淆不是安全控制,不能替代输入校验与 CSP)。
- 安全传输与头:全站HTTPS;启用HSTS;配置X-Frame-Options: DENY/SAMEORIGIN、X-Content-Type-Options: nosniff等安全头。
- 内容安全策略:为页面设置CSP,优先采用 nonce/hash 策略,仅允许受信 CDN 与内联脚本白名单,减少内联脚本风险。
- Web 应用防火墙:在Nginx侧部署ModSecurity或使用Cloudflare WAF,过滤常见SQLi/XSS/CSRF等攻击流量。
- 配置与密钥:使用环境变量与分级配置管理(如 config 模块或 dotenv),提供**.env.example**指导开发;禁止将密钥硬编码或提交到仓库;定期轮换密钥。