{ }
menu zespół linki Logowanie
Stabilny hosting
BSDGuru zawdzięcza
firmie Datanet.pl
Hosting BSDGuru.org - DataNet.pl

Bezpieczniejszy DNS

Wstęp

Jak wiadomo, jedną z najważniejszych usług są serwery DNS. Ich uszkodzenie
lub przejęcie może spowodować, że użytkownicy korzystający z zasobów
naszych serwerów nie będą mieli do nich dostępu.
BIND jest jedną z najczęściej używanych implementacji protokołu DNS.

Przy pisaniu artykułu używano wersji 9.2.1 BINDa.
Wszystkie czynności opisane w tym tekście były testowane na systemie
FreeBSD 5.2.1. Po małych korektach można je stosować na
innych platformach. Jedyną rzeczą, która może sprawić problemy jest "jail"
- we FreeBSD natywny, gdzie indziej nieobecny (tam zastosować należy
"chroot"). W poniższym tekście opiszę tworzenie jaila dla serwera
cachującego.

Przygotowania

Standardowo w systemie FreeBSD znajduje się BIND w wersji 8.x,
ponieważ będziemy korzystać z wersji 9.2.1 musimy ją zainstalować.
W tym celu przechodzimy do odpowiedniego katalogu komendą:

# cd /usr/ports/dns/bind9/

a następnie instalujemy i sprzątamy:

# make PORT_REPLACES_BASE_BIND9=yes install clean

Po skompilowaniu i zainstalowaniu mamy już w systemie wersję 9.2.1.

Tworzenie struktury katalogow

W tym celu możemy wykorzystać skrypt, który napisałem lub zrobić wszystko
ręcznie.


Uwaga: jeśli robimy jaila na systemie z serii 4.x lub wczesne 5.x to trzeba
zmienić ścieżki do bibliotek bo wraz z pojawieniem się wersji 5.1 zmieniły się
położenia plików.

#!/bin/sh

# miejsce gdzie będzie katalog domowy naszego jaila
home=/usr/jails/caching-named

mkdir -v -p $home/chroot/etc/namedb
mkdir -v -p $home/chroot/var/run
mkdir -v $home/etc
mkdir -v $home/lib
mkdir -v $home/dev
mkdir -v $home/libexec
cp -v /lib/libc.so.5 $home/lib/
cp -v /lib/libcrypto.so.3 $home/lib/
cp -v /usr/sbin/named $home/
cp -v /libexec/ld-elf.so.1 $home/libexec
fetch FTP.INTERNIC.NET/domain/named.root
mv -v named.root $home/chroot/etc/namedb/named.root
cp -v /etc/namedb/named.root $home/chroot/etc/namedb/
cp -v /etc/namedb/localhost-v6.rev $home/chroot/etc/namedb/
cp -v /etc/namedb/localhost.rev $home/chroot/etc/namedb/
touch $home/etc/master.passwd
echo "bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin" > $home/etc/master.passwd
pwd_mkdb -d $home/etc/ $home/etc/master.passwd
chown -R bind:bind $home/*

Dodatkowo trzeba jeszcze zaopatrzyć się w pliki konfiguracyjne binda.
Poniżej 4 pliki, które powinny znaleźć się w katalogu $home/chroot/etc/namedb/.

1. named.conf

options {
directory "/etc/namedb";
pid-file "/var/run/named.pid";
};

// Root server hints
zone "." { type hint; file "named.root"; };

// Provide a reverse mapping for the loopback address 127.0.0.1
zone "0.0.127.in-addr.arpa" {
type master;
file "localhost.rev";
notify no;
};

// RFC 3152
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" {
type master;
file "localhost-v6.rev";
notify no;
};

2. localhost.rev

$TTL 3600

@ IN SOA localhost. root.localhost. (
20031123 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.

3. localhost-v6.rev

$TTL 3600

@ IN SOA localhost. root.localhost. (
20031123 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS localhost.
IN PTR localhost.

4. named.root

Plik ten powinien się ściągnąć wraz z wykonaniem powyższego skryptu.
Jeśli tak się nie stanie to trzeba go ręcznie pobrać i umieścić w tym
katalogu.

Uruchomienie

Czas na uruchomienie naszego jaila:

# jail $home caching-named 127.0.0.1 /named -u bind -t /chroot

Aby wszystko uruchamiało się automatycznie podczas startu systemu należy do pliku
/etc/rc.conf dopisać:

jail_enable="YES" # Set to NO to disable starting of any jails
jail_list="cache" # Space separated list of names of jails
jail_set_hostname_allow="NO" # Allow root user in a jail to change its hostname

jail_cache_rootdir="$home" # Jail's root directory
jail_cache_hostname="caching-named" # Jail's hostname
jail_cache_ip="127.0.0.1" # Jail's IP number
jail_cache_exec="/named -u bind -t /chroot" # command to execute in jail

Powinno to wystarczyć do prawidłowej pracy demona w jailu.

Zaznaczam, że ten tekst jest jeszcze w fazie doszlifowywania - poprawki mile widziane.

Autor: 
Bartosz Giza [gizmen@bsdguru.org]
Porozmawiaj o tym artykule na forum: 

tytus, pt., 18/04/2008 - 20:08