FreeIPA 中 SSHFP 記錄的生成

FreeIPA 中 SSHFP 記錄的生成

我的設定

我有一個運行 Centos 7.3 的機器集群,並且使用 Kerberos / LDAP 進行身份驗證。 Kerberos / LDAP 封裝在 FreeIPA 4.4.0 中。

所有主機都有一個位址192.168.1.0/24。我將其稱為“主要”網絡。

某些主機的位址位於192.168.2.0/24。我將其稱為“輔助”網路。對於具有第二個介面的主機,DNS 中有相應的額外 A/PTR 條目,它們關聯輔助主機名稱和輔助 IP 位址。在所有情況下,輔助主機名稱都是<主主機名稱>-eth1

我的目標

我正在努力在我們的集群中實施 SSO。 SSO 在主網路上運作良好,但在輔助網路上運作不佳。

到目前為止我所做的:伺服器端

我將伺服器配置如下:

ipa-server-install \
-r ME.EXAMPLE.COM \
-n me.example.com \
--mkhomedir \
--hostname=host-1.me.example.com \
--ip-address=192.168.1.1 \
--ssh-trust-dns \
--setup-dns \
--auto-forwarders \
--forward-policy=only \
--auto-reverse \
--dirsrv-cert-file=<path to server SSL certificate> \
--http-cert-file=<path to server SSL certificate> \
--no-dnssec-validation

伺服器安裝完成後,我還必須手動將以下 PTR 記錄新增至 DNS:

1.1.168.192.in-addr.arpa PTR host-1.me.example.com

我必須這樣做,因為顯然--自動反轉標記為ipa 伺服器安裝不起作用(或者,也許更有可能,我不明白)。

到目前為止我所做的:客戶端

我如下設定我的客戶端電腦:

ipa-client-install \
--force-ntpd \
-p admin \
-W \
--mkhomedir \
--no-nisdomain \
--ssh-trust-dns

與伺服器安裝一樣,我還必須為客戶端手動新增 DNS PTR 記錄。由 FreeIPA 建立的前向 A 記錄在所有情況下都表現良好。

然後,為了獲得使用 FreeIPA 註冊的輔助主機名,我在用戶端上執行了以下操作:

kinit admin
ipa-join -h host-1-eth1.me.example.com

和以前一樣,這建立了轉送 DNS A 記錄,但我必須手動新增對應的 DNS PTR 記錄。

問題

我遇到問題的地方是在輔助網路上。例如,我可以透過 SSH 訪問主機1以無密碼方式(即 SSO 正在主網路上工作),但我無法透過 SSH 訪問主機1-eth1以無密碼方式(即 SSO 不在輔助網路上運作)。

SSH 可能會收到兩個提示:

  1. 提示接受未知 SSH 主機金鑰
  2. 提示輸入使用者密碼

當我使用輔助主機名稱 SSH 到主機時,沒有收到輸入使用者密碼的提示。當嘗試使用輔助主機名稱 SSH 到主機時,我無法繞過該提示,接受未知的 SSH 主機金鑰。發生這種情況是因為...

我觀察到沒有為輔助主機名稱產生 SSHFP DNS 記錄。所有相同的 SSH 主機金鑰都應與輔助主機名稱關聯,就像與主主機名稱關聯一樣。然而,這並沒有發生。

我必須如何使用 FreeIPA 來取得為輔助主機名稱產生的所需 SSHFP DNS 記錄?顯然,超過IPA 加入我所做的是需要的。

答案1

可能不是您喜歡的答案,但我也考慮過 DNS 中的 SSHFP RR,但由於以下原因而放棄了:

  1. 它需要客戶支援(請參閱選項驗證主機金鑰DNS對於 OpenSSH 客戶端)。
  2. 您需要使用 DNSSEC 對您的 DNS 區域進行簽名,並讓本機解析器檢查簽名是否真正安全。否則 DNS 記錄很容易被欺騙。
  3. 在一些較大的環境中,與負責 DNS 伺服器的人員進行協調非常困難。請記住,如果您有許多 SSH 伺服器,則需要動態 DNS 更新。

我強烈建議調查一下OpenSSH 憑證讓受信任的憑證授權單位簽署所有主機金鑰。這也需要客戶端支援(例如,PuTTY 中不支援),而且您必須將 SSH-CA 的公鑰分發給所有客戶端。但它比 DNSSEC 更容易,而且恕我直言更安全。

相關內容