購買VPS後第一時間需要做的事
Table of Contents
購買 VPS 後,如何強化伺服器安全性?這篇文章將分享我的經驗。
這篇文章使用到的伺服器來自 wap.ac
#
登入伺服器
首先打開系統的終端機,使用以下指令透過 SSH 連接到伺服器。username 通常是 root,server 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 2048ssh-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 sudo [new username]切換至 root 用戶。
sudo su root修改 SSH 的設定檔,以實現禁止 root 用戶登入並只能使用公鑰登入。
vim /etc/ssh/sshd_config-
將
PermitRootLogin設定為no -
將
PubkeyAuthentication設定為yes -
將
PasswordAuthentication設定為no
修改完成後重新啟用 sshd。
systemctl restart sshd推薦使用 termius 保存SSH設定與公鑰,並實現跨設備同步。