Agenda: opendnssec-lab1-vRU.txt

File opendnssec-lab1-vRU.txt, 15.6 KB (added by trac, 5 years ago)
Line 
1Подписание зоны с помощью OpenDNSSEC - часть 1
2
31. Инициализируйте программу "Hardware Security Module"
4
5    Начните с получения прав администратора
6
7    $ sudo -s
8    #
9
10    # softhsm --init-token --slot 0 --label OpenDNSSEC
11
12    (ответьте '1234' на оба вопроса ниже):
13
14    The SO PIN must have a length between 4 and 255 characters.
15    Enter SO PIN: ****
16    The user PIN must have a length between 4 and 255 characters.
17    Enter user PIN: ****
18    The token has been initialized.
19
20    # softhsm --show-slots
21
22    Создайте файлы конфигурации для OpenDNSSEC, скопировав
23    примеры конфигурации, входящие в комплект поставки:
24
25      # cd /usr/local/etc/opendnssec
26      # cp kasp.xml.sample kasp.xml
27      # cp conf.xml.sample conf.xml
28      # cp addns.xml.sample addns.xml
29      # cp zonelist.xml.sample zonelist.xml
30      # chmod 644 *xml
31
322. Поменяйте стратегию по умолчанию с использования NSEC3 на использование NSEC
33
34    Отредактируйте /usr/local/etc/opendnssec/kasp.xml
35
36    Найдите следующий раздел, уберите все строки от <NSEC3> до </NSEC3>
37
38    <NSEC3>
39        <!-- <OptOut/> -->
40        <Resalt>P100D</Resalt>
41        <Hash>
42            <Algorithm>1</Algorithm>
43            <Iterations>5</Iterations>
44            <Salt length="8"/>
45        </Hash>
46    </NSEC3>
47
48    ... и замените их на эту строку:
49
50    <NSEC/>
51
52    Сохраните файл и выйдите из редактора.
53
54    Также, установите правильный путь к libsofthsm.so в conf.xml:
55
56    Поменяйте
57
58<Module>/usr/local/lib/libsofthsm.so</Module>
59
60    на
61
62<Module>/usr/local/lib/softhsm/libsofthsm.so</Module>
63
64    В том же файле, найдите строку:
65
66<Datastore><SQLite>/usr/local/var/opendnssec/kasp.db</SQLite></Datastore>
67
68    Удалите ее, и добавьте:
69
70<Datastore>
71    <MySQL>
72        <Host port="3306">localhost</Host>
73        <Database>opendnssec</Database>
74        <Username>root</Username>
75        <Password></Password>
76    </MySQL>
77</Datastore>
78
79
803. Запустите MySQL и создайте базу данных
81
82    Отредактируйте /etc/rc.conf, и добавьте:
83
84    mysql_enable="YES"
85
86    Сохраните файл и выйдите из редактора, затем запустите:
87
88    # service mysql-server start
89
90    Вы должны увидеть:
91
92    Starting mysql.
93
94    Создайте базу данных:
95
96    # echo "create database opendnssec" | mysql
97
984. Инициализируйте KSM
99
100    # ods-ksmutil setup
101
102*WARNING* This will erase all data in the database; are you sure? [y/N] y
103Enter password:
104
105    Просто нажмите ВВОД вместо ввода пароля.  Вы увидите:
106
107    zonelist filename set to /usr/local/etc/opendnssec/zonelist.xml.
108    kasp filename set to /usr/local/etc/opendnssec/kasp.xml.
109    Repository SoftHSM found
110    No Maximum Capacity set.
111    RequireBackup NOT set; please make sure that you know the potential problems of using keys which are not recoverable
112    INFO: The XML in /usr/local/etc/opendnssec/conf.xml is valid
113    INFO: The XML in /usr/local/etc/opendnssec/zonelist.xml is valid
114    INFO: The XML in /usr/local/etc/opendnssec/kasp.xml is valid
115    Policy default found
116
1175. Установите копию неподписанной зоны (OpenDNSSEC будет ее подписывать)
118
119    Ранее мы сделали бэкап нашей зоны, прежде чем она была подписана BIND9.
120    Сейчас мы используем эту копию и сделаем ее доступной для OpenDNSSEC.
121
122          # cd /etc/namedb/master
123          # cp mytld.backup /usr/local/var/opendnssec/unsigned/mytld
124
125    Увеличьте серийный номер в файле зоны, так что он отражает реальность (YYYYMMDDXY).
126
1276. Добавьте зону в базу данных OpenDNSSEC:
128
129    # ods-ksmutil zone add --zone mytld
130
131    zonelist filename set to /usr/local/etc/opendnssec/zonelist.xml.
132    Imported zone: mytld
133
1347. Запустите OpenDNSSEC!
135
136    Добавьте следующее в /etc/rc.conf
137
138    opendnssec_enable="YES"
139
140    Сохраните файл и выйдите из редактора.
141
142    Теперь, запустите сервис:
143
144    # service opendnssec start
145
146    Вы увидите:
147
148Starting enforcer...
149OpenDNSSEC ods-enforcerd started (version 1.4.3), pid 2923
150Starting signer engine...
151OpenDNSSEC signer engine version 1.4.3
152Engine running.
153
154    # ps ax | grep ods
155
156    41588  ??  SsJ    0:00.11 /usr/local/sbin/ods-enforcerd
157    41593  ??  SsJ    0:00.07 /usr/local/sbin/ods-signerd
158
1598. Убедитесь, что зона подписана
160
161    # ls -l /usr/local/var/opendnssec/signed
162
163    -rw-r--r--  1 root  wheel  2621 Feb 19 09:10 mytld
164
165    Посмотрите содерижимое зоны - обратите внимание на идентификаторы
166    ключей KSK и ZSK.
167
168    Если по какой-то причине вы не видите этого файла в каталоге
169    /usr/local/var/opendnssec/signed/, заставьте подписанта подписать
170    зону:
171
172    # ods-signer sign mytld
173
1749. Немного размышлений
175
176    Хорошо, теперь зона подписана OpenDNSSEC - обратите внимание, что
177    зона была подписана, но вы не выполняли никаких команд для создания
178    ключей.
179
180    Показать ключи под управлением OpenDNSSEC:
181
182    # ods-ksmutil key list
183
184Keys:
185Zone:                           Keytype:      State:    Date of next transition:
186mytld                           KSK           publish   2014-03-21 04:25:30
187mytld                           ZSK           active    2014-03-21 04:32:30
188
189    Обратите внимание, что два ключа были созданы OpenDNSSEC на лету.
190
191    Но BIND пока еще подгружает зону, которая была подписана ранее
192    (или вручную или используя встроенное подписание) - нельзя ли
193    просто изменить конфигурацию в named.conf и указать на зону
194    подписанную OpenDNSSEC?
195
196    Какой KSK сейчас используется?  Какие записи DS были опубликованы
197    в родительской зоне?
198
199    Смогут ли системы разрешения имен проверять подписи в зоне,
200    подписаной OpenDNSSEC?  Почему нет?  Что вам нужно сделать,
201    чтобы все заработало?  (На этот вопрос есть несколько возможных
202    ответов)
203
204    Если вас не заботит проблема валидации, вы можете продолжить
205    выполнять оставшуюся часть этой лабораторной работы.
206
20710. Инструктируйте BIND подгрузить новую зону
208
209    Измените /etc/namedb/named.conf, поменяв определение зоны для "mytld",
210    так что она выглядит примерно следующим образом (УДАЛИТЕ auto-dnssec и т.д.):
211
212zone "mytld" {
213    file "/usr/local/var/opendnssec/signed/mytld";  // <--- измените путь
214    type master;
215    key-directory "/etc/namedb/keys";   // <--- Удалите если наличествует
216    auto-dnssec maintain;               // <--- Удалите если наличествует
217    inline-signing yes;                 // <--- Удалите если наличествует
218};
219
220    Теперь, BIND работает как "пассивный" DSN-сервер, который не
221    подписыват зону - он просто обслуживает зону, подписанную
222    при помощи OpenDNSSEC.
223
224    Перезапустите named:
225
226    # service named restart
227
228    Проверьте логи в /etc/namedb/log/general и убедитесь в том, что зона
229    подгружается правильно.
230
231    Сейчас валидация теми, кто попытается получить данные в вашей зоне,
232    скорее всего не будет успешна.  Подождите несколько минут и попробуйте
233    запросить какую-нибудь запись из вашей зоны:
234
235    # dig @127.0.0.1 www.mytld +dnssec
236
237    На что вы обратили внимание?
238
23911. OpenDNSSEC, перезапускающий BIND
240
241    Что хорошо, вы можете настроить OpenDNSSEC, чтобы он говорил BINDу
242    перезагрузить зону, когда она подписывается.  Таким образом,
243    перегрузка вручную не понадобится.
244
245    Чтобы это сделать, измениете /usr/local/etc/opendnssec/conf.xml
246
247    Найдите строчки:
248
249<!--
250                <NotifyCommand>/usr/sbin/rndc reload %zone</NotifyCommand>
251-->
252
253    ... и удалите комментарии (строки '<!--' and '-->') до и после.
254
255    Сохрание файл, и перезапустите OpenDNSSEC:
256
257    # ods-control stop
258    ...
259    # ods-control start
260
261
26212. Эскпортируйте DS, готовый для закачки:
263
264    Теперь проверьте состояние KSK:
265
266    # ods-ksmutil key list
267
268    Обратите внимание на состояние, в котором находится KSK.
269
270    Если он до сих пор в состоянии (publish) (см.
271    https://wiki.opendnssec.org/display/DOCS/Key+States#KeyStates-Publish для
272    детального описания), то ключ, с точки зрения OpenDNSSEC, не готов к
273    использованию, поскольку не прошло достаточно времени для его распространения.
274   
275    Вы все еще можете экспортировать запись DS, созданную из KSK:
276
277    # ods-ksmutil key export --zone mytld --ds --keystate publish
278
279    Обратите внимание на предупреждение!
280
281WARNING: No active or ready keys seen for this zone. Do not load any DS records to the parent unless you understand the possible consequences.
282
283    Хорошо, давайте сохраним DS в файле, который мы потом сможем закачать:
284
285    # ods-ksmutil key export --zone mytld --ds --keystate publish >/tmp/dsset-mytld.
286
28713. Закачайте DS на сервер
288
289    Если вы не используете web интерфейс:
290
291    # scp /tmp/dsset-mytld. sysadm@a.root-servers.net:
292
29314. Дайте знать администратору!
294
295    Попросите администратора корневой зоны добавить новую запись DS,
296    и посмотрите, сколько времени пройдет прежде чем валидация начнет
297    опять работать для вашей зоны.
298   
299    ... или, если вы используете web интерфейс:
300
301    Залогиньтесь на https://rzm.dnssek.org и исправьте записи DS,
302    проверив DS-записи с "глазами", отмечая их и потом нажимая "Update".
303    После нескольких минут для обновления кэшей, система разрешения
304    имен должна валидировать.  Если у вас не исчезают проблемы,
305    попросите преподавателя очистить кэши.
306
30715. Что происходит с состоянием ключа?
308
309    Почему ключ находится в состоянии "Publish"?  Отчего OpenDNSSEC
310    не жаждет разрешить нам использовать ключ сразу?
311
312    Was it a good idea to upload the DS already ?
313    Было ли это хорошей мыслью, когда мы закачали DS сразу?
314
315    Если вы подождете достаточно долго, вы увидите:
316
317Keys:
318Zone:                           Keytype:      State:    Date of next transition:
319mytld                           KSK           ready     waiting for ds-seen
320mytld                           ZSK           retire    2014-03-21 07:50:38
321mytld                           ZSK           active    2014-03-21 07:54:38
322
323    На самом деле, нам следовало подождать до тех пор пока ключ не
324    перешел бы в состояние "ready", и только потом публиковать DS!
325
326    Почему?  Существовал риск того, что информация о зоне была не полностью
327    распространена (слейвы и кэши).  Только после того как ключ отмечен
328    как "ready", становится безопасным закачивать DS.  OpenDNSSEC использует
329    параметры в стратегических настройках (kasp.xml) чтобы определить
330    эти временные интервалы.
331
33216. Дать знать OpenDNSSEC о том, что DS появлися в родительской зоне
333
334    Когда вы увидели DS в родительской зоне, и KSK находится в состоянии
335    "ready", вы можете дать об этом знать OpenDNSSEC.
336
337    # ods-ksmutil key list -v
338
339Keys:
340Zone:                           Keytype:      State:    Date of next transition (to):  Size:   Algorithm:  CKA_ID:                           Repository:                       Keytag:
341mytld                           KSK           ready     waiting for ds-seen (active)   2048    8           0c4f577032e04e2eb34163382a4524d7  SoftHSM                           44096
342mytld                           ZSK           active    2014-03-21 07:54:38 (retire)   1024    8           bbd9b3e14c3cbb0517d49f79985916bd  SoftHSM                           57634
343mytld                           ZSK           publish   2014-03-21 09:02:55 (ready)    1024    8           7982538186c1b77afe84e6875f3c7bda  SoftHSM                           51991
344
345    -v дает вам идентификаторы ключей, которые вам понадобятся на следующем шаге.
346
347    Запишите идентификатор ключа KSK, находящегося в состоянии `ready`.
348
349    Теперь, выполните:
350
351    # ods-ksmutil key ds-seen --zone mytld --keytag 44096
352
353    ... где 44096 - идентификатор KSK из предыдущего примера.
354
355    Вы увидите:
356
357    Found key with CKA_ID 0c4f577032e04e2eb34163382a4524d7
358    Key 0c4f577032e04e2eb34163382a4524d7 made active
359    Notifying enforcer of new database...
360    Performed a HUP ods-enforcerd
361
362    Теперь, посмотрите ключи снова:
363
364    # ods-ksmutil key list
365
366    Note that the KSK is now marked active.
367    Обратите внимание на то, что KSK теперь отмечен как "активный".