文章目錄
- 如何加強 SSH 安全:內網和專用網絡環境下的防護策略
- 限制訪問來源
- 通過防火墻或安全組限制
- 網絡策略(Network Policy)
- 禁用密碼登錄,使用密鑰認證
- 啟用 Fail2ban 或 SSH 防爆破
- 限制 SSH 用戶
- 更改 SSH 端口
- 使用跳板機(堡壘機)
- 啟用 SSH 審計
- 使用基于 VPN 的 SSH 訪問
- 強制多因素認證(MFA)
- 綁定 SSH 到特定網卡
- 監控 SSH 會話
- 配置 SSH ProxyCommand
- 總結
如何加強 SSH 安全:內網和專用網絡環境下的防護策略
在許多企業和機構中,SSH 是日常管理服務器的重要工具。即使在內網或專用網絡環境中使用,SSH 依然存在潛在風險。本文將詳細介紹多種 SSH 安全加固措施,從訪問控制、認證方式到審計監控,全方位提升 SSH 安全性。
限制訪問來源
通過防火墻或安全組限制
- 防火墻(iptables、firewalld): 配置防火墻規則,僅允許特定 IP 地址或網段訪問 SSH 服務端口。例如:
# iptables 示例:只允許192.168.1.0/24網段訪問SSH iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j DROP
- 安全組: 在云環境中,通過安全組規則限定哪些 IP 或子網能夠連接到 SSH 服務。
網絡策略(Network Policy)
在 Kubernetes 或其他容器平臺上,可以利用網絡策略限制 SSH 訪問的來源,進一步減少安全風險。
禁用密碼登錄,使用密鑰認證
密碼認證相對容易受到暴力破解攻擊,建議:
-
關閉密碼登錄: 編輯
/etc/ssh/sshd_config
,添加或修改以下配置:PasswordAuthentication no PermitRootLogin no
PasswordAuthentication no
- 作用:禁用密碼認證,即不允許使用密碼登錄 SSH,必須使用 密鑰認證(公鑰登錄)。
- 影響:如果沒有正確配置 SSH 密鑰對(public/private key),可能會導致無法遠程登錄。
PermitRootLogin no
- 作用:禁止 root 用戶通過 SSH 直接登錄,提高系統安全性。
- 影響:即使知道 root 密碼,也無法通過 SSH 直接以 root 身份登錄,必須先以普通用戶登錄,然后再使用
su
或sudo
提升權限。
-
啟用基于密鑰的認證: 配置 SSH Key,實現更高的安全性。將公鑰添加到
~/.ssh/authorized_keys
中,并確保私鑰安全存儲。
啟用 Fail2ban 或 SSH 防爆破
為了防止暴力破解攻擊,可以使用 Fail2ban 對 SSH 登錄失敗進行監控,并自動封禁惡意 IP:
- 安裝 Fail2ban:
# CentOS yum install fail2ban -y# Ubuntu/Debian apt install fail2ban -y
- 配置
/etc/fail2ban/jail.local
:[sshd] enabled = true port = 22 maxretry = 3 bantime = 600
這樣,當 SSH 登錄失敗次數超過限制后,系統會自動阻斷該 IP 一段時間。
限制 SSH 用戶
為了減少攻擊面,應當僅允許必要的用戶使用 SSH:
- 允許指定用戶登錄:
AllowUsers user1 user2
- 禁止特定用戶登錄:
DenyUsers root test
通過精確控制登錄用戶,可以防止非授權人員的訪問。
更改 SSH 端口
默認的 SSH 端口(22)容易受到掃描和攻擊。通過修改 SSH 端口,可以在一定程度上降低攻擊風險:
- 修改
/etc/ssh/sshd_config
中的端口配置:Port 22022
- 修改后,請確保相應的防火墻或安全組規則中允許新端口的流量。
使用跳板機(堡壘機)
在生產環境中,建議采用堡壘機來集中管理 SSH 訪問:
- 跳板機優勢: 通過堡壘機對內部所有 SSH 會話進行統一監控和審計,避免直接暴露服務器。
- 實施方法: 用戶首先登錄到堡壘機,然后再通過堡壘機訪問內網服務器,所有操作均被記錄和監控。
啟用 SSH 審計
為便于事后審計和安全事件溯源,應啟用 SSH 訪問日志記錄:
- 使用 auditd: 安裝 auditd 并配置規則,例如監控 SSH 配置文件變化:
yum install audit -y auditctl -w /etc/ssh/sshd_config -p wa -k ssh-config
- 使用 go-audit: 作為 auditd 的替代方案,go-audit 同樣可以幫助記錄詳細的 SSH 操作日志。
使用基于 VPN 的 SSH 訪問
即使 SSH 服務僅用于內網,通過 VPN 隧道進行訪問能提供額外的隔離:
- 常用 VPN 解決方案: OpenVPN、WireGuard、IPSec 等均可實現安全隧道,確保數據傳輸在加密通道中進行。
強制多因素認證(MFA)
在內網環境中,引入多因素認證可進一步提升 SSH 登錄安全性:
- Google Authenticator 或 Duo Security: 結合 OTP(一次性密碼)進行雙重驗證。
- 配置示例:
- 安裝 Google Authenticator:
apt install libpam-google-authenticator -y # Ubuntu/Debian yum install google-authenticator -y # CentOS/RHEL
- 修改
/etc/pam.d/sshd
:auth required pam_google_authenticator.so
- 修改
/etc/ssh/sshd_config
啟用 ChallengeResponseAuthentication:ChallengeResponseAuthentication yes
- 重啟 SSH 服務:
systemctl restart sshd
- 安裝 Google Authenticator:
綁定 SSH 到特定網卡
如果服務器有多個網卡,可通過綁定讓 SSH 服務只監聽內網地址:
- 在
/etc/ssh/sshd_config
中設置:ListenAddress 192.168.1.10
- 配合
/etc/hosts.allow
限制訪問來源:sshd: 192.168.1.0/24
監控 SSH 會話
實時監控 SSH 會話能幫助管理員及時發現異常行為:
- 使用 auditd: 監控 SSH 操作日志,對關鍵文件進行實時監控。
- 使用 pam_tty_audit: 在
/etc/pam.d/sshd
中啟用:session required pam_tty_audit.so enable=*
這樣,所有 SSH 會話中的命令都會被記錄,便于事后調查。
配置 SSH ProxyCommand
對于分布式或多跳環境,使用 SSH ProxyCommand 能進一步增強訪問控制:
- 示例命令:
ssh -o ProxyCommand="ssh -W %h:%p bastion-host" user@target-host
這可以將 SSH 連接通過堡壘機(bastion-host)進行轉發,進一步隔離內部網絡。
總結
在內網或專用網絡中部署 SSH 并不意味著安全性可以放松。通過限制訪問來源、禁用密碼登錄、采用密鑰認證、啟用 Fail2ban、使用堡壘機、配置審計日志以及引入多因素認證等多重措施,可以顯著降低內部風險和潛在攻擊面。同時,結合 VPN 和網絡策略等技術手段,使 SSH 服務即使不暴露在公網,也能應對來自內部網絡的威脅。