很多新手買了VPS之後,第一件事就是趕緊架網站、裝服務——但忘記做最基本的安全設定。結果幾天後就發現VPS被暴力破解、被植入挖礦木馬、網站被掛惡意程式、甚至數據全部被加密勒索。
根據雲端安全廠商的統計,一個公開在網路上的VPS,平均22分鐘就會收到第一次暴力破解嘗試,每天可能被掃描上萬次。好消息是:只要做幾個簡單的安全設定,就能防禦99%以上的常見攻擊。
▲ 做好安全防護,你的VPS才能像金盾牌一樣穩固
本文整理了新購VPS後必做的12項安全設定,從SSH金鑰、防火牆、防暴力破解、自動更新,到快照備份、異地備份、DDoS防護,每一項都給出完整可複製貼上的指令,即使是第一次使用VPS的新手,也能在30分鐘內完成所有設定。
一、為什麼VPS安全很重要?真實的威脅有哪些?
很多人會想:「我只是架一個小部落格,裡面沒什麼重要數據,誰會來攻擊我?」
答案是:自動化掃描機器人不在乎你是誰。它們24小時不間斷掃描整個網際網路的所有IP,只要發現你的SSH port開著、密碼強度不足,就會用字典檔暴力破解——你的VPS可能被用來:
- ⛏️ 植入挖礦程式,偷你的CPU和電力(最常見)
- 📧 發送垃圾郵件,導致IP被封鎖
- 🎯 成為DDoS攻擊的跳板(殭屍網路成員)
- 🔒 勒索軟體加密你的硬碟,要求比特幣贖金
- 🌐 掛上惡意網站、釣魚頁面
- 💀 刪除你所有數據(網站、數據庫、備份)
最可怕的是:大部分人被入侵時根本沒發覺,直到收到主機商的違規通知、IP被封、或硬碟被加密才發現——那時候數據通常已經救不回來了。
二、安全防護原則:最小權限 + 縱深防禦
在開始動手之前,先記住兩個核心原則:
- 最小權限原則(Least Privilege):只開啟你需要的服務、Port、帳號權限。不需要的東西全部關掉。
- 縱深防禦(Defense in Depth):不要只靠一層防護,要建立多層防線——防火牆、金鑰登入、Fail2ban、自動更新、備份——就算某一層被突破,還有下一層保護你。
三、新VPS到手,第一步:更新系統
SSH連上VPS之後,第一件事就是更新所有套件到最新版本,修補已知的安全漏洞:
# 更新套件清單
sudo apt update
# 升級所有已安裝套件
sudo apt upgrade -y
# 安裝常用工具(後續會用到)
sudo apt install -y ufw fail2ban unattended-upgrades curl wget git vim
整個過程大約2-5分鐘,完成後建議reboot重開機:
sudo reboot
四、修改SSH預設Port並加強安全設定
SSH預設Port是22,全世界的掃描機器人第一個掃的就是這個Port。把它改成一個不常用的Port(例如22222或其他1024-65535之間的數字),可以立刻減少90%以上的暴力破解嘗試。
步驟1:編輯SSH設定檔
sudo vim /etc/ssh/sshd_config
找到以下幾行並修改(如果沒有的話就新增):
# 將Port從22改為自訂Port(例如22222)
Port 22222
# 禁止root帳號直接用密碼登入(建議設為prohibit-password,等金鑰設定完再改no)
PermitRootLogin prohibit-password
# 最大驗證嘗試次數(防止暴力破解)
MaxAuthTries 3
# 閒置超過5分鐘自動斷線
ClientAliveInterval 300
ClientAliveCountMax 0
# 不使用DNS反查(加快連線速度)
UseDNS no
步驟2:重啟SSH服務
sudo systemctl restart sshd
⚠️ 千萬不要關掉現在這個SSH視窗! 先開一個新的終端視窗測試能不能連上:
# 新Port連線測試
ssh -p 22222 root@你的IP
如果可以成功連線,代表設定正確。如果連不上,回到原來的視窗檢查設定哪裡錯了。
五、設定UFW防火牆,關閉不必要的Port
防火牆的作用是:只開放你需要的Port,其他全部預設拒絕。這是最基礎也最重要的防線。
▲ UFW防火牆啟用後,只有SSH(22)/HTTP(80)/HTTPS(443)三個Port開放
步驟1:設定預設規則
# 預設拒絕所有入站連線
sudo ufw default deny incoming
# 預設允許所有出站連線
sudo ufw default allow outgoing
步驟2:開放必要的Port
# 開放SSH(注意要用你自訂的Port,不是22!)
sudo ufw allow 22222/tcp
# 開放HTTP和HTTPS(架網站需要)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 如果需要FTP、郵件等其他服務,再對應開放
步驟3:啟用防火牆
sudo ufw enable
輸入y確認後,防火牆就啟用了。可以用以下指令查看狀態:
sudo ufw status numbered
六、設定SSH金鑰登入,關閉密碼登入
密碼登入最大的問題是:只要密碼不夠複雜,機器人就可以用字典檔暴力破解。SSH金鑰是一對加密金鑰(公鑰+私鑰),用金鑰登入基本上不可能被暴力破解(金鑰長度256位元,暴力破解需要的時間比宇宙年齡還長)。
▲ 使用ed25519演算法產生SSH金鑰對
步驟1:在本機電腦產生金鑰對
這個指令在你自己的電腦上執行(不是在VPS上):
# Mac / Linux 直接在終端機輸入
ssh-keygen -t ed25519 -C "your-email@example.com"
按Enter使用預設路徑,建議設定一個passphrase(密碼片語)保護你的私鑰。完成後會產生兩個檔案:
~/.ssh/id_ed25519—— 私鑰,絕對不能分享給任何人~/.ssh/id_ed25519.pub—— 公鑰,要上傳到VPS
步驟2:將公鑰上傳到VPS
ssh-copy-id -p 22222 root@你的VPS_IP
輸入VPS密碼後,公鑰就會被上傳到VPS的~/.ssh/authorized_keys檔案。
步驟3:測試金鑰登入
ssh -p 22222 root@你的VPS_IP
如果不需要輸入密碼就能登入(或者只需要輸入你設定的passphrase),代表金鑰設定成功。
步驟4:關閉密碼登入(重要!)
再次編輯SSH設定檔:
sudo vim /etc/ssh/sshd_config
找到PasswordAuthentication,改為:
PasswordAuthentication no
PubkeyAuthentication yes
重啟SSH:
sudo systemctl restart sshd
做完這一步,你的SSH已經從「密碼可被暴力破解」提升到「軍規級加密防護」,暴力破解基本上不可能成功。
七、安裝Fail2ban防暴力破解
即使改了Port、用了金鑰,還是會有掃描機器人不斷嘗試連線。Fail2ban會監控系統日誌,如果某個IP連續多次登入失敗,就自動把它封鎖一段時間,是防暴力破解的第二道防線。
# 安裝Fail2ban
sudo apt install -y fail2ban
# 複製設定檔(不要直接改 jail.conf)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 編輯設定
sudo vim /etc/fail2ban/jail.local
找到[sshd]區段,修改為:
[sshd]
enabled = true
port = 22222 # 改為你自訂的SSH Port
filter = sshd
logpath = /var/log/auth.log
maxretry = 3 # 3次失敗就封鎖
bantime = 3600 # 封鎖1小時(單位:秒)
findtime = 600 # 10分鐘內3次失敗就算
啟動Fail2ban:
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
# 查看狀態
sudo fail2ban-client status sshd
八、建立非root管理帳號
root帳號擁有系統最高權限,一旦被入侵,攻擊者可以做任何事。建議建立一個日常使用的一般帳號,需要管理權限時再用sudo切換:
# 建立新帳號(使用者名稱自訂,例如admin)
sudo adduser admin
# 加入sudo群組,讓它可以用sudo執行管理指令
sudo usermod -aG sudo admin
# 把SSH金鑰複製到新帳號
sudo mkdir -p /home/admin/.ssh
sudo cp ~/.ssh/authorized_keys /home/admin/.ssh/
sudo chown -R admin:admin /home/admin/.ssh
sudo chmod 700 /home/admin/.ssh
sudo chmod 600 /home/admin/.ssh/authorized_keys
測試新帳號能不能登入:
ssh -p 22222 admin@你的IP
測試sudo權限:
sudo whoami
# 應該輸出 root
一切正常後,可以考慮進一步禁止root帳號登入(等你確定新帳號運作正常再做):
sudo vim /etc/ssh/sshd_config
# 將 PermitRootLogin 改為 no
PermitRootLogin no
sudo systemctl restart sshd
九、啟用自動安全更新
很多入侵不是因為你密碼太弱,而是因為系統套件有已知漏洞但沒更新。啟用自動安全更新,系統會自動安裝重要的安全補丁:
sudo dpkg-reconfigure -plow unattended-upgrades
選擇「是」,然後編輯設定檔調整更新頻率:
sudo vim /etc/apt/apt.conf.d/50unattended-upgrades
確保以下設定是對的:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security"; # 只自動安裝安全更新
};
Unattended-Upgrade::Automatic-Reboot "false"; # 不自動重開機(建議)
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
十、安裝SSL憑證,強制HTTPS
如果你的VPS用來架網站,一定要啟用HTTPS加密傳輸,否則使用者連線時的密碼、資料都會以明文傳輸,容易被中間人竊聽。
Let's Encrypt提供免費的SSL憑證,用Certbot可以一鍵申請:
# 安裝Certbot(以Nginx為例)
sudo apt install -y certbot python3-certbot-nginx
# 自動申請並設定憑證
sudo certbot --nginx -d 你的網域名稱
# 自動續約(Let's Encrypt憑證90天到期,會自動續約)
sudo certbot renew --dry-run
申請成功後,網站會自動強制跳轉到HTTPS,瀏覽器地址欄會顯示綠色鎖頭🔒。
十一、設定快照備份:對付失誤與勒索軟體的最後防線
無論你做了多少安全設定,都無法保證100%不會出事:可能是你自己打錯指令刪錯檔案、可能是網站程式有零日漏洞、可能是勒索軟體剛好針對你。唯一能讓你在出事後快速復原的,就是備份。
▲ 數據備份是最後一道防線,出事時唯一能救你的東西
• 至少保留 3 份備份
• 用 2 種不同媒體儲存
• 至少 1 份存在異地(不在同一台VPS/機房)
方法1:LuckVM控制台一鍵快照(最簡單)
LuckVM客戶中心內建快照功能,可以一鍵建立整台VPS的完整快照,出問題時一鍵還原:
▲ LuckVM客戶中心快照管理介面,每日自動備份,一鍵還原
建議設定:
- ✅ 啟用每日自動快照(預設保留7-30天)
- ✅ 每次執行重大操作(升級系統、安裝新軟體、改設定)前,先手動建立快照
- ✅ 重要數據額外做異地備份(見下方方法2、3)
方法2:WordPress網站外掛備份(適合架站用戶)
如果你用WordPress架站,可以安裝備份外掛:
| 外掛名稱 | 免費版 | 特點 |
|---|---|---|
| UpdraftPlus | ✅ | 最受歡迎,可備份到Google Drive/OneDrive/S3 |
| All-in-One WP Migration | ✅ | 一鍵匯出匯入,搬家超簡單 |
| WPvivid | ✅ | 支援定時自動備份+異地儲存 |
| BlogVault | 付費 | 即時備份+增量備份+惡意軟體掃描 |
方法3:rsync異地備份腳本(進階)
如果你有第二台VPS或雲端儲存,可以用rsync寫一個簡單的定時備份腳本,每天自動把重要檔案同步到異地:
# 安裝rsync
sudo apt install -y rsync
# 建立備份腳本
vim ~/backup.sh
腳本範例:
#!/bin/bash
# 備份網站數據、數據庫、設定檔到異地伺服器
BACKUP_DIR="/tmp/backup_$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 備份Nginx設定
tar czf $BACKUP_DIR/nginx.tar.gz /etc/nginx/
# 備份WordPress(假設在/var/www/)
tar czf $BACKUP_DIR/www.tar.gz /var/www/
# 備份MySQL數據庫
mysqldump -u root -p'你的密碼' --all-databases | gzip > $BACKUP_DIR/db.sql.gz
# 用rsync同步到備份伺服器(替換成你的備份VPS資訊)
rsync -avz $BACKUP_DIR/ backup-user@備份IP:/backups/luckvm/
# 清理本地臨時檔案
rm -rf $BACKUP_DIR
echo "備份完成:$(date)" >> /var/log/backup.log
加入crontab每天凌晨3點自動執行:
chmod +x ~/backup.sh
crontab -e
# 加入這一行:
0 3 * * * /root/backup.sh
十二、其他進階安全建議
1. 安裝DDoS防護(Cloudflare)
如果你的網站公開對外營運,DDoS攻擊是常見威脅(競爭對手、敲詐勒索都可能發動)。建議把網站域名接入Cloudflare免費CDN,可以隱藏真實IP、免費防禦中小規模DDoS攻擊、還能加速網站全球存取速度。
2. 關閉不需要的服務
用指令查看目前正在監聽的Port,把不需要的服務關掉:
sudo ss -tulpn
只保留你真正需要的服務(SSH、Nginx/Apache、數據庫),其他全部關閉或解除安裝。
3. 啟用兩步驟驗證(2FA)
可以為SSH登入加上Google Authenticator兩步驟驗證,就算私鑰被偷,攻擊者還是需要手機上的動態驗證碼才能登入:
sudo apt install -y libpam-google-authenticator
google-authenticator
# 按照提示掃描QR Code加入Google Authenticator App
4. 定期查看系統日誌
偶爾看一下登入記錄,看看有沒有可疑活動:
# 查看最近的登入記錄
sudo last
# 查看失敗的登入嘗試
sudo lastb
# 查看Fail2ban封鎖了哪些IP
sudo fail2ban-client status sshd
十三、完整安全設定檢查清單
▲ 建議按照清單逐項完成,全部做完VPS安全等級達到A+級別
| 編號 | 安全措施 | 重要程度 | 防禦對象 |
|---|---|---|---|
| 1 | 更新系統到最新版本 | ⭐⭐⭐⭐⭐ | 已知漏洞攻擊 |
| 2 | 修改SSH預設Port | ⭐⭐⭐⭐ | 90%的自動化掃描 |
| 3 | 設定SSH金鑰登入 | ⭐⭐⭐⭐⭐ | 密碼暴力破解 |
| 4 | 關閉密碼登入 | ⭐⭐⭐⭐⭐ | 所有密碼型攻擊 |
| 5 | 啟用UFW防火牆 | ⭐⭐⭐⭐⭐ | 未授權Port存取 |
| 6 | 安裝Fail2ban | ⭐⭐⭐⭐ | 重複暴力破解 |
| 7 | 建立非root帳號 | ⭐⭐⭐⭐ | 權限過大風險 |
| 8 | 啟用自動安全更新 | ⭐⭐⭐⭐⭐ | 未修補的漏洞 |
| 9 | 安裝SSL憑證 | ⭐⭐⭐⭐ | 中間人竊聽 |
| 10 | 啟用每日快照備份 | ⭐⭐⭐⭐⭐ | 數據丟失/勒索 |
| 11 | 異地備份 | ⭐⭐⭐⭐⭐ | 單點故障/機房事故 |
| 12 | Cloudflare DDoS防護 | ⭐⭐⭐ | DDoS攻擊 |
十四、常見問題 FAQ
cat /etc/ssh/sshd_config | grep Port查看目前Port。建議把自訂Port記在密碼管理器裡。十五、總結
VPS安全聽起來很複雜,但實際上只要跟著本文做一次,30分鐘就能完成全部基本設定,防禦99%以上的常見攻擊。記住幾個重點:
- 更新系統永遠是第一步——過期的套件是最大漏洞來源。
- 改SSH Port + 金鑰登入 + 關密碼——三個動作解決絕大部分暴力破解。
- UFW防火牆 + Fail2ban——多兩層防線,代價極小、效果極大。
- 備份!備份!備份!——不論做了多少安全設定,備份是最後的救命仙丹。快照+異地備份都要做。
- 最小權限原則——不需要的Port不要開,不需要的服務不要裝,不要隨便用root操作。
還沒有VPS?開始你的安全架站之旅
LuckVM提供香港/日本/台灣/新加坡/美國/韓國全球節點,內建快照備份、免費DDoS防護
入門方案月費$1起,支援PayPal/信用卡/支付寶/USDT付款
安全不是一次做完就結束的事情,而是持續的習慣。建議每隔幾個月回來看一次,檢查系統是否有更新、備份是否正常運作、有沒有可疑的登入記錄。只要保持良好習慣,你的VPS就能安全穩定地運行很多年。
如果這篇教學對你有幫助,歡迎分享給需要的朋友。有任何安全相關問題,可以在下方留言或到LuckVM官方社群提問,我們有24/7技術客服可以協助你。





