SSD Nodes Learn
指南 Matt Connor作者: Matt Connor · 已更新 2026-07-24

新 VPS 安全設定指南:部署後的 10 分鐘必做事項

全新的 VPS 容易遭受掃描器攻擊。本文提供 10 分鐘快速作業手冊,包含建立 sudo 使用者、設定 SSH keys、停用 root 登入以及啟用防火牆,確保您的伺服器從第一分鐘起就具備基本防禦能力。

前 10 分鐘決定伺服器的安全性

全新的 VPS 並不安全。從取得公用 IP 的那一刻起,掃描器就會嘗試登入。預設映像檔提供了巨大的攻擊目標:root 權限通常可直接存取、通常允許密碼登入、沒有防火牆,且沒有排程更新。好消息是,完成這些設定只需約 10 分鐘與少數指令。這是我在每台新伺服器部署任何內容前都會執行的作業手冊。

請依序執行,因為步驟之間具有依賴關係。每個步驟都有其對應的指南,並在過程中提供連結;本頁面是將這些指南整合在一起的快速路徑。

第 1 分鐘:更新所有內容

使用供應商提供的憑證以 root 身分登入,並在進行其他操作前將系統完全更新至最新版本:

apt update && apt upgrade -y

未修補漏洞的系統是最容易被攻擊的目標,因此這是首要步驟。完成後,請設定自動安全性更新,以便系統能持續保持修補狀態,無需手動記憶。

第 2 分鐘:建立具備 sudo 權限的普通使用者

請勿持續使用 root 身分作業。為你自己建立一個使用者並賦予 sudo 權限:

adduser matt
usermod -aG sudo matt

之後請以該使用者身分登入,並使用 sudo 執行管理任務。一直以 root 身分執行意味著任何錯誤或入侵都會擁有無限權限,而這正是 使用非特權使用者 旨在防止的情況。

第 4 分鐘:設定 SSH keys

密碼會被猜解,但金鑰不會。在你的筆電上,如果尚未擁有金鑰,請建立一個:

ssh-keygen -t ed25519

接著將公鑰部分複製到伺服器:

ssh-copy-id matt@YOUR_SERVER

ssh-copy-id 需要為新使用者開啟密碼登入;如果該功能已被關閉,請將 root 的 ~/.ssh/authorized_keys 複製到 /home/matt/.ssh/authorized_keys(由 matt 擁有),或者手動將你的公鑰貼入該檔案。

關於此步驟背後的原理,包含每個裝置使用單一金鑰、導致金鑰登入失敗的權限問題,以及撤銷遺失金鑰的方法,請參閱 SSH key management basics

登出並使用金鑰以 matt 身分重新登入,並在進行下一步前確認其運作正常。在能使用金鑰登入前就鎖定 SSH,是導致使用者被鎖在系統外的常見原因。

第 6 分鐘:關閉 root 登入與密碼登入

既然金鑰已可運作,請關閉掃描器依賴的兩道門戶。使用 drop-in 檔案,以避免套件升級時覆蓋設定。將檔案命名為 00-,使其排序在 50-cloud-init.conf 之前,因為 Ubuntu cloud images 內建了 PasswordAuthentication yes;sshd 會保留讀取到的第一個值,因此排序較後的檔案會被忽略:

sudo nano /etc/ssh/sshd_config.d/00-hardening.conf
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no

接著重新載入 SSH:

sudo systemctl restart ssh

然後檢查 sshd 實際使用的設定,以免錯誤的 drop-in 檔案誤導你:

sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'

關閉密碼登入並移除 root 登入後,針對伺服器的持續暴力破解流量將無法成功。完整的強化流程(包含選用的連接埠變更)請參閱 SSH hardening on a VPS

第 8 分鐘:啟用防火牆

預設拒絕所有入站連線,然後僅允許必要的連線。在啟用防火牆前,請先允許 SSH,否則你會中斷自己的連線:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable

針對你實際運行的服務(例如用於網站的 80/tcp443/tcp)新增 allow 規則。請確認 IPv4 與 IPv6 均已涵蓋,因為僅過濾 IPv4 的防火牆會讓 IPv6 端完全敞開。完整的教學請參閱 Firewalls 101 on a VPS

第 10 分鐘:使用 Fail2ban 減緩掃描速度

最後,新增 Fail2ban 來驅逐不斷攻擊連接埠的 IP 位址:

sudo apt install -y fail2ban

在 Ubuntu 24.04 上,預設安裝會在首次開機時保護 SSH。由於已要求使用金鑰,這將作為一個備援機制,用於減少日誌雜訊並阻擋重複違規者,而非你的主要防禦手段。

你的檢查清單

這就是作業手冊。使用下方的產生器來勾選各項控制項,並產生一份可隨身攜帶的個人化檢查清單,其中包含每個步驟的確切指令:

ToolBuild your VPS hardening checklist

每台新伺服器執行一次,這將會變成你的肌肉記憶。現在花 10 分鐘,可以避免伺服器被入侵後隨之而來的慘痛後果。

當基本設定完成後,Ubuntu 上的自動安全性更新 能讓伺服器保持最新狀態,無需你再次登入。

FAQ

在新 VPS 上我應該先做什麼?

使用 apt update && apt upgrade -y 更新系統,然後建立具備 sudo 權限的普通使用者並停止使用 root 作業。接著,設定 SSH keys、停用 root 登入與密碼驗證、啟用預設拒絕的防火牆,並安裝 Fail2ban。依此順序執行,可以確保每一步都在安全的情況下進行,而不會把自己鎖在系統外。

在強化 SSH 時,我該如何避免被鎖在系統外?

在停用密碼或 root 之前,請先設定並測試你的 SSH 金鑰登入。使用金鑰登出並重新登入以確認其運作正常,然後才關閉 PasswordAuthenticationPermitRootLogin。當你啟用防火牆時,請在執行 ufw enable 之前先允許 22 連接埠。如果你真的被鎖在外面,可以使用供應商的 Web Console 重新進入,無需透過 SSH。

在小型伺服器上我真的需要所有這些設定嗎?

是的,因為掃描器並不在乎你的伺服器規模。它們對每個公用 IP 的嘗試方式都一樣。整個作業手冊僅需約 10 分鐘,即可移除簡單的攻擊路徑:無 root 登入、無密碼猜解、無非必要的暴露,且已知漏洞會自動修補。

最重要的一個步驟是什麼?

僅限金鑰的 SSH 並停用 root 登入。大多數針對全新 VPS 的攻擊都是針對 root 的自動化密碼猜解,關閉這兩項可讓該類別的攻擊完全失效。接著,防火牆與 Fail2ban 會限制暴露範圍並減緩剩餘的攻擊。

我該如何確認伺服器確實已完成鎖定?

在信任伺服器前,請手動檢查三件事。執行 sudo ss -tlnp 並確認只有你打算開啟的連接埠在公用位址上監聽,且沒有你遺忘的 0.0.0.0[::] 服務。執行 sudo ufw status verbose 並確認預設的入站策略為 deny,且普通規則與 (v6) 規則皆已存在。此外,在關閉第一個 SSH 連線前,請務必開啟第二個 SSH 連線,以免 SSH 設定錯誤導致無法進入伺服器。如果這三點都正確,則基本防禦已就緒。