Previous Entry Add to Memories Share Next Entry
OpenSuse Bind
[info]terset
Прочитав некую массу литературы по настройке серверов на основе Linux, я сделал вывод, что эта извращенная система не такая уж и защищенная, как о ней заявляют. Мало того, настраивать придется немало, чтоб обеспечить хоть какую-то безопасность. Пару дней я потратил на изучение защиты такой нужной в работе службы, как BIND.
opensuse 11.1 имеет в составе такую службу. Версия у BIND 9.5.0-p2 Как же без нее.
Ставится служба легко:
          # zypper in bind bind-chrootenv bind-devel bind-utils
(
сама служба + возможность запускать в chroot + утилиты)

Сервер установлен в директорию /var/lib/named
После установки я через yast создал нужные slave зоны (у меня несколько доменов) и master [doman_name.local]
          # yast dns-server
  • start-up [when booting] - стартовать при загрузке
  • forwarders [policy auto] - добавляю DNS провайдеров (их у меня два)
  • Basic optoins
    • listen-on { 127.0.0.1; lan_ip; }
    • listen-on-v6 { none; }
у меня планируется больше чем 1 DNS сервер я создаю ключ TSIG, я не создаю через yast, поскольку не понятны ни длинна ни какие вообще параметры при создании. Вручную:
# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST host1-host2
создаем директорию /key
 
# mkdir /chroot/named/keys
копируем туда созданные ключи
# cp Khost1-host***.key /chroot/named/keys
# cp Khost1-host***.private /var/lib/named/keys
нам нужно только secret из этих файлов, поэтому делаем так
# cp /chroot/named/keys/Khost1-host2***.private /chroot/named/keys/host1-host2
правим файл DNS1-DNS2 на всех серверах которые участвуют в обмене
# mcedit /chroot/named/keys/host1-host2
key host1-host2 {
algorithm hmac-md5;
secret "gBld5cpImsYodLgBYjh7pw==";
};

копируем этот файл в такую же директорию на сервер обмена
# scp -P 22 /chroot/named/keys/DNS1-DNS2/root@10.10.10.1:/var/lib/named/keys
создаем директорию для серверов обмена и файл с параметрами
# mkdir /etc/named.d/servers
# mcedit /etc/named.d/servers/servers

server 10.10.10.1 {
keys { DNS1-DNS2. ;};
 
};

Подключаем нужные файлы в конфиге /etc/named.conf
 
include "/etc/keys/DNS1-DNS2"
include "/etc/named.d/servers/servers"

Параноики! будем запускать BIND в безопасном окружении. Для этого надо создать дерево каталогов
# mknod /chroot/named/dev/random c 1 8
# mknod /chroot/named/dev/null c 1 3
# chmod 666 /chroot/named/dev/{null,random} 
остальные директории скопируем из /var/lib/named

   /chroot
        +-- named
        +-- dev
        +-- etc
+keys
+ named.d
  +servers
 
        +-- master
        +-- proc
        +-- slave
        +-- var
            +-- run
  
правим /etc/sysconfig/named
# mcedit /etc/sysconfig/named
NAMED_RUN_CHROOTED="yes"  
правим /etc/init.d/named
# mcedit /etc/init.d/named
#CHROOT_PREFIX="/var/lib/named" - меняем на
CHROOT_PREFIX="/chroot/named"

 
выставляем нужные права на директории
# chown root /chroot
# chmod 700 /chroot
# chown named:named /chroot/named
# chmod 700 /chroot/named

запускаем
# /etc/init.d/named start
проверяем
# ps -aux
named     5033  0.0  0.3  46280  8060 ?        Ssl  15:29   0:00 /usr/sbin/named -t /chroot/named -u named
# cat /etc/named.conf

options {
        notify no;
        include "/etc/named.d/forwarders.conf";
        listen-on { 127.0.0.1; 172.16.47.5; };
};

zone "." in {
        type hint;
        file "root.hint";
};

zone "localhost" in {
        type master;
        file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.zone";
};


include "/etc/named.conf.include";

zone "d.local" in {
        allow-transfer { none; };
        masters { 172.16.47.1; };
        file "slave/d.local";
        type slave;
};
zone "dom6.local" in {
        file "dyn/dom6.local";
        type master;
        allow-transfer { any; };
        allow-update { key host1-host2; };
};
zone "46.16.172.in-addr.arpa" in {
        allow-transfer { none; };
        masters { 172.16.47.1; };
        file "slave/46.16.172.in-addr.arpa";
        type slave;
};
zone "47.16.172.in-addr.arpa" in {
        allow-transfer { none; };
        masters { 172.16.47.1; };
        file "slave/47.16.172.in-addr.arpa";
        type slave;
};
zone "16.10.10.in-addr.arpa" in {
        allow-transfer { any; };
        file "master/16.10.10.in-addr.arpa";
        type master;
};
zone "17.10.10.in-addr.arpa" in {
        allow-transfer { any; };
        file "master/17.10.10.in-addr.arpa";
        type master;
};


Для указания серверу, куда пересылать запросы зон, которых нет на сервере, как ни странно, но править /etc/named.d/forwarders не надо. Вместо этого править надо /etc/sysconfig/network/config

NETCONFIG_DNS_STATIC_SERVERS="195.90.128.107"

You are viewing [info]terset's journal