一、系统基础防护
/etc/sysctl.conf文件强化内核防护,启用地址空间布局随机化(kernel.randomize_va_space=2,防止内存攻击)、防御SYN Flood攻击(net.ipv4.tcp_syncookies=1,应对大量无效连接请求);定期扫描开放端口,仅保留必要服务(如SSH 22、HTTP 80、HTTPS 443),降低攻击面。passwd -l命令锁定非必要账户;修改/etc/login.defs设置密码有效期(如PASS_MAX_DAYS 90、PASS_MIN_DAYS 1),在/etc/pam.d/system-auth中添加password required pam_cracklib.so要求密码包含数字、大小写字母、特殊字符且长度≥10,提升密码复杂度。二、依赖与版本管理
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -)或nvm(Node Version Manager)安装Node.js,避免系统自带版本过旧;定期通过nvm install --lts或包管理器更新至最新稳定版,修复已知漏洞。npm audit(内置工具,检查package.json依赖项漏洞)、Snyk(第三方工具,提供更详细的漏洞报告)定期扫描项目依赖;通过npm outdated查看过时依赖,及时更新到安全版本,避免使用root权限运行Node.js进程(如用npm start而非sudo npm start),减少权限滥用风险。三、网络安全配置
ufw(Uncomplicated Firewall,Ubuntu推荐)或iptables限制对Node.js应用的访问,仅开放必要端口(如sudo ufw allow 22/tcp、sudo ufw allow 443/tcp),默认拒绝其他流量;通过Certbot(Let’s Encrypt官方工具)自动申请和更新SSL/TLS证书,配置HTTPS(如Express中使用https.createServer),加密客户端与服务器间通信,防止中间人攻击。express-validator等库防止SQL注入(如参数化查询)、XSS(跨站脚本)攻击;使用Helmet中间件设置安全HTTP头,如X-Frame-Options: DENY(防止点击劫持)、X-XSS-Protection: 1; mode=block(启用浏览器XSS过滤器)、Content-Security-Policy: default-src 'self'(限制资源加载来源),增强应用安全性。四、代码与应用安全
dotenv库加载.env文件(将敏感信息存入该文件并添加到.gitignore),在代码中通过process.env.MY_SECRET_KEY读取;禁用eval()、new Function()等高危函数(可通过ESLint规则no-eval强制检查),防止代码注入攻击。express-rate-limit中间件限制请求频率(如每分钟最多60次),防止DoS(拒绝服务)攻击。五、监控与应急响应
logrotate工具定期轮转日志(如每天生成新日志文件,保留7天),避免日志文件过大占用磁盘空间;监控关键指标(如CPU使用率、内存占用、请求延迟),设置告警(如通过Prometheus+Alertmanager),及时发现异常行为。NodeJsScan)识别代码中的潜在漏洞(如SQL注入、XSS);配置AppArmor(Linux强制访问控制模块),限制Node.js进程的权限(如禁止访问/etc/shadow等敏感目录),减少攻击影响范围。