一、系統基礎防護
/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
等敏感目錄),減少攻擊影響范圍。