Linux 系統初始化安全加固清單 文章首圖

Linux 系統初始化安全加固清單

Linux 系統初始化安全加固清單

當我們拿到一台全新的 Linux 伺服器時,出廠預設的設定通常著重於「相容性」與「易用性」,而非「安全性」。對於中階 Linux 使用者而言,理解如何針對生產環境進行安全加固(Hardening)是日常維護的核心技能。本文將以 Ubuntu 22.04 LTS 與 Debian 12 為基準,提供一份循序漸進的安全檢查與加固清單。

1. 更新系統與封包管理

安全加固的第一步永遠是確保系統處於最新狀態。漏洞修補(Patch)是抵禦已知攻擊最有效的手段。

首先,更新套件索引並升級所有已安裝的軟體:

sudo apt update && sudo apt full-upgrade -y

升級完成後,建議清理不再需要的依賴套件:

sudo apt autoremove -y

2. 建立非 root 使用者與 SSH 金鑰認證

預設的 root 使用者是攻擊者最常嘗試暴力破解的目標。我們應建立一個具有 sudo 權限的一般使用者,並禁用 root 的 SSH 直接登入。

建立新使用者

sudo adduser myuser
sudo usermod -aG sudo myuser

設定 SSH 金鑰認證

在本地端機器生成金鑰(若已有金鑰可跳過此步):

ssh-keygen -t ed25519 -C "your_email@example.com"

將公鑰複製到伺服器:

ssh-copy-id myuser@your_server_ip

驗證金鑰登入正常後,編輯 SSH 設定檔 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

修改以下參數以強化 SSH 安全:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

重新啟動 SSH 服務使設定生效:

sudo systemctl restart sshd

注意:在關閉密碼登入前,務必確認金鑰已正確部署,否則將被鎖在系統之外。

3. 配置防火牆 (UFW)

Ubuntu 和 Debian 預設安裝了 ufw (Uncomplicated Firewall)。我們僅允許必要的通訊埠,拒絕所有其他連線。

首先,允許 SSH 連線(若未允許,設定後可能斷線):

sudo ufw allow OpenSSH

若需開放 Web 服務:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

啟用防火牆並檢查狀態:

sudo ufw enable
sudo ufw status verbose

4. 安裝與配置 Fail2Ban

Fail2Ban 可以監控日誌檔,偵測多次登入失敗的行為,並自動封鎖來源 IP。

安裝套件:

sudo apt install fail2ban -y

建立自訂設定檔以保留預設值並進行微調:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

[sshd] 區塊中,確保設定如下:

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

重新啟動服務:

sudo systemctl restart fail2ban

5. 定期自動更新 (Unattended Upgrades)

為了確保系統能即時獲得安全修補,建議啟用自動更新功能。

安裝套件:

sudo apt install unattended-upgrades -y

初始化設定:

sudo dpkg-reconfigure -plow unattended-upgrades

確認 /etc/apt/apt.conf.d/50unattended-upgrades 中包含安全更新選項。

常見問題 (FAQ)

Q1: 修改 SSH 設定後無法連線怎麼辦? 如果在修改 sshd_config 後失去連線,請不要嘗試重新 SSH 登入。請透過雲端控制台的「VNC Console」或「Serial Console」進入系統。檢查 /etc/ssh/sshd_config 是否有語法錯誤,並確認 PermitRootLogin 是否被誤設為 no 而你又沒有其他使用者。若需緊急恢復,可將 PermitRootLogin 改回 yes 並重啟 SSH 服務。

Q2: UFW 啟用後某些服務無法連線? 這通常是因为防火牆阻擋了預設埠口。請使用 sudo ufw status numbered 查看規則順序,並使用 sudo ufw allow <port>/tcp 明確開放所需埠口。若服務監聽在特定介面(如 localhost),請確認服務本身配置無誤,UFW 預設僅過濾外部網路流量。

小結

透過上述五個步驟,我們完成了基礎的系統安全加固:更新了系統、建立了最小權限使用者、配置了防火牆、防止了暴力破解,並設定了自動更新。這些措施雖然簡單,但能有效抵禦絕大多數自動化腳本攻擊。

安全加固是一個持續的過程,建議定期檢視 /var/log/auth.logfail2ban 的日誌,並根據實際業務需求調整防火牆規則。記住,安全性與便利性往往需要權衡,但在伺服器領域,穩固的基礎是穩定運行的前提。