自建網站伺服器的簡易心得系列文(三) - 三個提升Server安全性的設定之禁止Root管理者以SSH登入篇
2024-03-28 15:08:49
**前言**
===
這次要介紹的是我的主管分享給我的一個系統安全性的概念。就是標題說的,禁止在登入 SSH 時使用 root 使用者。通常我們會使用一個普通權限的使用者登入,如果有需要再切換成 root 使用者來操作需要權限的指令。這篇會介紹這樣做的原因,以及如何去設定,最後再提到一些要注意的地方。
Server Linux 版本: Ubuntu 22.04.3 LTS
**禁止 root 使用者原因**
===
在一般情況下,透過 SSH 登入 Linux 伺服器時,預設使用 root 使用者登入。然而,這種設定存在安全風險。駭客常常針對 root 使用者進行入侵嘗試,因為 root 使用者擁有系統的最高權限。因此,禁止 root 使用者登入可以增加伺服器的安全性。這樣做會為駭客設置更多的障礙,因為他們需要額外的步驟來嘗試猜測其他使用者的名稱。
總結來說,透過禁止 root 使用者透過 SSH 登錄的好處有以下幾點:
1. 降低攻擊面:禁止 root 使用者登入會減少伺服器的攻擊面。駭客必須猜測其他使用者的名稱來嘗試登錄,從而增加了入侵的難度。
2. 減少潛在風險:root 使用者擁有對系統的完全存取權限,如果駭客成功登入為 root 使用者,可能會對伺服器造成嚴重的損害。禁止 root 使用者登入可以降低此類潛在風險。
3. 提高安全性意識:禁止 root 使用者登入可以提高管理員和使用者的安全意識。管理員將被迫使用普通使用者帳戶登錄,並透過提升權限來執行需要 root 權限的操作,這種做法促進了安全最佳實踐的實施。
**設定步驟**
===
#### **建立普通使用者**
在禁止 root 使用者 SSH 登入之前,請確保在伺服器上建立了一個普通用戶,用於登入和管理伺服器。這個使用者應該擁有適當的權限來執行系統管理任務。
建立使用者:
``` bash
adduser <USER_NAME>
```
![Add User](https://i.imgur.com/A5yN75z.png)
建立時記得請使用足夠複雜的密碼,避免常見且太簡單的密碼。
刪除使用者:
``` bash
userdel <USER_NAME>
```
切換使用者:
``` bash
su - <USER_NAME>
```
#### **禁止 root SSH 登入**
1. **修改設定檔**
用 root 或是有 sudo 權限的帳號修改 SSH 的設定檔 `/etc/ssh/sshd_config`。
``` bash
vim /etc/ssh/sshd_config
```
找到 `PermitRootLogin` 選項,並設定成 `no`:
``` bash
# 禁止 root 管理者登入
PermitRootLogin no
```
2. **重新載入設定檔**
``` bash
# 重新啟動 SSH 服務
systemctl restart sshd
```
這樣就設定成功囉,未來就請以之前建立的使用者登入。若要操作需要權限,可以切換成 root 使用者,或是讓普通使用者有 `sudo` 權限。
**額外討論**
===
在與同事討論後,我們決定在執行需要權限的任務時仍然選擇切換到 root 使用者,而不是提升普通使用者的權限。這項決定的主要原因是,目前我們的伺服器環境中只有兩位成員,使用者情境相對簡單。然而,如果未來需要為其他人員建立額外的使用者帳戶,我們將考慮提升一般使用者的權限。這樣做的目的是為了確保不會將 root 使用者的資訊暴露給其他人員。
#### **提升權限做法**
這邊提供兩種最簡單粗暴的做法:
1. **指令修改**
``` bash
sudo adduser <USER_NAME> sudo
```
2. **設定檔修改**
``` bash
sudo vim /etc/sudoers
```
找到以下的選項,把自己的 `USER_NAME` 加上去。
``` bash
# User privilege specification
root ALL=(ALL:ALL) ALL
<USER_NAME> ALL=(ALL:ALL) ALL
```
### **資料來源**
[如何禁止 root SSH 用密碼登入 ? 1個關鍵步驟強化 Linux 系統安全性 – Li-Edward](https://liedward.com/linux/root-permitrootlogin/)
[鳥哥私房菜 - 第十三章、Linux 帳號管理與 ACL 權限設定](https://linux.vbird.org/linux_basic/centos7/0410accountmanager.php#userswitch)
[[Ubuntu] 解決 xxx is not in the sudoers file - 傑瑞窩在這](https://jerrynest.io/xxx-is-not-in-the-sudoers-file/)
###### tags: `server` `root` `ssh`
點擊複製文章連結
X