DNSSEC
DNSSEC (англ. Domain Name System Security Extensions) — набор спецификаций IETF, обеспечивающий безопасность информации, предоставляемой DNS (англ. Domain Name System) средствами IP(англ. Internet Protocol). Он представляет собой набор расширений для DNS, которые предоставляются DNS клиентам:
- Первичная аутентификация DNS данных
- Целостность данных (не обеспечивает конфиденциальность)
- Проверка на отрицание существования
Принято считать, что обеспечение безопасности DNS критически важно для интернет-безопасности в целом, но распространению DNSSEC в значительной мере препятствуют:
- Разработка обратно совместимого стандарта, который можно масштабировать до размера интернета
- Применение реализаций DNSSEC в огромном количестве DNS серверов и клиентов
- Разногласия между ключевыми игроками по поводу того, кто должен владеть доменами первого уровня TLD (.com, .net)
- Преодоление предполагаемой сложности и применение DNSSEC
Некоторые из этих проблем находятся на стадии разрешения .
Описание
Изначально Domain Name System (DNS) разрабатывался не в целях безопасности, а для создания масштабируемых распределенных систем. Со временем система DNS становится все более уязвимой. Злоумышленники без труда перенаправляют запросы пользователей по символьному имени на подставные сервера и таким образом получают доступ к паролям, номерам кредитных карт и другой конфиденциальной информации. Сами пользователи ничего не могут с этим поделать, так как в большинстве случаев даже не подозревают о том, что запрос был перенаправлен. DNSSEC является попыткой обеспечения безопасности при одновременной обратной совместимости.
DNSSEC была разработана для обеспечения безопасности клиентов от фальшивых DNS данных, например, создаваемых DNS cache poisoning. Все ответы от DNSSEC имеют цифровую подпись. При проверке цифровой подписи DNS распознаватель проверяет верность и целостность информации. Хотя защита IP адресов является непосредственной проблемой для многих пользователей, DNSSEC может защитить остальную информацию, такую как криптографические сертификаты общего назначения, хранящиеся в CERT record DNS. RFC 4398 описывает, как распределить эти сертификаты, в том числе по электронной почте, что позволяет использовать DNSSEC в качестве глобальной инфраструктуры открытых ключей электронной почты.
DNSSEC не обеспечивает конфиденциальность данных; в частности, все DNSSEC ответы аутентифицированны, но не шифруются. DNSSEC не защищает от DoS атак непосредственно, хотя в некотором роде делает это косвенно. Другие стандарты (не DNSSEC) используются для обеспечения большого количества данных, пересылаемых между серверами DNS.
DNSSEC спецификации (DNSSEC-bis) подробно описывают текущий протокол DNSSEC. См. RFC 4033, RFC 4034 и RFC 4035.
История
DNS является одним из важнейших и основных интернет-сервисов. Однако в 1990 Стив Белловин (Steve Bellovin) выявил серьезные недостатки в безопасности. Исследования в этой области начались и проводились полным ходом со времен публикации доклада в 1995.[1]
RFC 2065 был опубликован IETF в 1997. Первые попытки реализации этой спецификации привели к новой спецификации RFC 2535 в 1999. Было запланировано реализовывать DNSSEC, основываясь на IETF RFC 2535.
К сожалению, у спецификации IETF RFC 2535 были очень серьезные проблемы с масштабированием на весь интернет. К 2001 году стало ясно, что эта спецификация была непригодна для крупных сетей. При нормальной работе DNS серверы часто десинхронизировались со своими родителями. Обычно это не являлось проблемой, но при включенном DNSSEC десинхронизованные данные могли нести непроизвольный DoS эффект. Подлинный DNSSEC требует сложного протокола из шести сообщений и большое количество данных для осуществления изменений наследника (все DNS зоны наследника должны быть полностью переданы родителю, родитель вносит изменения и отправляет их обратно наследнику). Кроме того, изменения в публичном ключе могут иметь абсурдный эффект. Например, если зона ".com" изменит свой ключ, придётся отправить 22 миллиона записей (т.к. придется обновить все записи во всех наследниках). Таким образом, DNSSEC в виде RFC 2535 не может быть масштабирован до размера интернета.
IETF осуществила принципиальное изменение DNSSEC, которое называется DNSSEC-bis(название было дано чтобы отличать DNSSEC-bis от первоначального подхода DNSSEC в RFC 2535). Новая версия использует принцип DS(англ. Delegation Signer) для обеспечения дополнительного уровня косвенной делегации при передаче зон от родителя к наследнику. В новом подходе при смене открытого ключа отсылается только одно сообщение вместо шести: наследник посылает новый открытый ключ родителю. Родитель просто хранит один открытый ключ для каждого из наследников. Это значит, что совсем небольшое количество данных будет отправлено родителю вместо обмена огромным количеством данных между наследником и родителем. Это также значит, что наследникам придется совершать дополнительные действия для проверки ключей. Большинство считает, что это небольшая плата за возможность более практичного применения DNSSEC.
DNSSEC уже получил большое распространение во всем мире. Теперь, по инициативе российского регистратора доменных имен R01, домен RU также интегрирован в систему DNSSEC.
Принцип работы
В основе действия протокола DNSSEC лежит метод цифровой подписи ответов на запрос DNS lookup, который обеспечивает неприкосновенность данных в системе DNS. Для этого было создано несколько типов DNS записей, в их числе RRSIG, DNSKEY, DS и NSEC. Вся информация о защищенном домене (COM, NET, RU…) в системе DNSSEC определенным образом зашифрована, поэтому может быть изменена только при помощи закрытого ключа шифрования. В процессе защищенного делегирования домена происходит генерация пары ключей. Информация о ключах хранится на первичном DNS-сервере. Закрытый ключ используется для подписи зоны после каждого изменения. Цифровая подпись закрытого ключа DS-записи(англ. Designated Signer) передается администратору родительской зоны и подписывается его закрытым ключом. Таким образом организуется цепочка доверия. Зная открытый ключ администратора родительской зоны можно проверить валидность открытого ключа любой из дочерних зон. Получив доступ к файлам с описанием домена на первичном или вторичном серверах DNS или во время передачи данных между серверами, злоумышленник не сможет внести изменения, так как не является владельцем закрытого ключа — все несанкционированные изменения файлов будут отброшены как недостоверные. Так же ни к чему не приведет попытка злоумышленника послать динамический запрос на обновление данных о домене от имени другой системы. Кэширующие сервера провайдера (организации) и пользовательские системы (резолверы) также проверяют достоверность изменений, используя открытый ключ.
Применение
Интернет считается важнейшим средством инфраструктуры, однако его работоспособность зависит от принципиально небезопасного DNS. Таким образом, существует большой стимул обезопасить DNS, и применение DNSSEC, как правило, считается важнейшей частью работы.
Однако DNSSEC имеет сложности в развитии. Кроме того, развертывание DNSSEC в крупномасштабных сетях также проблематично. DNS сервера должны быть обновлены программным обеспечением, поддерживающим DNSSEC. Клиент, использующий TCP/IP должен иметь обновленный DNS Resolver для использования возможностей DNSSEC. Более того, любой DNS Resolver должен иметь способ получить по крайней мере один достоверный открытый ключ до того, как он начнет использовать DNSSEC. Для решения этих задач уже ведется значительная работа, потому что интернет имеет столь важное значение для многих организаций.
Программное обеспечение DNSSEC
Использование DNSSEC требует программного обеспечения как на серверной, так и на клиентской стороне.
- BIND (англ. Berkeley Internet Name Domain).
- Drill это инструмент с поддержкой DNSSEC входящий в набор инструментов ldns.
- DNSSEC-Tools проект SourceForge направленный на обеспечение простого в использовании набора инструментов для работы с DNSSEC.
- Unbound резолвер написанный с нуля, основываясь на принципах работы DNSSEC.
- поддержка DNSSEC была предоставлена в Windows 7 и Windows Server 2008 R2.[2]
- mysqlBind
- OpenDNSSEC
Примечания
Ссылки
- DNSSEC - DNSSEC информационный сайт: DNSSEC.ru
- DNSSEC - DNSSEC information site: DNSSEC.net
- DNSEXT DNS Extensions IETF Working Group
- CircleID - News and Opinions on all DNSSEC related issues
- DNSSEC-Tools Project
- DNSSEC Deployment Coordination Initiative
- DNSSEC in Russia - Практика внедрения DNSSEC в России
Документы RFC
- RFC 2535 Domain Name System Security Extensions
- RFC 3833 A Threat Analysis of the Domain Name System
- RFC 4033 DNS Security Introduction and Requirements (DNSSEC-bis)
- RFC 4034 Resource Records for the DNS Security Extensions (DNSSEC-bis)
- RFC 4035 Protocol Modifications for the DNS Security Extensions (DNSSEC-bis)
- RFC 4398 Storing Certificates in the Domain Name System (DNS)