Назад | Перейти на главную страницу

Записи SSHFP на DNS-сервере Windows

Как я могу добавить записи SSHFP (или любые произвольные записи) на DNS-сервер Windows?

Я использую DC с Windows 2012 R2 и хочу разместить SSH-ключи серверов Unix в DNS.

Как было отмечено в другом ответе, ни один из инструментов Microsoft для MSDNS (dnsmgmt.msc, dnscmd, Add-DnsServerResourceRecord) имеют возможность добавить SSHFP запись.

Кроме того, эти инструменты, похоже, не имеют возможности добавлять записи произвольных типов с помощью стандартизированный универсальный непрозрачный формат записи (т.е. type<typeno> # <length> <hexencodedRRdata>).

Однако MSDNS поддерживает протокол динамического обновления, что на самом деле позволяет добавить SSHFP записи в зоны, размещенные MSDNS!

Хотя добавление записи действительно работает и впоследствии ее можно запросить, я рекомендую соблюдать осторожность, поскольку вы, вероятно, находитесь в основном на непроверенной территории. Это может не подходить для производственного использования.

Эти начальные шаги можно выполнить любым способом, который вы предпочитаете (dnsmgmt.msc отлично работает, например):

  • Убедитесь, что соответствующая зона подписана, или иным образом включите подпись (вы захотите прочитать о DNSSEC, если вы еще не знакомы)
  • Включить динамические обновления для соответствующей зоны


Затем, используя обычный nsupdate и dig инструменты из BIND:

C:\Users\Administrator\Downloads\BIND9.10.2.x64>nsupdate
> server localhost
> zone example.com
> update add foo.example.com 3600  IN  SSHFP  2 1 CC17F14DA60CF38E809FE58B10D0F22680D59D08
> send
> 

И чтобы убедиться, что запись существует:

C:\Users\Administrator\Downloads\BIND9.10.2.x64>dig @localhost foo.example.com sshfp +dnssec

; <<>> DiG 9.10.2 <<>> @localhost foo.example.com sshfp +dnssec
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53553
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4000
;; QUESTION SECTION:
;foo.example.com.               IN      SSHFP

;; ANSWER SECTION:
foo.example.com.        3600    IN      SSHFP   2 1 CC17F14DA60CF38E809FE58B10D0F22680D59D08
foo.example.com.        3600    IN      RRSIG   SSHFP 8 3 3600 20150426201836 20150416191836 46761 example.com. rO98HgBwZSCdsHIf/svgKV+ShLGDonandqrRE1Fe0RdhiJiK
S/B0c28g vFCVijPqDBhxbCsY/OBh5AsF/LpZMZjE5erIIliq6E8yIlPMyiN+MabQ Sxm8Pwfo9V/GeiG7MlmgBOArHp+rYWhA2X3GFpzb9xTiequppbB1GMao iz8=

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Apr 16 20:32:45 Coordinated Universal Time 2015
;; MSG SIZE  rcvd: 249


C:\Users\Administrator\Downloads\BIND9.10.2.x64>

Вскоре: SSHFP в настоящее время недоступен и я тоже этого жду.

Пояснение:

Windows DNS Server имеет очень ограниченные возможности для RRType чтобы вы не добавляли несовместимые данные. Хотя в графическом интерфейсе есть определенные поля для каждой части записи, некоторые из них в виде раскрывающихся меню, а также dnscmd /RecordAdd и командлет PowerShell Add-DnsServerResourceRecord имеет те же ограничения для RRTypes и их данные.

RRType в настоящее время ограничено

  • RFC на основе A, AAAA, AFSDB, CNAME, DHCID, DNAME, HINFO, ISDN, MX, NS, PTR, RP, RT, SRV, TXT, WKS & X25
  • Специально для Windows WINS, WINSR & ATMA.
  • Типы записей, относящиеся к DNSSEC, создаются автоматически во время подписания, поэтому недоступны.

В предполагаемое будущее SSHFP type, следовательно, будет иметь три параметра в соответствии с RFC4255:

dnscmd /RecordAdd <Zone> <NodeName> SSHFP <Algorithm> <FP type> <Fingerprint>

Если SSHFP RRType становится доступным, как сказал Эндрю Б., вы должны сначала выполнить два условия:

  • У вас должна быть зона DNSSEC и SSHFP запись должна быть подписана. В противном случае это никак не улучшит вашу безопасность.
  • Библиотека резолвера машины, на которой запущен SSH, должна иметь EDNS0 расширения включены.

Поэтому первый вопрос, который следует задать, - как включить DNSSEC на сервере Windows. Хорошо, что у вас Windows Server 2012 R2, поскольку поддержка в 2008 R2 ограничивалась автономной подписью статических зон и не поддерживала NSEC3 и RSA/SHA-2.

Поскольку этот вопрос не касался DNSSEC на Windows Server в целом, я оставлю эту довольно практичную статью TechNet в качестве домашнего задания: Пошаговое описание: продемонстрируйте DNSSEC в тестовой лаборатории