Check-Host.cc

Глобальный чекер WKS (Well Known Service)

Запись WKS (Well Known Service) — это сильно устаревший, жесткий тип DNS-записи, введенный при первоначальном создании Domain Name System в RFC 1035. Ее основной инженерной целью было публичное сопоставление определенного IP-адреса с определенным списком поддерживаемых интернет-протоколов — в частности, TCP или UDP — и публичное объявление их соответствующих открытых портов. Например, администратор мог использовать запись WKS для широковещания, что сервер, расположенный на 192.168.1.100, активно поддерживает SMTP на порту 25 и FTP на порту 21.

Оптимизация ресурсов до подключения

На заре сетевых вычислений установление TCP handshake по соединениям ARPANET с ограниченной пропускной способностью и высокой задержкой было вычислительно дорогим и невероятно медленным процессом. Запись WKS была спроектирована как лайфхак (efficiency hack) для эффективности. Она позволяла клиентскому приложению запросить легковесный уровень DNS на базе UDP, чтобы проверить, действительно ли удаленный сервер поддерживает определенную службу, прежде чем пытаться направлять к ней трафик. Если пользователь пытался инициировать сеанс Telnet, но WKS-запись домена не указывала явно порт 23 в своем bitmap-массиве, локальное клиентское приложение могло немедленно прервать попытку соединения. Это предотвращало зависание клиента в ожидании сетевого таймаута, экономя ценную пропускную способность на трансатлантических каналах.

Узкое место Bitmap

Фатальным недостатком записи WKS была ее базовая структура данных. Payload был закодирован как очень жесткий двоичный bitmap, где каждый бит соответствовал конкретному номеру порта, определенному Internet Assigned Numbers Authority (IANA). Этот формат стал невероятно громоздким и почти невозможным для ручного сопровождения администраторами по мере того, как интернет-сервисы взрывообразно усложнялись. Каждый раз, когда сисадмин устанавливал новую службу или закрывал порт, ему приходилось регенерировать bitmap, обновлять серийный номер зоны и ждать глобального распространения (propagation) DNS, просто чтобы отразить точное состояние сервера. Административные накладные расходы (overhead) радикально перевешивали экономию пропускной способности.

Риски безопасности и замена на SRV

Как и запись HINFO, протокол WKS был совершенно слеп к сетевой безопасности. Публикация исчерпывающего списка всех открытых портов на сервере прямым текстом непосредственно в публичном уровне DNS давала хакерам готовую исчерпывающую карту разведки. Это полностью обходило необходимость использования шумных, легко обнаруживаемых сканеров портов, таких как Nmap. Признав эти критические архитектурные недостатки и недостатки безопасности, IETF официально объявила запись WKS устаревшей с публикацией RFC 1123. Требование привязывать определенные службы и порты к доменным именам позже было полностью перенесено на запись SRV (Service). Записи SRV обеспечили бесконечно большую гибкость, позволяя динамически назначать порты, веса (weights) балансировки нагрузки и failover приоритеты, не раскрывая полный профиль базовых портов целевой машины. Современное программное обеспечение DNS, такое как BIND9 или CoreDNS, полностью игнорирует форматирование WKS.