跳轉到內容

VPS 安全進階:超越 Fail2ban 的加固方案

VPS Server Security

在之前的文章中,我們介紹瞭如何使用 Fail2ban 自動封禁暴力破解 IP。然而,安全是一個多層級的防禦體系,Fail2ban 只是“事後補救”式的防禦。

如果黑客擁有極高效率的爆破手段,或者你剛好使用了一個弱密碼,Fail2ban 可能在封禁 IP 之前就讓攻擊者得逞。真正的“堡壘級”防禦,應該從減少攻擊面和增強身份驗證入手。

本文將帶你完成 VPS 的深層加固,確保即使你的 IP 暴露,攻擊者也無從下手。


一、 SSH 密鑰登錄:徹底告別“爆破”

核心思想: 用“長達數千位的複雜字符串(密鑰)”代替“人腦能記住的簡單字符串(密碼)”。

即使攻擊者有再強大的算力,也無法在有限的時間內破解 4096 位的 RSA 密鑰或 Ed25519 密鑰。

1. 在本地生成密鑰對

在你的本地電腦(Windows 使用 PowerShell/CMD,macOS/Linux 使用終端)執行:

bash
ssh-keygen -t ed25519 -C "your_email@example.com"

提示:Ed25519 是目前公認最安全且性能最好的算法。

2. 將公鑰上傳至服務器

你可以手動複製,也可以使用快捷命令:

bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的服務器IP

3. 測試密鑰登錄

確保不需要輸入密碼即可直接進入服務器:

bash
ssh root@你的服務器IP

二、 禁用密碼認證:關閉那扇“虛掩的門”

只要服務器還允許密碼登錄,爆破就不會停止。一旦密鑰登錄配置成功,你應該果斷禁用密碼認證。

修改 SSH 配置文件

bash
nano /etc/ssh/sshd_config

找到並修改以下關鍵項:

ini
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no  # 如果你打算使用 2FA,此項需保持為 yes,詳見下文

保存並重啟 SSH 服務:

bash
systemctl restart ssh

⚠️ 警告: 在重啟服務前,請務必保持當前的 SSH 連接不要斷開,並開啟另一個終端窗口測試是否仍能通過密鑰登錄。否則一旦配置錯誤且無法密碼登錄,你將被鎖在服務器之外!


三、 啟用雙因子認證 (2FA):雙重保險

如果你覺得“密鑰”還不夠保險,可以再加一把鎖:手機驗證碼。即使密鑰被盜(雖然概率極低),沒有你手機上的 Google Authenticator 動態驗證碼,攻擊者依然進不去。

1. 安裝 Google Authenticator 模塊

bash
apt install libpam-google-authenticator -y

2. 初始化配置

在終端輸入:

bash
google-authenticator

你會看到一個巨大的二維碼。用手機上的 Google Authenticator 掃描它,並務必保存好那幾個緊急恢復代碼(Emergency Scratch Codes)

3. 配置 PAM 模塊

bash
nano /etc/pam.d/sshd

在文件頂部添加:

ini
auth required pam_google_authenticator.so

4. 修改 SSH 配置以支持 2FA

bash
nano /etc/ssh/sshd_config

修改或確認以下項:

ini
KbdInteractiveAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

這表示登錄時需要“公鑰”+“鍵盤交互(驗證碼)”雙重驗證。


四、 UFW 防火牆最佳實踐:只開必要的窗

很多新手安裝完 VPS 後不開啟防火牆,或者開啟後全端口放行。這非常危險。

1. 初始化 UFW

bash
# 默認拒絕所有入站,允許所有出站
ufw default deny incoming
ufw default allow outgoing

# 允許必要的端口(以 SSH 22, HTTP 80, HTTPS 443 為例)
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp

# 開啟防火牆
ufw enable

2. 進階:限制 SSH 訪問頻率

即使沒有 Fail2ban,UFW 也能實現基礎的限流:

bash
ufw limit 22/tcp

這會在 IP 嘗試連接頻率過高時自動封鎖一段時間。


五、 定期自動更新:修補未知的洞

安全不是一次性的工作。Linux 內核和軟件漏洞隨時可能出現。

安裝無人值守更新 (Unattended-Upgrades)

bash
apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades

這會讓你的 Debian/Ubuntu 系統每天自動安裝安全補丁,確保即使你沒時間登錄服務器,它也能自我修復。


🛡️ 總結:你的安全清單

為了達到極致的 VPS 安全,請檢查你是否完成了以下動作:

安全是一個動態的過程。定期查看日誌,保持軟件更新,才是真正的長治久安。


延伸阅读

免责声明

本文仅供技术交流和学习参考。涉及第三方服务的链接可能包含 sponsored 标记,请自行核实服务条款、价格和可用性,并遵守当地法律法规。

最後更新於: