跳至內容

購買VPS後第一時間需要做的事

Table of Contents

購買VPS後,如何強化伺服器安全性?這篇文章將分享我的經驗。

這篇文章使用到的伺服器來自 wap.ac

# 登入伺服器

首先打開系統的終端機,使用以下指令透過 SSH 連接到伺服器。username 通常是 rootserver IP 通常會寄信到郵箱中。

ssh [username]@[server IP]

如果購買的是 IPv6 的伺服器,但本機沒有 IPv6 地址,則無法連接。購買前可以至 test IPv6 檢查IPv6的連通性。

伺服器預設的連接埠為 22,如果是其他連接埠,需要在指令中設定對應的連接埠。

ssh -p [port] [username]@[server IP]

輸入密碼時,密碼不會顯示於螢幕上。若未先設定密碼,通常可以在 VPS 供應商的郵件中找到相關資訊。

# 基本設定

以下以 Debian/Ubuntu 為例。

首先需要更新系統組件。輸入指令後,按 y 同意安裝更新。

sudo apt update
sudo apt upgrade

停用系統預設的 ufw 防火牆服務。

sudo systemctl stop ufw
sudo systemctl disable ufw
sudo ufw --force reset

安裝 firewall-cmd,開啟 firewall-cmd 服務並設定開機啟動。

sudo apt install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld

可以使用以下指令檢查 firewall-cmd 是否正常啟動。

sudo systemctl status firewalld

以下是 firewall-cmd 常用的指令。

# 重啟服務
sudo systemctl restart firewalld

# 關閉開機啟動
sudo systemctl disable firewalld

# 修改規則後需要重新載入
sudo firewall-cmd --reload

# 查看目前的規則
sudo firewall-cmd --list-all

# 查看目前的作用區域
sudo firewall-cmd --get-active-zones

# 查看目前區域中的連接埠(假設是 public)
sudo firewall-cmd --zone=public --list-ports

# 限制登入

透過這個網站來查看 IP,並在 firewall-cmd 中設定僅允許本機或是受信任的 IP 登入 VPS。

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="[your IP]" service name="ssh" accept'
sudo firewall-cmd --reload

如果 SSH 連接埠不是預設的 22,則需要在指令中修改成對應的連接埠號。

由於使用 root 登入可能增加密碼被暴力破解的風險。因此,建議新增一個新的用戶並禁止 root 用戶登入,同時禁止使用密碼登入,只能使用公鑰進入。

新增一個新的用戶。

sudo adduser [new username]

新增用戶時,會被要求設定密碼,推薦使用隨機密碼生成器生成密碼,推薦密碼設定 15 位以上且包含特殊符號,並保存在安全的位置。

若沒有必要設定新用戶的詳細資訊,可以全部按 Enter 跳過。

切換到新的用戶。

su [new username]

新建一個 .ssh 資料夾儲存公鑰,並設定權限。

mkdir -p ~/.ssh
chmod 700 ~/.ssh

將本機或受信任的公鑰存入。

如果沒有公鑰,可以參考以下內容。

Windows 為例,打開終端機並使用 ssh-keygen 生成 RSA 密鑰。

ssh-keygen -t rsa -b 2048
ssh-keygen -t rsa -b 2048

密鑰保存在默認位置即可(C:\Users\[your username]\.ssh\),私鑰默認名為 id_rsa,公鑰默認為 id_rsa.pub

echo "[your public key]" > ~/.ssh/authorized_keys

允許新用戶使用 sudo 指令

sudo usermod -aG wheel [new username]

切換至 root 用戶。

sudo su root

修改 SSH 的設定檔,以實現禁止 root 用戶登入並只能使用公鑰登入。

vim /etc/ssh/sshd_config
  1. PermitRootLogin 設定為 no

  2. PubkeyAuthentication 設定為 yes

  3. PasswordAuthentication 設定為 no

修改完成後重新啟用 sshd

systemctl restart sshd

推薦使用 termius 保存SSH設定與公鑰,並實現跨設備同步。