Linux 帳號安全加固的 10 個步驟 文章首圖

Linux 帳號安全加固的 10 個步驟

Linux 帳號安全加固的 10 個步驟

在 Linux 系統管理中,帳號安全是防禦外來攻擊的第一道防線。許多初學者往往只關注服務配置,卻忽略了底層帳號權限的設定。一旦 root 帳號失守或弱口令被破解,整個系統將面臨無底洞般的風險。本文將針對 Ubuntu 22.04 與 Debian 12 環境,提供一套循序漸進的帳號安全加固指南,幫助中階使用者建立更堅固的防禦體系。

1. 建立具備 sudo 權限的新使用者

永遠不要直接使用 root 帳號進行日常操作。首先,建立一個新的管理員帳號,並賦予 sudo 權限。

# 建立新使用者並指定家目錄
sudo adduser newadmin

# 將使用者加入 sudo 群組
sudo usermod -aG sudo newadmin

2. 設定強健的密碼策略

弱口令是暴力破解的主要目標。請確保密碼長度至少 12 碼,並包含大小寫字母、數字與特殊符號。您可以使用 passwd 指令強制使用者在下次登入時變更密碼,以確保初始密碼的安全。

sudo passwd -e newadmin

3. 禁用 SSH 的 root 直接登入

SSH 是常見的攻擊入口。透過修改 SSH 設定檔,禁止 root 帳號直接遠端登入,迫使攻擊者必須先破解普通帳號,再嘗試提權,大幅增加攻擊難度。

sudo nano /etc/ssh/sshd_config

找到 PermitRootLogin 並修改為:

PermitRootLogin no

修改後重新啟動 SSH 服務:

sudo systemctl restart sshd

4. 啟用 SSH 金鑰認證並停用密碼登入

金鑰認證比密碼認證更安全,因為私鑰極難被暴力破解。請在客戶端生成金鑰並複製到伺服器,隨後停用密碼登入。

# 在客戶端執行
ssh-copy-id newadmin@your_server_ip

# 在伺服器端修改 sshd_config
PasswordAuthentication no

5. 限制 SSH 登入端口與來源 IP

預設的 SSH 端口(22)是掃描器最常攻擊的目標。變更端口並配合防火牆規則,可有效阻擋大部分自動化掃描。

# 修改 sshd_config
Port 2222

# 使用 ufw 允許新端口
sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
sudo ufw reload

6. 啟用 Fail2ban 防護暴力破解

Fail2ban 能監控日誌檔案,當偵測到多次登入失敗時,自動封鎖來源 IP。

sudo apt install fail2ban
sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

# 設定封鎖時間與嘗試次數
sudo nano /etc/fail2ban/jail.local

加入以下設定:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

7. 設定密碼過期與歷史記錄

防止使用者長期使用相同密碼。透過 pam_pwquality 模組強制密碼複雜度,並設定過期時間。

sudo nano /etc/login.defs

修改或確認以下參數:

PASS_MAX_DAYS   90
PASS_MIN_DAYS   7
PASS_WARN_AGE   14

8. 鎖定系統預設帳號

許多 Linux 發行版會建立如 gamesnobody 等預設帳號,這些帳號通常無合法用途,卻可能成為攻擊跳板。將其鎖定以防止登入。

sudo usermod -L games
sudo usermod -L nobody

9. 設定 Sudo 權限最小化原則

並非所有 sudo 使用者都需要全系統控制權。對於僅需特定管理權限的使用者,應編輯 /etc/sudoers 檔,限制其可執行的指令。

sudo visudo

加入特定限制,例如僅允許重新啟動網路服務:

newadmin ALL=(ALL) NOPASSWD: /usr/sbin/service networking restart

10. 定期審計帳號與登入記錄

安全不是一次性的設定,而是持續的過程。定期檢查異常登入與帳號變更。

# 查看最近登入記錄
last

# 檢查是否有未授權的 sudo 操作
sudo grep sudo /var/log/auth.log

常見問題

Q1:修改 SSH 端口後無法連線怎麼辦? 若因設定錯誤導致無法連線,請透過主機提供商提供的控制台(Console)或 VNC 登入伺服器,檢查 /etc/ssh/sshd_config 中的端口設定是否正確,並確認防火牆規則是否已更新。

Q2:Fail2ban 封鎖了自己怎麼辦? 若 IP 被誤封,可執行 sudo fail2ban-client set sshd unbanip <your_ip> 解除封鎖。建議在測試階段先設定較短的 bantime,以免影響正常操作。

小結

帳號安全加固並非一蹴可幾,而是透過層層防護機制來降低風險。從禁用 root 登入、啟用金鑰認證,到部署 Fail2ban 與定期審計,每個步驟都構成了防禦體系的重要一環。建議您在正式環境前,先在測試機上完整執行這些步驟,確認無誤後再應用至生產環境。記住,安全是一個持續的過程,保持警惕與定期更新才是長治久安之道。