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 | Работает ли ваш домен сейчас? :) |
---|