Linux
在配置每台伺服器時將 RSA 密鑰指紋添加到 known_hosts 的最佳方法是什麼?
這個問題的靈感來自這個執行緒
假設場景,對於上下文如下:
- SSH 伺服器,無論是路由器、防火牆等,都首先在私有 + 安全環境中進行配置,然後再進行部署。SSH 密鑰是在此環境中的伺服器上本地生成的。
- SSH 伺服器有自己的 ACL,用於拒絕來自除我們主機之外的任何東西的連接
- 主機將是具有多個使用者的 Linux 機器
標準方法可能是使用 PKI,並在所有使用者帳戶上安裝受信任的 CA,並部署本地 SCEP 伺服器等。但取而代之的是,謹慎的做法是:
- 在安全環境中,並在配置時,將伺服器的 RSA 指紋導入
known_hosts
我們主機的容器(或儲存它的任何地方,我對 Linux 還不太熟悉),使用ssh-keyscan -H x.x.x.x >> ~/.ssh/known_hosts
- 在該主機上的使用者之間共享/鏡像該 RSA 指紋容器
- 配置主機/每個使用者在出現以下提示時拒絕/丟棄/拒絕連接,以便
The authenticity of host '[hostname] ([IP address])' can't be established. RSA key fingerprint is [key fingerprint]. Are you sure you want to continue connecting (yes/no)?
- 他們無法連接到任何未完成此過程的伺服器,然後
- 對於無法實施上述過程+限制但仍需要遠端配置的情況,也許創建一個單獨的沙盒使用者,以便主要更常用的密碼不會被可能的假 SSH 伺服器破壞。
您有內部 DNS 伺服器嗎?將主機公鑰放入 SSHFP 記錄中。現在它們可以在您的整個組織中使用,而無需在任何地方手動複製。需要配置客戶端電腦
VerifyHostKeyDNS yes
以檢查它們。像這樣的東西/etc/ssh/ssh_config
:Match host *.internal.example.com VerifyHostKeyDNS yes
要防止連接到未知主機,請使用
StrictHostKeyChecking yes
. 但請注意,需要連接到新主機是很常見的,因此這可能會帶來足夠的不便,導致使用者嘗試繞過它。有關可能達到更好平衡的替代配置,請參見手冊頁。