Генерация записей SSHFP во FreeIPA
МОЯ НАСТРОЙКА
У меня есть кластер машин под управлением 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.
МОЯ ЦЕЛЬ
Я работаю над внедрением единого входа в нашем кластере. Единый вход работает нормально в первичной сети, но не во вторичной сети.
То, что я сделал так далеко: сторона сервера
Я настроил сервер следующим образом:
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
Я должен сделать это, так как, по-видимому, флаг --auto-reverse для ipa-server-install не работает (или, скорее, я этого не понимаю).
То, что я сделал так далеко: сторона клиента
Я настроил свои клиентские машины следующим образом:
ipa-client-install \
--force-ntpd \
-p admin \
-W \
--mkhomedir \
--no-nisdomain \
--ssh-trust-dns
Как и при установке сервера, мне также пришлось вручную добавлять записи DNS PTR для клиентов. Форвардные записи А, созданные FreeIPA, были хорошими во всех случаях.
Затем, чтобы зарегистрировать вторичное имя хоста с FreeIPA, я сделал следующее на клиенте:
kinit admin
ipa-join -h host-1-eth1.me.example.com
Как и раньше, это создавало записи пересылки DNS A, но мне пришлось вручную добавлять соответствующие записи DNS PTR.
ЭТА ПРОБЛЕМА
Где у меня возникли проблемы, находится на вторичной сети. Например, я могу SSH к хосту-1 без пароля (т. Е. SSO работает в основной сети), но я не могу SSH к хосту-1-eth1 без пароля (т. Е. SSO не работает во вторичной сети),
Есть два запроса, которые можно получить от SSH:
- Приглашение принять неизвестный ключ хоста SSH
- Запрос пароля пользователя
У меня не запрашивается пароль пользователя, когда я SSH к хосту, используя его вторичное имя хоста. Это приглашение принять неизвестный ключ хоста SSH, который я не могу обойти при попытке SSH к хосту, используя его вторичное имя хоста. И это происходит потому, что...
Я заметил, что нет никаких записей DNS SSHFP, генерируемых для вторичных имен хостов. Все одинаковые ключи хоста SSH должны быть связаны с дополнительным именем хоста, как и с основным именем хоста. Однако этого не происходит.
Как я должен использовать FreeIPA, чтобы получить необходимые записи DNS SSHFP, сгенерированные для вторичных имен хостов? Очевидно, что требуется больше, чем ipa-join, которым я занимаюсь.
1 ответ
Вероятно, не тот ответ, который вам нравится, но я также рассмотрел RR SSHFP в DNS, но отказался от этого по следующим причинам:
- Требуется поддержка клиента (см. Опцию VerifyHostKeyDNS для клиента OpenSSH).
- Вам необходимо подписать свои зоны DNS с помощью DNSSEC и иметь локальные средства распознавания, чтобы проверить подлинность подписей. В противном случае DNS-записи могут быть легко подделаны.
- В некоторых более крупных средах довольно сложно согласовать это с людьми, ответственными за DNS-серверы. Имейте в виду, что вам потребуется динамическое обновление DNS, если у вас много SSH-серверов.
Я настоятельно рекомендую изучить сертификаты OpenSSH, чтобы позволить доверенному центру сертификации подписывать все ключи хоста. Это также требует поддержки клиента (например, не поддерживается в PuTTY), и вам необходимо распространить открытый ключ (ключи) SSH-CA среди всех клиентов. Но это проще, чем DNSSEC и ИМХО более безопасно.