Ubuntu Server 安裝後的安全設定

這裡記錄了在 VPS 上安裝好 Ubuntu Server 之後,為了強化安全性需要進行的一些後續設定。方便自己和別人在下次跟著操作。

這裡記錄了在 VPS 上安裝好 Ubuntu Server 之後,為了強化安全性需要進行的一些後續設定。方便自己和別人在下次跟著操作。

使用的環境為:Ubuntu Server 20.04 (LTS)

建立一個普通帳號

在大部分的情況下,我們並不需要使用 root 帳號,只需要一個具有 sudo 權限的普通帳號。

  1. 先登入 root 帳號

macOS 用家可以用內置的 Terminal,

Windows 10 用家可以用內置的 Command Prompt, Windows PowerShell, 或 Windows Terminal

1
ssh root@<your_server_ip>

Windows 用家可能會遇上沒有 ssh 情況,可以參考 Microsoft 官網的安裝方法

1
2
3
4
5
6
7
1. Open Settings, select Apps > Apps & Features, then select Optional Features.
2. Scan the list to see if the OpenSSH is already installed. If not, at the top of the page, select Add a feature, then:
    Find OpenSSH Client, then click Install

1. 開啟 設定,選取 [應用程式] > 應用程式 & 功能,然後選取 [選用功能]。
2. 掃描清單,查看是否已安裝 OpenSSH。 如果沒有,請在頁面頂端選取 [新增功能],然後:
    尋找 OpenSSH 用戶端,然後按一下 [安裝]。

第一次連接,會出現類似以下的訊息,輸入 yes 即可。

1
2
3
4
The authenticity of host '<your_server_ip>' can't be established.
ED25519 key fingerprint is '<key fingerprint>'.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

之後再輸入 root 的密碼登入。

1
2
3
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '<your_server_ip>' (ECDSA) to the list of known hosts.
root@<your_server_ip>'s password:
  1. 建立新帳號

輸入以下命令以建立新帳號,然後為帳號設定密碼,其他資訊可選填。

1
adduser <username_of_new_acct>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 例子:我用 oldestdream 作為新帳號的用戶名

root@blog:~# adduser oldestdream
Adding user oldestdream' ... Adding new group oldestdream' (1000) ...
Adding new user oldestdream' (1000) with group oldestdream' ...
Creating home directory /home/oldestdream' ... Copying files from /etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for oldestdream
Enter the new value, or press ENTER for the default
Full Name []: Oldest Dream
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
root@blog:~#

可以輸入 tail -n 1 /etc/passwd 來確認帳號是否成功建立。如果看到你輸入的用戶名,那就表示成功了。

1
2
root@blog:~# tail -n 1 /etc/passwd
oldestdream:x:1000:1000:Oldest Dream,,,:/home/oldestdream:/bin/bash
  1. 給予新帳號 sudo 權限(即超級管理員權限)。
1
usermod -aG sudo <username_of_new_acct>

你可以用以下命令驗證,如果看到 sudo 這個字眼,那就表示成功了。

1
2
3
4
# 例子:我用 oldestdream 作為新帳號的用戶名

root@blog:~# id -nG oldestdream
oldestdream sudo

之後,你就可以用新帳號來登入系統了。

1
ssh <username_of_new_acct>@<your_server_ip>

禁用 root 帳號

在你成功用普通帳號登入後,你就可以禁用 root 帳號了。

1
sudo passwd -l root

如果出於某些特殊原因,你需要使用 root 帳號,可以使用以下命令解鎖:

1
sudo passwd -u root

更新系統

由於系統可能存在漏洞或 Bugs,及時更新系統以修補這些漏洞,可以降低系統被入侵的風險。

1
2
3
sudo apt-get update -y && sudo apt-get full-upgrade -y
sudo apt-get autoremove
sudo apt-get autoclean

如果你希望自動安裝安全更新,可以輸入:

1
2
sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

在出現下一段文字時,選擇 Yes 即可。

1
2
3
Applying updates on a frequent basis is an important part of keeping systems secure. By default, updates need to be applied manually using package management tools. Alternatively, you can choose to have this system automatically download and install important updates.  

Automatically download and install stable updates?

修改 SSHD CONFIG

  • 禁止 SSH 使用密碼登入(慎選)
  • 修改 SSH 登入 Port

由於篇幅過長,所以這部分的內容拆分成另一篇文章 《SSH 禁止密碼登入和改 Port 方法》

開啓防火場

  1. 輸入以下的命令:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 如果你改過了 Port, 請把下面的 22 改為你修訂的 Port 數字
sudo ufw allow 22/tcp

# 如果你打算用伺服器架網站,可以增加 http (80) & https (443)
sudo ufw allow http
sudo ufw allow https

sudo ufw enable
  1. 之後,你可以確認剛才所允許的 Port 是否正確:
1
sudo ufw status numbered

如果設定有誤,可以刪除後重新輸入:

1
2
3
# 把在 sudo ufw status numbered 看到有問題的序號
sudo ufw delete <the_number_you_want_to_del>
# e.g. 要刪掉第3個便輸入 sudo ufw delete 3

防止暴力破解

我們可以安裝一套名為 Fail2ban 的軟體,以防止 SSH 的暴力登入。詳細內容可參見另一篇文章 《Fail2ban 基本設定》

到此,基本的安全設定就完成了。

comments powered by Disqus