要保護 SSH 連接並增強 Linux 系統的安全性,可以使用一些最佳實踐和工具。以下是一些關鍵步驟來加強 SSH 安全性:
1. 更改默認的 SSH 端口
更改默認的 SSH 端口可以減少被自動化攻擊掃描到的風險。
- 打開 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
- 更改端口號: 找到
Port
行並更改端口號(例如,從 22 改為 2222):
Port 2222
- 保存並重新啟動 SSH 服務:
sudo systemctl restart ssh
2. 禁用 root 登錄
禁用 root 用戶通過 SSH 直接登錄可以防止許多暴力攻擊。
- 打開 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
- 禁用 root 登錄: 找到
PermitRootLogin
行並設置為no
:
PermitRootLogin no
- 保存並重新啟動 SSH 服務:
sudo systemctl restart ssh
3. 使用密鑰驗證
使用公鑰認證代替密碼認證可以顯著提高安全性。
- 生成 SSH 密鑰對: 在客戶端機器上生成密鑰對:
ssh-keygen -t ed25519 -C "your_email@example.com"
- 將公鑰複製到服務器: 使用
ssh-copy-id
命令將公鑰複製到服務器:
ssh-copy-id user@server-ip
- 配置 SSH 使用公鑰認證: 確保 SSH 配置文件中啟用了公鑰認證:
PubkeyAuthentication yes
- 禁用密碼認證: 禁用密碼認證,強制使用密鑰驗證:
PasswordAuthentication no
- 保存並重新啟動 SSH 服務:
sudo systemctl restart ssh
4. 使用 Fail2ban 保護 SSH
Fail2ban 可以自動阻止可疑的登錄嘗試,防止暴力破解攻擊。
- 安裝 Fail2ban:
sudo apt-get install fail2ban
- 配置 Fail2ban: 編輯 Fail2ban 配置文件:
sudo nano /etc/fail2ban/jail.local
添加或修改以下配置來保護 SSH:
[sshd]
enabled = true
port = 2222 # 這裡應該是你實際使用的 SSH 端口
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
- 啟動並啟用 Fail2ban 服務:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
5. 設置 SSH 超時
設置 SSH 超時可以防止未活動的會話長時間保持打開狀態。
- 打開 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
- 設置超時參數: 添加或修改以下行以設置超時:
ClientAliveInterval 300
ClientAliveCountMax 0
- 保存並重新啟動 SSH 服務:
sudo systemctl restart ssh
6. 使用兩因素認證(2FA)
兩因素認證提供了額外的一層安全性。
- 安裝 Google Authenticator:
sudo apt install libpam-google-authenticator
- 配置 Google Authenticator: 為用戶設置 Google Authenticator:
google-authenticator
- 配置 SSH 使用 PAM 模塊: 打開 PAM 配置文件:
sudo nano /etc/pam.d/sshd
添加以下行:
auth required pam_google_authenticator.so
- 修改 SSH 配置文件: 打開 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
設置 ChallengeResponseAuthentication
為 yes
:
ChallengeResponseAuthentication yes
- 保存並重新啟動 SSH 服務:
sudo systemctl restart ssh
總結
通過上述步驟,你可以顯著提高 SSH 連接的安全性,防止未經授權的訪問和攻擊。這些措施包括更改默認端口、禁用 root 登錄、使用密鑰驗證、設置超時和兩因素認證等。