系统级安全加固
apt/yum)更新系统软件包,使用nvm(Node Version Manager)管理Node.js版本,确保运行最新稳定版以修复已知漏洞。root用户运行Node.js应用,创建专用用户(如nodeapp)和组,通过chown设置应用目录及日志文件的所有权(如sudo chown nodeapp:nodeapp /var/log/my-node-app),限制进程权限。ufw(Ubuntu)或firewalld(CentOS)限制访问,仅开放应用必要端口(如HTTP 80、HTTPS 443或自定义端口),例如sudo ufw allow 443/tcp,并禁用不必要的服务端口。setenforce 1)或AppArmor,通过策略文件限制Node.js进程对系统资源的访问(如禁止写入敏感目录/etc),例如为应用创建AppArmor配置文件/etc/apparmor.d/usr.bin.node。应用级安全加固
Helmet中间件设置安全HTTP头(如X-Frame-Options: DENY、X-XSS-Protection: 1; mode=block),防止点击劫持和XSS攻击;严格验证用户输入(如使用Joi或express-validator),避免SQL注入、XSS等攻击;避免使用eval()、new Function()等高危函数。npm audit定期扫描依赖项漏洞,npm outdated检查过时依赖,优先更新有安全修复的包;将依赖版本固定到package-lock.json或yarn.lock,避免意外引入有漏洞的版本。certbot自动配置HTTPS(sudo certbot --nginx -d yourdomain.com),强制应用仅通过HTTPS通信,避免中间人攻击。dotenv库管理环境变量,将API密钥、数据库密码等敏感信息存储在.env文件中(添加至.gitignore),而非代码库;避免在代码中硬编码敏感信息。监控与日志管理
/var/log/my-node-app),设置目录权限为750(drwxr-x---),日志文件权限为640(-rw-r-----);使用logrotate工具定期轮转日志(如每天轮转、保留14天、压缩旧日志),避免日志文件过大。Prometheus+Grafana监控应用性能(如CPU、内存占用)和安全事件(如请求频率异常);通过auditd记录系统调用(如ausearch -m SYSCALL -p $(pgrep node)),监控可疑活动(如未授权文件访问)。容器化与编排(可选增强)
Dockerfile定义环境(如基础镜像node:20-alpine),确保环境一致性;使用Docker Compose管理多容器应用(如应用+数据库)。Trivy或Snyk扫描Docker镜像,检测并修复镜像中的漏洞(如过时的系统库);使用最小化镜像(如alpine版Node.js),减少攻击面。