Ubuntu上Node.js安全防护的关键措施
sudo apt update && sudo apt upgrade修补系统和软件包漏洞;安装unattended-upgrades配置自动更新,确保及时获取安全补丁。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash安装nvm,避免系统包管理器版本滞后,支持灵活切换版本(如nvm install 20 && nvm use 20)。nodeuser)并加入www-data组,通过sudo chown -R nodeuser:www-data /path/to/app设置应用目录权限,避免root权限滥用。sudo aa-status检查AppArmor状态,为Node.js进程定制策略(如限制访问/etc、/root等敏感目录),限制进程权限范围。sudo ufw allow 22 && sudo ufw allow 443 && sudo ufw enable仅开放SSH(22端口)和HTTPS(443端口),阻断非法IP访问。sudo certbot --nginx),配置Node.js服务器使用SSL/TLS(示例代码):const https = require('https');
const fs = require('fs');
const options = { key: fs.readFileSync('/etc/letsencrypt/live/example.com/privkey.pem'), cert: fs.readFileSync('/etc/letsencrypt/live/example.com/fullchain.pem') };
https.createServer(options, (req, res) => res.end('Secure connection')).listen(443);
或使用Nginx反向隧道转发HTTPS请求。express-validator过滤用户输入(如req.checkBody('username', 'Invalid username').isLength({ min: 3 })),防止SQL注入、XSS攻击;避免使用eval()、setTimeout(string)等危险函数。helmet中间件(const helmet = require('helmet'); app.use(helmet())),自动配置X-Frame-Options(防点击劫持)、X-XSS-Protection(启用浏览器XSS过滤器)、Content-Security-Policy(限制资源加载)等安全头。express-rate-limit中间件(const rateLimit = require('express-rate-limit'); app.use(rateLimit({ windowMs: 15*60*1000, max: 100 }))),限制单个IP每15分钟最多100次请求,防范DDoS攻击。npm audit检查项目依赖中的已知漏洞,使用npm outdated查看过时包,及时升级到安全版本;对于无法升级的包,通过npm audit fix --force修复或寻找替代方案。npm config set registry https://registry.npmmirror.com)。winston或bunyan记录应用日志(如请求、错误信息),配置sudo tail -f /var/log/syslog实时监控系统日志,及时发现异常行为(如大量404请求、非法IP访问)。pm2启动应用(pm2 start app.js),实现自动重启、负载均衡、日志管理(pm2 logs),提升应用稳定性与可维护性。