Меню

SLIDER.WEB studio

СоцСсылки

БЛОГ


Настройка DNSSEC для защиты вашего домена

Система DNS была разработа более 20 лет назад, когда о защите информации не сильно задумывались, а по факту, на сегодняшний день имеет несколько фундаментальных уязвимостей: Достоверность ответа DNS-сервера никак не проверяется. Это позволяет отправить пользователя, обратившегося к доменному имени, на произвольный IP-адрес, подменив ответ сервера: MITM-атака. Также уязвимы кеширующие DNS-серверы провайдеров, выступающие как резолверы для клиентов: Атака Каминского.

Сегодня существуют технологии, предусматривающие хранение открытых ключей в DNS-записях, например, DKIM-подписи в электронной почте, SSH-ключей в записях SSHFP и т.д. Все эти технологии требуют защиты от подделки DNS.

DNSSEC — технология, позволяющая однозначно удостовериться в подлинности DNS информации при помощи криптографической подписи.

Принцип работы DNSSec тот же, что и у цифровой подписи. То есть закрытым ключом подписываем, открытым сверяем. Особенность состоит в том, что DNSSec использует два типа ключей — одним подписывается зона (ZSK, zone signing key), другим подписывается набор ключей (KSK, key signing key). Сделано это из таких соображений: зона может быть достаточно большой чтобы удалось подобрать закрытый ключ, поэтому его надо менять почаще, да и сделать его можно покороче, чтобы зоны подписывались быстрее; KSK же используется для небольших объемов данных, поэтому его можно и подлиннее сделать и менять пореже. Тем более, что хэш от открытой части KSK требуется отправить в родительскую зону, что хотелось бы делать не слишком часто.

Что на парктике

На текущий момент подписаны только некоторые доменные зоны верхнего уровня, в частности: .net, .com, .org. Зона .ru до сих пор не подписана, зона .ua подписана в режиме тестирования, зона .su официально подписана, но до сих пор ни один регистратор не поддерживает добавление DS-записей. Полный список можно посмотреть на сайте ICANN Для подписания своей зоны эта возможность должна поддерживаться регистратором домена. Из поддерживающих можно выделить наиболее крупных:

  • Godaddy.com
  • Dyn.com
  • 101domain.com
  • GKG.net
  • NIC.RU (первый отечественный)

Далее предполагается, что у нас уже есть домен, делегированный на собственные, полностью настроенные DNS, и готовый файл зоны. Для включения поддержки DNSSEC в named.conf в секцию options нужно добавить:

options {
  ...
  dnssec-enable yes;
  ...
  };

Все приведенные ниже операции необходимо проводить в отдельно созданной папке.

Генерация ключа ZSK:

dnssec-keygen -a RSASHA1 -b 1024 -n ZONE my-domain.com

Генерация ключа KSK:

dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE my-domain.com

где my-domain.com — домен для которого генерируются ключи.

В результате выполнения этих команд будут созданы две пары ключей. Далее необходимо скопировать файл зоны в текущую папку и выполнить подписание:

dnssec-signzone -S -N INCREMENT my-domain.com

где my-domain.com — текстовый файл зоны. Важно выполнять команду, находясь в одной папке с ключами и файлом зоны; имя файла указывать без пути.

В результате будут созданы два файла:

my-domain.com.signed — подписанный файл зоны

dsset-my-domain.com — файл содержащий две DS-записи

Исходный файл зоны останется без изменений. Далее в конфиге BIND необходимо заменить файл на подписанный:

zone "my-domain.com" {
  type master;
  file "my-domain.com.signed";
  allow-query { any; };
  allow-transfer { ....; };
  };

Далее необходимо добавить DS-записи в панели регистратора домена. Они были сгенерированы при выполнении dnssec-signzone и находятся в файле dsset-my-domain в таком виде:

my-domain.com.  IN DS 40513 5 1 6198D29A9FB9797719CDFD2316986BDFF5C29323
my-domain.com.  IN DS 40513 5 2 1AAB29EC7B67013F45865AEB06D93899B45C598D65A4E4D5522BC39E B5B9212F

Posted in Инфраструктура on окт 02, 2014