Прочитав некую массу литературы по настройке серверов на основе 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
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; }
# 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
# 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==";
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
# 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 в безопасном окружении. Для этого надо создать дерево каталогов include "/etc/named.d/servers/servers"
# mknod /chroot/named/dev/random c 1 8
# mknod /chroot/named/dev/null c 1 3
# chmod 666 /chroot/named/dev/{null,random}
# 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
+ named.d
+servers
+-- master
+-- proc
+-- slave
+-- var
+-- run
правим /etc/sysconfig/named
+-- 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"
CHROOT_PREFIX="/chroot/named"
выставляем нужные права на директории
# chown root /chroot
# chmod 700 /chroot
# chmod 700 /chroot
# chown named:named /chroot/named
# chmod 700 /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.1