| 1 | Упражнение: Обновление ключа вручную |
|---|
| 2 | ------------------------------------ |
|---|
| 3 | |
|---|
| 4 | ЗАДАЧА |
|---|
| 5 | |
|---|
| 6 | Мы собираемся обновить ZSK для зон, которые мы только что подписали. |
|---|
| 7 | |
|---|
| 8 | ПОЖАЛУЙСТА запишите идентификаторы ключей KSK/ZSK на листке бумаги, |
|---|
| 9 | чтобы не забыть, какой ключ выполняет какую задачу. |
|---|
| 10 | |
|---|
| 11 | НАПОМИНАНИЯ |
|---|
| 12 | |
|---|
| 13 | - мы храним наши ключи в /etc/namedb/keys/ |
|---|
| 14 | |
|---|
| 15 | - там у нас сейчас хранится две пары ключей, одна пара для ZSK и одна |
|---|
| 16 | для KSK. Каждая пара представлена двумя файлами, один заканчивается |
|---|
| 17 | на ".key" (открытый ключ), и другой заканчивается на ".private" |
|---|
| 18 | (закрытый ключ) |
|---|
| 19 | |
|---|
| 20 | - в корневой зоне есть набор записей DS, соответствующий нашему KSK |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | ОБНОВЛЕНИЕ ZSK |
|---|
| 24 | |
|---|
| 25 | 1. Посмотрите на уже существующие ключи. Запишите имена файлов, |
|---|
| 26 | в которых хранится текущий ZSK и текущий KSK. |
|---|
| 27 | |
|---|
| 28 | $ cd /etc/namedb/keys/ |
|---|
| 29 | $ ls K* |
|---|
| 30 | |
|---|
| 31 | 2. Создайте новый ZSK, которым мы заменим старый. |
|---|
| 32 | |
|---|
| 33 | $ sudo dnssec-keygen -a RSASHA256 -b 1024 -n ZONE mytld |
|---|
| 34 | |
|---|
| 35 | (заменяя mytld именем вашей зоны) |
|---|
| 36 | |
|---|
| 37 | Эта команда выведет что-то вроде: |
|---|
| 38 | |
|---|
| 39 | Kmytld.+008+45000 |
|---|
| 40 | |
|---|
| 41 | Убедитесь, что все файлы ключей могут читаться процессом named: |
|---|
| 42 | |
|---|
| 43 | $ sudo chown bind K* |
|---|
| 44 | $ sudo chmod u+r K* |
|---|
| 45 | $ ls |
|---|
| 46 | |
|---|
| 47 | Теперь у вас должна быть третья пара ключей в ключевом каталоге. Если вы |
|---|
| 48 | проверите содержимое DNSKEY, вы должны увидеть, что поле флагов равно 256 |
|---|
| 49 | (то есть это ZSK, а не KSK). Запишите имя файла с новым ZSK. |
|---|
| 50 | |
|---|
| 51 | 3. Посмотрите на теперешний набор DNSKEY. |
|---|
| 52 | |
|---|
| 53 | $ dig mytld dnskey +multi |
|---|
| 54 | |
|---|
| 55 | Ваша зона должна содержать один KSK и один ZSK (проверьте флаги - 267/256 - |
|---|
| 56 | для того чтобы отличить один от другого). |
|---|
| 57 | |
|---|
| 58 | Нам нужно добавить новый ключ в зону, так что он будет в ней во время |
|---|
| 59 | следующего подписания. В конец файла /etc/namedb/master/mytld, ДОБАВЬТЕ |
|---|
| 60 | новый ключ: |
|---|
| 61 | |
|---|
| 62 | $include "/etc/namedb/keys/Kmytld.+008+45000.key"; |
|---|
| 63 | |
|---|
| 64 | Увеличьте серийный номер. |
|---|
| 65 | |
|---|
| 66 | Сохраните файл и выйдите из редактора |
|---|
| 67 | |
|---|
| 68 | 4. Переподпишите вашу зону, чтобы новый ZSK был подписан, при этом мы НЕ |
|---|
| 69 | будем подписывать зону используя новый ZSK - пока мы только хотим, чтобы |
|---|
| 70 | новый ZSK был подписан текущим ZSK. Это называется "предварительная |
|---|
| 71 | публикация". |
|---|
| 72 | |
|---|
| 73 | $ cd /etc/namedb/keys |
|---|
| 74 | $ sudo dnssec-signzone -o mytld -k Kmytld.+008+52159 ../master/mytld Kmytld.+008+51333 |
|---|
| 75 | |
|---|
| 76 | (метка и идентификатор ключа берется из предыдущей лабораторной работы по |
|---|
| 77 | подписанию вручную) |
|---|
| 78 | |
|---|
| 79 | В примере выше, обратите внимание на то, что мы используем текущий ZSK |
|---|
| 80 | для подписания, а *НЕ* новый - это нужно для того, чтобы убедиться |
|---|
| 81 | в том, что dnssec-signzone не пытается подписывать обоими ZSK. |
|---|
| 82 | Если такое случится, не произойдет ничего "страшного", просто |
|---|
| 83 | размер зоны разбухнет в два раза! |
|---|
| 84 | |
|---|
| 85 | Таким образом, мы говорим dnssec-signzone какие именно ключи использовать |
|---|
| 86 | во время обновления, ИМЕННО для того, чтобы управлять моментами, когда |
|---|
| 87 | новый ключ добавляется, когда он используется для подписей, и когда |
|---|
| 88 | он изымается из обращения. |
|---|
| 89 | |
|---|
| 90 | Вывод команды выше должен быть: |
|---|
| 91 | |
|---|
| 92 | Zone signing complete: |
|---|
| 93 | Algorithm: RSASHA256: KSKs: 1 active, 0 stand-by, 0 revoked |
|---|
| 94 | ZSKs: 1 active, 1 stand-by, 0 revoked |
|---|
| 95 | mytld.signed |
|---|
| 96 | |
|---|
| 97 | Обратите внимание на ZSK: 1 active, 1 stand-by |
|---|
| 98 | |
|---|
| 99 | 5. Посмотрите, что эта операция сделала с зоной. |
|---|
| 100 | |
|---|
| 101 | $ sudo rndc reload mytld |
|---|
| 102 | $ dig @10.20.X.1 mytld dnskey |
|---|
| 103 | $ dig @10.20.X.1 mytld dnskey +dnssec |
|---|
| 104 | $ dig @10.20.X.1 mytld soa +dnssec |
|---|
| 105 | |
|---|
| 106 | Ваша зона теперь должна содержать один KSK и два ZSK; оба ZSK должны |
|---|
| 107 | быть в наборе записей DNSKEY, который должен быть подписан при |
|---|
| 108 | помощи KSK. |
|---|
| 109 | |
|---|
| 110 | ОДНАКО, запись SOA (и другие наборы записей в зоне) должны быть ТОЛЬКО подписаны |
|---|
| 111 | единожды, при помощи старого ZSK. И набор DNSKEY должен показывать все три |
|---|
| 112 | ключа (1 KSK, 2 ZSK). Это называется "предварительная публикация". |
|---|
| 113 | |
|---|
| 114 | Теперь, нам стоит в принципе подождать 2 раза по TTL до появления |
|---|
| 115 | обоих ZSK во всех кэшах (по умолчание это 120 секунд, или 2 минуты, |
|---|
| 116 | в нашей лабораторной, но значения будут другими "в настоящей жизни"). |
|---|
| 117 | В любом случае, давайте подождем по крайней мере 2 минут прежде чем мы |
|---|
| 118 | осуществим подписание с новым ZSK вместо старого ZSK. |
|---|
| 119 | |
|---|
| 120 | После 2 минут, спросите соседа о том, может ли он запросить DNSKEY для |
|---|
| 121 | вашего домен. Они могут проверить кэш класса (10.20.0.230), а также, |
|---|
| 122 | если они его настроили, из собственный кэш. |
|---|
| 123 | |
|---|
| 124 | Опять-таки, команда для запроса ключей будет: |
|---|
| 125 | |
|---|
| 126 | $ dig mytld dnskey |
|---|
| 127 | |
|---|
| 128 | После получения уверенности в том, что "весь интернет" (весь класс) |
|---|
| 129 | может видеть оба ключа, мы может подписать зону новым ZSK. |
|---|
| 130 | |
|---|
| 131 | 6. Осуществите полписание новым ZSK. |
|---|
| 132 | |
|---|
| 133 | Помните, у нас сейчас 3 ключа - в нашей зоне есть: |
|---|
| 134 | |
|---|
| 135 | $include "/etc/namedb/keys/Kmytld.+008+52159.key"; // KSK |
|---|
| 136 | $include "/etc/namedb/keys/Kmytld.+008+51333.key"; // ZSK мы уберем |
|---|
| 137 | $include "/etc/namedb/keys/Kmytld.+008+45000.key"; // новый ZSK |
|---|
| 138 | |
|---|
| 139 | Увеличьте серийный номер. Затем: |
|---|
| 140 | |
|---|
| 141 | $ cd /etc/namedb/keys |
|---|
| 142 | $ sudo dnssec-signzone -o mytld -k Kmytld.+008+52159 ../master/mytld Kmytld.+008+45000 |
|---|
| 143 | |
|---|
| 144 | ... Обратите внимание, что теперь мы используем 45000 (второй ZSK) для подписи, |
|---|
| 145 | а не 51333 как раньше |
|---|
| 146 | |
|---|
| 147 | Теперь, перегрузите зону для распространения изменений |
|---|
| 148 | |
|---|
| 149 | $ sudo rndc reload mytld |
|---|
| 150 | |
|---|
| 151 | При помощи dig проверьте (как в шаге 5), что вы видите только ОДНУ подпись для |
|---|
| 152 | ваших наборов записей - что означает что мы подписываем только ОДНИМ ZSK - вам |
|---|
| 153 | нужно опять-таки подождать время TTL, прежде чем вы можете убрать старый ZSK. |
|---|
| 154 | |
|---|
| 155 | |
|---|
| 156 | 7. Теперь вы должны заметить, используя dig как в шаге 5, что мы подписали только |
|---|
| 157 | лишь одним ключом |
|---|
| 158 | |
|---|
| 159 | $ dig www.mytld +dnssec |
|---|
| 160 | |
|---|
| 161 | Также проверьте, что СТАРЫЙ ZSK все еще опубликован в наборе записей DNSKEY: |
|---|
| 162 | |
|---|
| 163 | $ dig mytld dnskey |
|---|
| 164 | |
|---|
| 165 | Вы по-прежнему должны видеть три ключа. |
|---|
| 166 | |
|---|
| 167 | 8. Изымите старый ZSK из обращения. |
|---|
| 168 | |
|---|
| 169 | После двухминутного ожидания (120с), уберите старый ZSK: |
|---|
| 170 | |
|---|
| 171 | $ cd /etc/namedb/master/ |
|---|
| 172 | |
|---|
| 173 | Отредактируйте файл зоны и добавьте знак комментария (';') впереди |
|---|
| 174 | старого ZSK (проверьте и перепроверьте, какой ключ закомментировать!) |
|---|
| 175 | |
|---|
| 176 | $ sudo ee mytld |
|---|
| 177 | |
|---|
| 178 | $include "/etc/namedb/keys/Kmytld.+008+52159.key"; // KSK |
|---|
| 179 | ;$include "/etc/namedb/keys/Kmytld.+008+51333.key"; // ZSK (закомментирован) |
|---|
| 180 | $include "/etc/namedb/keys/Kmytld.+008+45000.key"; // новый ZSK |
|---|
| 181 | |
|---|
| 182 | Увеличьте серийный номер. |
|---|
| 183 | |
|---|
| 184 | Теперь переподпишите зону, и обратите внимание что мы специфически НЕ |
|---|
| 185 | указываем ZSK, который мы закомментировали: |
|---|
| 186 | |
|---|
| 187 | $ cd /etc/namedb/keys |
|---|
| 188 | $ sudo dnssec-signzone -o mytld -k Kmytld.+008+52159 ../master/mytld Kmytld.+008+45000 |
|---|
| 189 | $ sudo rndc reload mytld |
|---|
| 190 | $ tail /etc/namedb/log/general |
|---|
| 191 | |
|---|
| 192 | 9. Точно как в шаге 5, проверьте что подписи по прежнему работают, и что |
|---|
| 193 | СТАРЫЙ ZSK более не находится в наборе записей DNSKEY. |
|---|
| 194 | |
|---|
| 195 | Также, убедитесь что записи RRSIG (dig +dnssec soa mytld) в вашей зоне |
|---|
| 196 | показывают идентификатор нового ключа ZSK. |
|---|
| 197 | |
|---|
| 198 | Работает ли ваш домен сейчас? :) |
|---|