VPS 只要有公開 IP,就很常看到 SSH 登入嘗試。看到大量 Failed password 不一定代表已經被入侵;重點是要判斷有沒有成功登入、是否有陌生帳號、是否有異常 sudo 紀錄,然後再補上 Fail2Ban、防火牆與 SSH 基本設定。
這篇只教你檢查與保護自己的 Linux VPS。請不要把這些觀念拿去測試第三方主機,也不要嘗試登入不屬於你的系統。
你會先搞懂這幾件事
- SSH 暴力破解很常見,重點是有沒有成功登入。
- 日誌要分開看失敗登入、成功登入、sudo 與帳號異動。
- 啟用金鑰登入與停用密碼登入前,一定要先保留備用登入路徑。
- Fail2Ban 是降低噪音與自動封鎖的工具,不是完整安全保證。
- 如果已經有成功入侵跡象,可能需要重建主機,而不是只改密碼。
SSH 暴力破解很常見,重點是有沒有成功
先不要只因為 log 很長就恐慌。公開 SSH 通常會被自動化機器人嘗試登入,你要先回答:
- 是否只有失敗登入?
- 是否有你不認識的成功登入?
- 是否有陌生使用者被建立?
- 是否有異常 sudo 指令?
- 是否有新服務、新排程或陌生程序?
如果只有大量失敗登入,通常先強化登入方式與防火牆即可。如果看到成功登入或系統被改動,處理等級要提高。
如何查看登入失敗與成功紀錄
不同 Linux 發行版日誌位置可能不同。Ubuntu / Debian 常見是 /var/log/auth.log,使用 systemd 的系統也可以用 journalctl。
# 最近 24 小時 SSH 服務日誌
sudo journalctl -u ssh --since "24 hours ago"
# Ubuntu / Debian:查看失敗登入
sudo grep "Failed password" /var/log/auth.log
# Ubuntu / Debian:查看成功登入
sudo grep "Accepted" /var/log/auth.log
# 查看最近登入紀錄
last -a | head
看 log 時要注意時間、使用者名稱、來源 IP 與登入方式。例如 Accepted publickey 和 Accepted password 代表不同登入方式。
檢查是否有陌生帳號或異常 sudo 紀錄
先檢查系統帳號:
# 查看可登入帳號概況
awk -F: '$7 !~ /(nologin|false)$/ {print $1, $6, $7}' /etc/passwd
# 查看 sudo 群組成員
getent group sudo
# Ubuntu / Debian:查看 sudo 使用紀錄
sudo grep "sudo:" /var/log/auth.log
如果看到陌生帳號、陌生 sudo、你沒建立過的 SSH key、或奇怪的 cron job,就不要只改密碼。這可能代表主機已經被動過。
啟用金鑰登入與停用密碼登入的注意事項
停用密碼登入前,請先確認:
- 你已經能用 SSH key 成功登入。
- 你有主機控制台、VNC、救援模式或其他備用登入方式。
- 你知道怎麼回復
sshd_config。 - 你沒有把所有管理者都鎖在外面。
常見設定在 /etc/ssh/sshd_config:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
修改後先測試設定語法,再重載 SSH:
sudo sshd -t
sudo systemctl reload ssh
請保留原本 SSH 視窗不要關,另外開新視窗測試能否登入。確認成功後再關閉舊連線。
Fail2Ban 基本觀念
Fail2Ban 會讀取日誌,當同一來源在短時間內登入失敗太多次,就自動用防火牆封鎖一段時間。它適合降低暴力破解噪音,也能減少服務壓力。
你可以先看完整的 Fail2Ban 防護教學。最常見的檢查方式:
sudo fail2ban-client status
sudo fail2ban-client status sshd
設定 Fail2Ban 前,請把自己的固定 IP 或管理來源加入白名單,避免輸錯密碼時把自己封掉。
防火牆與來源 IP 限制
如果只有你或公司固定 IP 需要登入 SSH,最有效的做法是限制來源:
# 範例:只允許指定來源連 SSH,請把 203.0.113.10 換成你的管理 IP
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
sudo ufw enable
sudo ufw status verbose
如果你的 IP 會變動,至少也要:
- 不直接使用 root 登入。
- 使用 SSH key。
- 啟用 Fail2Ban。
- 使用強密碼與 2FA 管理主機控制台。
- 定期檢查登入日誌。
防火牆規則改錯可能導致你無法登入。正式主機操作前,先確認你有備用登入方式。
什麼情況應該立即重建主機或尋求協助
建議提高處理等級的情況:
- 看到陌生來源成功登入。
- 系統多了陌生帳號、SSH key 或 sudo 權限。
- 發現未知程序、排程、服務或對外連線。
- 網站、API、資料庫或信箱已經異常。
- 日誌被清空或時間線不完整。
- 主機裡有客戶資料、金鑰、付款或內部系統資訊。
如果已經有明確入侵跡象,單純安裝 Fail2Ban 可能太晚。通常要先保存證據、備份必要資料、輪替密碼與金鑰,並評估重建乾淨主機。
需要協助判斷目前環境是否安全?
如果你已經有網站、VPS、cPanel、WordPress、AI 工具或掃描報告,但不確定哪些問題要先處理,可以到侃瑞科技官方網站取得初步判斷。