Agenda: dns-acl-tsig-transfer-security-vRU.txt

File dns-acl-tsig-transfer-security-vRU.txt, 13.0 KB (added by trac, 5 years ago)
Line 
1BIND: ЗАЩИТА СКАЧИВАНИЯ
2-----------------------
3
4Мы собираемся ограничить скачивание ваших зон так, что только
5ваши слейвы могут получать копии зон.
6
7Замечание: если группа преподавателя (например, группа 0) является слейвом
8для вашего домена, то "партнер", упомянутый ниже - это преподаватель,
9ответственный за группу 0.
10
11Защита, основанная на списках контроля доступа
12----------------------------------------------
13
14Для начала, мы включим список контроля доступа, основанный на
15IP адресе -- на машине AUTH1:
16
171. Отредактируйте файл /etc/namedb/named.conf, и в разделе "options",
18   определите, кому разрешено скачивание вашей зоны.
19
20   allow-transfer { 127.0.0.1; ::1; YOUR_OWN_IP; myslaves; };
21
22   ... замените "YOUR_OWN_IP" на IP адрес вашей машины  :)
23
24   Теперь нам нужно определить ACL "myslaves".  Чтобы достичь этого,
25   ПОСЛЕ раздела "options" (найдите символы '};' в конце этого раздела),
26   добавьте что-то вроде этого:
27
28   (Если слейв для вашего домена "MYTLD" - auth1.grp25, например)
29
30acl myslaves { 10.20.25.1; }; // ACL с IP мастера группы 25
31
32    Это означает "myslaves является списком доступа состоящим из IP-адреса 10.20.25.1."
33
34    Если вы также используете NSD, вам также будет нужно добавить IP вашего
35    вторичного сервера в вашей сети в ACL (это применимо только если вы
36    сконфигурировали NSD в качестве вторичного сервера в вашей группе.
37    Если это не так, просто пропустите этот шаг)
38
39acl myslaves { 10.20.25.1; 10.20.X.2; }; // ACL с IP мастера группы 25 и ваш вторичный NSD 10.20.25.2.
40
41        Замечание: вводите правильные значения!  Вы должны указать IP машины, которая
42    является вашим вторичным сервером в классе!
43
442. Перезапустите named
45
46        $ sudo service named restart
47
483. Убедитесь, что вы не поломали скачивание зоны, попросив вашего партнера-слейва выполнить
49   скачивание зоны с ВАШЕЙ машины.
50
51   С их сервера:
52
53   $ dig @auth1.grpX.dns.nsrc.org MYTLD axfr
54
55   Убедитесь, что это по-прежнему работает.
56
574. Теперь попробуйте попросить кого-нибудь другого в классе, чей сервер
58   НЕ упомянут в ACL, попытаться выполнить такую же команду скачивания, как было
59   указано выше.
60
61   Q: Получилось ли у них это сделать?
62
63   Q: Что вы видите в логе /etc/namedb/log/general ?
64      Что вы видите в логе /etc/namedb/log/transfers ?
65
66Защита, основанная на TSIG KEY
67------------------------------
68
69Вместо использования IP-адресов, мы теперь будем пользоваться криптографическими
70ключами для удостоверения прав на скачивание зоны -- это использует TSIG,
71механизм, с помощью которого коммуникация между мастером и слейвом будет
72удостоверяться при использовании такого ключа.
73
741. Выполните:
75
76        $ cd /tmp/
77        $ sudo dnssec-keygen -a HMAC-MD5 -b 128 -n HOST mydomain.key
78
79        Вы увидите что-то вроде такого:
80
81Kmydomain.key.+157+32373   (последнее число будет другим)
82
83        Два файла были созданы:
84
85        $ ls -l K*
86
87Kmydomain.key.+157+32373.key
88Kmydomain.key.+157+32373.private
89
902. Посмотрите содержимое файла с закрытым ключом:
91
92        $ cat Kmydomain.key.+157+32373.private
93
94        Вы увидите что-то похожее на:
95
96Private-key-format: v1.2
97Algorithm: 157 (HMAC_MD5)
98Key: tHTRSKKrmyGmPnzNCf2IRA==
99Bits: AAA=
100
101        ... "Key:" здесь - важная для нас информация, поэтому скопируйте
102        "tHTRSKKrmyGmPnzNCf2IRA==", но конечно не тот вариант что вверху,
103    а тот, который находится в ВАШЕМ файле :)
104
105        Мы его используем на следующих шагах.
106
1073.  Измените ваш named.conf
108
109        $ cd /etc/namedb/
110
111        Отредактируйте файл, и измените блок allow-transfer, так что он выглядит
112    следующим образом:
113
114options {
115        ...
116        allow-transfer { 127.0.0.1; ::1; };  // myslaves убраны!
117        ...
118};
119
120        Замечание: мы убрали "myslaves"
121
122        Теперь, после раздела "options", в конце файла, добавьте декларацию ключа
123
124key "mydomain-key" {
125        algorithm hmac-md5;
126        secret "tHTRSKKrmyGmPnzNCf2IRA=="; // Здесь ваш НАСТОЯЩИЙ ключ!
127
128};
129
130    Не забудьте поменять "mydomain" на имя вашего домена!
131
132        Измение определения вашей зоны:
133
134zone "MYTLD" {
135        type master;
136        file "/etc/namedb/master/mytld";
137
138        allow-transfer { key mydomain-key; };   // <-- добавьте это!
139};
140
141Как вы можете увидеть, мы добавили блок "allow-transfer",
142разрешая скачивание зоны держателям ключа "mydomain-key".
143
144Замечание: блок allow-transfer теперь находится ВНУТРИ определения зоны,
145а не глобально внутри раздела "options" -- BIND может управлять правами
146на скачивание либо глобально, либо отдельно для индивидуальной зоны.
147Мы могли бы разрешить скачивание ГЛОБАЛЬНО (для всех зон), если бы
148мы оставили блок allow-transfer в главном разделе "options".
149
1504. Перезапустите named
151
152        $ sudo service named restart
153
1545. Попытайтесь скачать зону с ДРУГОЙ машины -- попросите ваших соседей сделать:
155
156        $ dig @10.20.XX.1 MYTLD axfr
157
158        Загляните в /etc/namedb/log/general и в /etc/namedb/log/transfers
159
160        Q: На что вы обратили внимание?
161
1626. Потом, попросите их попытаться снова с ключом:
163
164        $ dig @10.20.XX.1 axfr mydomain -y mydomain-key:tHTRSKKrmyGmPnzNCf2IRA==
165
166        Q: Что произошло теперь?
167
168        Загляните в логи снова, особенно в /etc/namedb/log/transfers
169
170
1717. На СЛЕЙВЕ вашего партнера (ваш вторичный сервер - опять-таки, это может
172   бфть ваш преподаватель, если он обеспечивает вторичный сервис для вашего
173   домена).
174
175        Сначала попросите вашего партнера удалить их копию вашей зоны:
176
177        - Пусть он уберет зону из /etc/namedb/slave/MYTLD --
178          помните, это все на машине вашего партнера-СЛЕЙВА:
179
180        $ sudo rm /etc/namedb/slave/MYTLD
181
182        - Попросите его перестартовать named
183       
184        $ sudo service named restart
185
186        Вместе с ним, проверьте, что зона ушла, А ТАКЖЕ что его сервер не может
187    ее получить опять.
188
189        Q: Что вы видите в логах (transfers и general) на МАСТЕРЕ (auth1)?
190
191        Q: Что вы видите в логах (transfers и general) СЛЕЙВА?
192
1938. Все еще на СЛЕЙВЕ (если преподаватель обеспечивает вторичный сервис, он
194   выполнит этот шаг)
195
196Найдите раздел для зоны:
197
198zone "MYTLD" {
199        type slave;
200        masters { 10.20.XX.1; };
201        file "slave/mydomain.dns";
202};
203
204... и добавьте ключ, и блок, который сообщает серверу, какой ключ использовать
205при связи с мастером, "10.20.XX.1":
206
207key mydomain-key {
208        algorithm hmac-md5;
209        secret "tHTRSKKrmyGmPnzNCf2IRA==";
210};
211server 10.20.XX.1 {             // здесь вы помещаете IP ВАШЕГО мастера
212        keys { mydomain-key; };
213};
214
2159. Перезапустите named
216
217        $ sudo service named restart
218
219        На СЛЕЙВЕ:
220
221        Q: Появилась ли зона "MYTLD" в каталоге slave/ ?
222
223        Q: Что вы видите в логах (transfers и general) СЛЕЙВА?
224
225        На МАСТЕРЕ:
226
227        Q: Что вы видите в логах (transfers и general) на МАСТЕРЕ (auth1)?
228
229    Видите ли вы, в общем случае, пользу использования ключей вместо IP ACL?
230
231Дополнительный раздел, если вы обеспечиваете вторичный сервис сами:
232-------------------------------------------------------------------
233
23410. Теперь, сделайте то же самое для вашего сервера NSD ("auth2")
235
236        ... поскольку вы запретили список доступа по IP, ваш AUTH NSD сервер
237    неспособен скачать зону!
238
239    Почитайте документацию для NSD (man nsd.conf) если вы не уверены,
240    как указать ключ в NSD для скачивания зоны.  Измените определение
241    зоны для MYTLD, так что оно теперь использует KEY вместо NOKEY
242    для скачивания зоны с вашего МАСТЕРА (auth1).
243
244    После того, вам будет нужно выполнить "nsdc restart".  Скачивается
245    ли зона?  Не забудьте проверить логи также и на МАСТЕРЕ (auth1)!
246
247Дополнительный раздел, если вы используете Swatch для мониторинга логов:
248------------------------------------------------------------------------
249
25011. Если вы настроили Swatch в предыдущем упражнении, сделайте так, что он
251    сообщает, когда видит запрещенное скачивание зоны:
252
253        Отредактируйте /usr/local/etc/swatch.conf, и добавьте новый раздел --
254    не забудьте использовать TAB вместо пробела в начале строк:
255
256- - - - - - - - - - - - - - -  линия отреза - - - - - - - - - - - - - -
257
258
259watchfor /client ([0-9.:]+)\D\d+: zone transfer '(.*)\/.XFR\/IN' denied$/
260        mail=sysadm,subject=Denied AXFR for zone '$2' from $1
261        threshold type=limit,count=1,seconds=600
262
263- - - - - - - - - - - - - - -  линия отреза - - - - - - - - - - - - - -
264
26512. Остановите Swatch
266
267        $ ps ax | grep swatch
268
269        Найдите идентификатор процесса (число слева), и прибейте его:
270
271        $ sudo kill PID_OF_SWATCH
272
273        Перезапустите swatch (получите права администратора используя команду sudo -s)
274
275        $ sudo -s
276        # /usr/local/bin/swatch -c /usr/local/etc/swatch.conf --tail-file=/etc/namedb/log/general --daemon
277        # exit
278        $
279
280
281        Замечание: Почему вы говорите swatch смотреть в логе "general" ?
282
283    Если вы помните предыдущую лабораторной о логировании, мы сконфигурировали
284    BIND логировать категорию безопасности в канал "general".
285    Поэтому нам нужно мониторить файл /etc/namedb/log/general.
286
28713. Выполните еще раз скачивание зоны как на шаге 4 (с другой машины) и
288    посмотрите, получает ли пользователь sysadm письмо, когда вы пытаетесь
289    скачать зону:
290
291        $ mutt -f /var/mail/sysadm
292
293   Попробуйте скачивание еще пару раз в течение минуты.
294
295   Q: Сколько писем вы получили?  Почему?
296