📖 Linux SSH 安全加固

分類:資安與維運 | 作者:pake | 發布時間:2024-09-24 20:53

Linux SSH 安全加固

SSH(Secure Shell)是 Linux 伺服器遠端管理的主要方式,因此確保 SSH 的安全性至關重要。若未妥善設定,攻擊者可能透過暴力破解、MITM(中間人攻擊)或零日漏洞來入侵伺服器。本篇將提供 SSH 的安全加固技巧,並涵蓋日誌分析與防禦措施。


目錄


變更 SSH 預設連接埠

攻擊者通常會掃描預設的 22 連接埠,因此更改 SSH 連接埠可以降低暴力攻擊風險。

  1. 編輯 SSH 設定檔:
sudo nano /etc/ssh/sshd_config
  1. 修改 Port 參數(假設變更為 2222):
Port 2222
  1. 重新啟動 SSH 服務:
sudo systemctl restart sshd
  1. 設定防火牆開放新連接埠:
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
  1. 測試新連接埠:
ssh -p 2222 user@server-ip

禁用 root 直接登入

允許 root 直接登入容易成為暴力破解目標,建議禁用並改用一般使用者登入後切換權限。

  1. 編輯 /etc/ssh/sshd_config
PermitRootLogin no
  1. 重新啟動 SSH 服務:
sudo systemctl restart sshd

使用 SSH 金鑰驗證

使用 SSH 金鑰取代密碼驗證可大幅提高安全性。

  1. 產生 SSH 金鑰:
ssh-keygen -t rsa -b 4096
  1. 傳送公鑰至遠端伺服器:
ssh-copy-id -p 2222 user@server-ip
  1. 禁用密碼驗證(僅允許金鑰登入):
PasswordAuthentication no
  1. 重新啟動 SSH:
sudo systemctl restart sshd

限制 SSH 允許的使用者

若伺服器上有多個使用者,應明確指定哪些使用者能登入 SSH。

  1. 編輯 /etc/ssh/sshd_config,新增:
AllowUsers user1 user2
  1. 重新啟動 SSH 服務:
sudo systemctl restart sshd

啟用 Fail2Ban 防暴力攻擊

Fail2Ban 可監控 SSH 登入失敗記錄,並暫時封鎖可疑 IP。

  1. 安裝 Fail2Ban:
sudo dnf install fail2ban -y
  1. 新增 /etc/fail2ban/jail.local 設定:
[sshd]
enabled = true
port = 2222
maxretry = 5
findtime = 600
bantime = 3600
  1. 啟動 Fail2Ban:
sudo systemctl enable --now fail2ban
  1. 查看封鎖狀態:
sudo fail2ban-client status sshd

限制 SSH 連線 IP

若伺服器只需特定 IP 連線,可設定 /etc/hosts.allow/etc/hosts.deny

允許特定 IP

echo "sshd: 192.168.1.100 203.0.113.50" | sudo tee -a /etc/hosts.allow

阻擋所有其他 IP

echo "sshd: ALL" | sudo tee -a /etc/hosts.deny

設定 SSH 連線超時與閒置斷線

防止長時間閒置的 SSH 會話可降低攻擊風險。

  1. 編輯 /etc/ssh/sshd_config,新增:
ClientAliveInterval 60
ClientAliveCountMax 3
  1. 重新啟動 SSH 服務:
sudo systemctl restart sshd

啟用 SSH 日誌與監控

查看 SSH 登入日誌

sudo journalctl -u sshd --no-pager | tail -n 50

或使用:

sudo tail -f /var/log/secure

查找 SSH 失敗登入嘗試

sudo grep "Failed password" /var/log/secure

找出多次失敗的 IP

sudo awk '{print $11}' /var/log/secure | sort | uniq -c | sort -nr | head -10

設定 SSH 存取記錄保留時間

LogLevel VERBOSE

重新啟動 SSH:

sudo systemctl restart sshd

結語

本篇提供了完整的 SSH 安全加固方案,包括變更連接埠、禁用 root 登入、SSH 金鑰驗證、使用者限制、Fail2Ban 防禦、IP 限制與日誌監控。透過這些設定,您可以顯著降低 SSH 伺服器的安全風險,確保伺服器的安全性與穩定性。

⬅ 上一篇 下一篇 ➡
🔙 返回 資安與維運 📚 返回教學列表 🏠 返回首頁