DNSSEC (Domain Name System Security Extensions) — это надстройка над системой доменных имён, предназначенная для повышения безопасности пользователей Интернета. Её использование предотвращает ряд атак, связанных с подменой реального адреса сайтов — фишинга, отравления DNS-кэша и др.
Что такое DNS
DNSSEC подразумевает использование цифровой подписи для каждой DNS-записи вашего домена. Подпись формируется и проверяется с помощью двух ключей: ключа подписи зоны (ZSK
, zone signing key) и ключа подписи этого ключа (KSK
, key signing key):
- Ключ подписи зоны — секретный ключ (или закрытый ключ), хранится на вашем DNS-хостинге и используется для создания цифровой подписи записей.
- Ключ подписи ключа — открытый ключ, передаётся с DNS-хостинга на следующий уровень системы доменных имён (DNS-сервер доменной зоны). Он используется для проверки подлинности и целостности данных, подписанных закрытым ключом.
Оба ключа генерируются на DNS-хостинге, куда делегирован домен.
При подключении DNSSEC отпечатки вашего открытого ключа в виде DS-записей передаются на более высокий уровень системы доменных имён — DNS-сервер доменной зоны. Если проще, то регистратору домена. У него, как и у каждого следующего уровня системы DNS, есть свой набор из закрытого и открытого ключей. Открытый ключ вашей зоны подписывается закрытым ключом сервера доменной зоны — в дальнейшем это даёт возможность подтвердить его подлинность.
Открытый ключ DNS-сервера доменной зоны тоже передаётся на уровень выше — корневому DNS-серверу. И там снова происходит подпись, уже закрытым ключом корневого сервера. Таким образом создаётся цепочка доверия: корневой сервер отвечает за проверку подлинности открытого ключа сервера доменной зоны, а тот отвечает за проверку ключа авторитативных серверов.
Когда кто-то хочет перейти на сайт, DNS-запрос для определения его IP-адреса по имени домена проходит путь от корневого DNS-сервера до вашего DNS-хостинга, где и хранится вся нужная информация. За отправку таких запросов отвечает DNS-резолвер — специфически настроенный сервер, размещённый у интернет-провайдера. Он принимает запросы от устройств в сети и опрашивает все узлы системы доменных имён, чтобы вернуть запрошенные данные — IP-адреса искомых сайтов.
Этот DNS-резолвер по умолчанию содержит открытый ключ корневого сервера системы DNS, с которого начинается любой DNS-запрос. При запросе корневой сервер возвращает адрес сервера доменной зоны искомого домена и ранее переданный на него подписанный ключ этого сервера. Резолвер проверяет подлинность этих данных с помощью открытого ключа корневого сервера и, если проверка успешна, совершает новый запрос по полученному адресу.
При подключении к серверу доменной зоны (TLD, top level domain) DNS-резолвер получает открытый ключ этого сервера и сверяет его с полученным на корневом сервере. TLD-сервер по запросу тоже возвращает адрес и подписанный открытый ключ, но уже авторитативного сервера — как раз там и хранятся записи запрошенного домена, в том числе адрес. DNS-резолвер проверяет валидность данных с помощью полученного ранее открытого ключа и, если всё в порядке, совершает следующий запрос.
На авторитативном сервере всё повторяется — DNS-резолвер получает и проверяет открытый ключ, запрашивает и получает требуемые записи домена, проверяет их подпись. Если проверка успешно пройдена, в результате резолвер возвращает вашему устройству значения запрошенных записей домена.
Благодаря проверке подлинности получаемых данных на каждом уровне системы DNS и обеспечивается защита от подмены и повреждения данных.
Несмотря на очевидные плюсы использования, у технологии есть свои нюансы:
- увеличивается время обработки и размер DNS-запросов;
- увеличиваются требования к вычислительным ресурсам DNS-серверов;
- у системы DNS есть ряд узких мест, которые DNSSEC не покрывает.
Поэтому, чтобы обеспечить максимальный уровень безопасности ваших доменов и сайтов, рекомендуем использовать сразу несколько механизмов защиты:
- DNSSEC — для домена;
- SSL-сертификат — для сайтов;
- DDoS-защита — для сервера.