1. 系統基礎防護
/etc/sysctl.conf
文件強化內核防護,例如啟用地址空間布局隨機化(kernel.randomize_va_space=2
,防止內存攻擊)、防御SYN Flood攻擊(net.ipv4.tcp_syncookies=1
,避免大量無效連接耗盡資源);定期執行sudo sysctl -p
使配置生效。netstat -tulnp
或ss -tulnp
掃描開放端口,僅保留必要服務(如SSH 22、HTTP 80、HTTPS 443);關閉不必要的服務(如FTP、Telnet),減少攻擊面。2. Node.js安裝與版本管理
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
),避免默認倉庫的版本滯后問題;安裝后用node -v
、npm -v
確認版本。nvm
(Node Version Manager)管理多版本Node.js(如curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
),便于切換版本和回滾;定期用nvm install --lts
升級到最新的長期支持(LTS)版本,修復已知漏洞。3. 依賴安全管理
npm audit
(內置工具,檢查package.json
依賴項的已知漏洞)或Snyk
(第三方工具,提供更詳細的修復建議)掃描項目;執行npm outdated
查看過時依賴,及時更新到安全版本。package.json
中使用固定版本(如"express": "4.18.2"
)而非范圍版本(如"^4.18.2"
),并通過npm install
生成package-lock.json
文件,避免依賴自動升級引入新漏洞。4. 進程與權限控制
nodeuser
)運行Node.js應用,避免以root身份啟動(sudo useradd -m nodeuser
);使用chown -R nodeuser:nodeuser /path/to/app
修改應用目錄所有權,降低權限濫用風險。chmod 750 /path/to/app
,僅所有者可讀寫執行;chmod 600 /path/to/config.json
,防止敏感文件被讀?。?;避免將敏感文件(如.env
)上傳至版本控制系統(如Git)。5. 網絡安全配置
ufw
(Uncomplicated Firewall)限制訪問(如sudo ufw allow 22/tcp
允許SSH、sudo ufw allow 443/tcp
允許HTTPS、sudo ufw enable
啟用防火墻);或用iptables
設置更細粒度的規則(如限制單個IP的連接數)。sudo certbot --nginx -d yourdomain.com
),配置Node.js應用監聽443端口(通過https
模塊或反向代理如Nginx);強制跳轉HTTP至HTTPS(如Nginx中return 301 https://$host$request_uri;
),加密數據傳輸。6. 應用層安全防護
Helmet
中間件設置HTTP安全頭(如X-Frame-Options: DENY
防止點擊劫持、X-XSS-Protection: 1; mode=block
啟用XSS過濾器、Content-Security-Policy: default-src 'self'
限制資源加載),減少瀏覽器端攻擊。express-validator
(如check('email').isEmail()
)檢查格式合法性;過濾特殊字符(如XSS-filters
庫的xss()
函數),防止SQL注入、XSS攻擊。process.env.DB_PASSWORD
),而非硬編碼在代碼中;通過dotenv
庫加載.env
文件(需將.env
添加至.gitignore
),避免敏感信息泄露。7. 監控與應急響應
winston
或morgan
記錄應用日志(如請求路徑、狀態碼、錯誤信息),并通過logrotate
工具輪轉日志(如/etc/logrotate.d/nodeapp
配置每日輪轉、保留7天),避免日志文件過大;將日志發送至集中化管理平臺(如ELK Stack),便于分析。fail2ban
監控日志(如/var/log/auth.log
),自動封禁多次登錄失敗的IP;制定應急響應計劃(如立即隔離受攻擊服務器、備份數據、分析攻擊路徑、修復漏洞),定期進行安全演練。