Команды:
named -v Выводит версию BIND
named-checkconf Проверяет named.conf на наличие ошибок
named-checkzone example.com db.example.com Проверяет файлы зоны на ошибки.
rndc reload Перезагрузка DNS-сервера
dig @a.root-servers.net . ns > named.ca Получене списка корневх серверов
Работа с dig:
dig yandex.ru Поиск адреса
dig yandex.ru mx Поиск МХ-записи
dig @208.67.222.222 yandex.ru soa Запрос у ДНС-сервера SOA-записи для yandex.ru
Записи:
Файл для преобразования имён узлов в адреса назовём db.domain (например db.example.com)
Файл для преобразования адресов в имена узлов назовём db.addr (например db.192.168.1)
Создаём в папке /etc/bind/ следующие файлы:
Первичный ДНС-сервер: (Master)
db.example.com
$TTL 3h
example.com. IN SOA hikaru.example.com. al.example.com. (
1 ; Порядковый номер
3h ; Обновление через 3 часа
1h ; Повторение попытки через 1 час
1w ; Устаревание через 1 неделю
1h ) ; Отрицательное TTL 1 час
; Согласно RFC 1537 cтоит использовать следующие параметры для DNS-серверов высшего уровня:
; Обновление 24 часа
; Повторение попытки 2 часа
; Устаревание 30 дней
; Стандартное TTL 4 дняш
;
; Сервера имён
example.com. IN NS hikaru.example.com. #1й DNS-сервер зоны
example.com. IN NS midori.example.com. #2й DNS-сервер зоны
;
; Записи для почты (FQDN и есть A-запесь, на Hikaru ещё и почтовый сервер)
example.com. IN MX 10 hikaru.example.com.
;
; Адреса узлов
localhost.example.com. IN A 127.0.0.1
hikaru.example.com. IN A 192.168.1.2
suigintou.example.com IN A 192.168.1.3
rayne.example.com IN A 192.168.1.3
;
; Псевдонимы
hikki.example.com. IN CNAME hikaru.example.com.
mi4.example.com. IN A 192.168.1.1
# IN - internet
# Первое имя после SOA - имя первичного DNS-сервера зоны example.com
# Второе имя - адрес электронной почты, управляющего зоной, для использования этого адреса необходимо заменить 1ую «.» на «@».
# NS Запись о DNS-серверах
# A Адресс
# hikki1, hikki15 создаются для возможности проверки сетевых интерфейсов
# MX - mail exchanger
db.192.168.4
$TTL 3h
1.168.192.in-addr.arpa. IN SOA hikaru.example.com. al.example.com (
1 ; Порядковый номер
3h ; Обновление через 3 часа
1h ; Повторение попытки через 1 час
1w ; Устаревание через 1 неделю
1h ) ; Отрицательное TTL 1 час
1.168.192.in-addr.arpa. IN NS hikaru.example.com.
1.168.192.in-addr.arpa. IN NS midori.example.com
;
; Адреса указывающие на канонические имена
2.1.168.192.in-addr.arpa. IN PTR hikaru.example.com.
3.168.192.in-addr.arpa. IN PTR suigintou.example.com.
4.168.192.in-addr.arpa. IN PTR rayne.example.com.
named.conf.local (в Red Hat 1 общий файл конфигурации named.conf)
zone «example.com» in {
type master;
file «/etc/bind/db.example.com»;
};
zone «1.168.192.in-addr.arpa» in {
type master;
file «/etc/bind/db.192.168.1»;
}»
Вторичный DNS-сервер (Slave):
Необходимо скопировать на вторичный DNS-сервер named.conf.local, привести его к виду:
named.conf.local (в Red Hat 1 общий файл конфигурации named.conf)
zone «example.com» in {
type slave;
file «bak.db.example.com»;
masters { 192.168.1.1; };
};
zone «1.168.192.in-addr.arpa» in {
type slave;
file «bak.db.192.168.1»;
masters { 192.168.1.1; };
}»Защита сервера BIND:
Скрываем версию сервера
dig txt chaos version.bind. Даст версию используемого DNS сервера BIND
Для избежания этого необходимо добавить в файл конфигурации следующую запись (/etc/bind/named.conf.options):
options {
directory «/var/cache/bind»;
version none;
};Ограничение запросов.
Для того, чтобы сервер отвечал только из 2х локальных сетей необходимо добавить следующую строку:
options {
directory «/var/cache/bind»;
allow-querry {192.168.1./24; 192.168.0/24; };
};Ограничение запросов для зоны:
acl «our_networks» {192.168.1/24; 192.168.0/24; };
zone «example.com» in {
type slave;
file «bak.db.example.com»;
masters { 192.168.1.1; };
allow-querry { ««our_networks»; };
};
zone «1.168.192.in-addr.arpa» in {
type slave;
file «bak.db.192.168.1»;
masters { 192.168.1.1; };
allow-querry { ««our_networks»; };
}»Предотвращение несанкционированной передачи зоны:
Разрешает получение зоны только c первичного мастера зоны
zone «example.com» in {
type master;
file «db.example.com»;
allow-transfer { 192.168.1/24; 192.168.0/24; };
};Во вторичных серверах необходимо добавить следующую строку:
zone «example.com» in {
type slave;
file «bak.db.example.com»;
masters { 192.168.1.1; };
allow-transfer { none; };
};
zone «1.168.192.in-addr.arpa» in {
type slave;
file «bak.db.192.168.1»;
masters { 192.168.1.1; };
allow-transfer { none; };
}»Так же можно прописать это правило «глобально»:
options {
directory «/var/cache/bind»;
allow-transfer { 192.168.1/24; 192.168.0/24; };
};
Можно настроить передачу данных зоны на основе ключа, для этого необходимо:
Создать ключ командой
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST midori-hikaru.example.com.Полчуим 2 файла:
*.key
*.privateОба содержат одно и то же хэш-значение, необходимо распространить их на все наши DNS-сервера (при этом не скомпроментировав их - например через ssh).
Отредактировать файл конфигурации первичного DNS-сервера:
key midori-hikaru. {
algorithm hmac-md5;
secret «QssdvcytsllfppDzaa=»;
};
zone «example.com» in {
type master;
file «db.example.com»;
allow-transfer { key midori-hikaru.; };
};
zone «1.168.192.in-addr.arpa» in {
type master;
file «db.192.168.1»;
allow-transfer { key midori-hikaru.; };
}»Отредактировать файл конфигурации дополнительного DNS-сервера
key midori-hikaru. {
algorithm hmac-md5;
secret «QssdvcytsllfppDzaa=»;
};
server 192.168.1.1 {
keys { midori-hikaru.; };
};
zone «example.com» in {
type slave;
file «bak.db.example.com»;
masters { 192.168.1.1; };
};
zone «1.168.192.in-addr.arpa» in {
type slave;
file «bak.db.192.168.1»;
masters { 192.168.1.1; };
}»
Запуск BIND с минимальными привелегиями:
Для Debian:
1) Создать /var/named и подкаталоги dev, etc, lib, usr, var
mkdir /var/named
cd /var/named
mkdir -p dev etc/bind lib usr/sbin var/named var/cache/bind var/run/bind/run2) Скопировать named.conf named.conf.options named.conf.local в /var/named/etc/bind
cp /etc/bind/* etc/bind
chown root.bind etc/bind
cd etc/bindchown root.bind db.127.0.0 db.192.168.4 db.cahce db.example.com index.html named.conf \ named.conf.local named.conf.options
chown root.bind var/cache/bind
chmod g+w var/cache/bind
mkdir -p var/run/bind/run
chown root.bind var/run/bind/run
chmod g+w var/run/bind/run
3) Создаём dev/null
mknod dev/null c 2 2
4) Добавляем в /etc/defaul/bind9 опцию -t /var/named
5) Перезапускаем серевер /etc/init.d/bind9 restart
Для Red Hat:
yum install bind-chroot -y Устанавливаем необходимый пакет для создания chroot
Редактируем файл /etc/syconfig/named и добавляем туда строку:
ROOTDIR="/var/named/chroot"Перезапускаем сервер service named restart
«Рекламирующий» DNS-сервер:
Отвечает ТОЛЬКО на нерекурсивные запросы. Задача сообщать информацию о зонах в интернет. Необходимо убедится, что нет клиентов настроенных на этот сервер и сервер не используется как ретранслирующий.
options {
recursion no;
};
«Разрешающий» DNS-сервер:
Выполняет рекурсивные запросы.
acl «internal» {
192.168.1/24; 192.168.0/24;
};
options {
allow-recursion { «internal»; };
};Позволяет посылать рекурсивные запросы только локальным серверам.