私のセットアップ
Centos 7.3 を実行しているマシンのクラスターがあり、認証に Kerberos / LDAP を使用しています。Kerberos / LDAP は FreeIPA 4.4.0 にパッケージ化されています。
すべてのホストにはアドレスがあります192.168.1.0/24これを「プライマリ」ネットワークと呼びます。
一部のホストのアドレスは192.168.2.0/24これを「セカンダリ」ネットワークと呼びます。この2番目のインターフェースを持つホストの場合、セカンダリホスト名とセカンダリIPアドレスを関連付けるDNSの対応する追加のA / PTRエントリがあります。すべての場合において、セカンダリホスト名は<プライマリホスト名>-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-server-インストール動作しません(または、おそらく、私が理解していない可能性があります)。
これまでの仕事: クライアント側
クライアントマシンを次のように構成しました。
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 から受け取るプロンプトは 2 つあります。
- 不明なSSHホストキーを受け入れるためのプロンプト
- ユーザーのパスワードの入力を求めるプロンプト
セカンダリ ホスト名を使用してホストに SSH 接続する場合、ユーザー パスワードの入力を求められません。セカンダリ ホスト名を使用してホストに SSH 接続しようとすると、不明な SSH ホスト キーを受け入れるように求めるプロンプトが表示され、回避できません。この現象が発生するのは、次の理由によるものです...
セカンダリ ホスト名に対して SSHFP DNS レコードが生成されていないことがわかりました。プライマリ ホスト名に関連付けられているのと同じ SSH ホスト キーがすべてセカンダリ ホスト名に関連付けられている必要があります。しかし、これは実行されていません。
セカンダリホスト名に必要なSSHFP DNSレコードを生成するためにFreeIPAをどのように使用すればよいでしょうか?ipa 参加私がやっていることは必要です。
答え1
おそらくあなたが望む答えではないかもしれませんが、DNS での SSHFP RR も検討しましたが、次の理由によりこれを断念しました。
- クライアントのサポートが必要です(オプションを参照)ホストキーDNSの検証OpenSSH クライアントの場合)。
- 本当に安全であるためには、DNSSEC を使用して DNS ゾーンに署名し、ローカル リゾルバで署名を確認する必要があります。そうしないと、DNS レコードが簡単に偽装される可能性があります。
- 大規模な環境では、DNS サーバーの責任者と調整するのはかなり困難です。SSH サーバーが多数ある場合は、動的 DNS 更新が必要になることを覚えておいてください。
ぜひ調べてみることをおすすめしますOpenSSH 証明書信頼できる証明機関がすべてのホスト キーに署名できるようにします。これにはクライアント サポートも必要であり (たとえば、PuTTY ではサポートされていません)、SSH-CA の公開キーをすべてのクライアントに配布する必要があります。ただし、DNSSEC よりも簡単で、より安全だと思います。