購買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 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
-
將
PermitRootLogin
設定為no
-
將
PubkeyAuthentication
設定為yes
-
將
PasswordAuthentication
設定為no
修改完成後重新啟用 sshd
。
systemctl restart sshd
推薦使用 termius 保存SSH設定與公鑰,並實現跨設備同步。