NFsec Logo

Instalacja serwera bind w środowisku chroot() – Ubuntu 14.04 LTS Server

20/09/2014 w Administracja Brak komentarzy.  (artykuł nr 460, ilość słów: 370)

T

a krótka instrukcja poruszy temat skonfigurowania serwera DNS bind w środowisku chroot() pod katalogiem /var/chroot/named. Na początek w systemie należy zainstalować takie pakiety jak: bind9 oraz dnsutils. Pierwszy z dwóch zapewni nam oprogramowanie BIND samo w sobie podczas, gdy dnsutils takie narzędzia, jak dig oraz nslookup, które będzie można wykorzystać do przeprowadzania zapytań dns oraz troubleshootingu.

apt-get install bind9 dnsutils

Da nam to wersję BIND 9.9.5-3-Ubuntu (Extended Support Version)

root@darkstar:~# named -v
BIND 9.9.5-3-Ubuntu (Extended Support Version)

Pierwszym krokiem będzie modyfikacja pliku /etc/default/bind9. Zawiera on zmienną OPTIONS, która przekazywana jest do serwera named jako zestaw opcji startowych. Należy dodać parametr -t, który definiuje ścieżkę do środowiska chroot().

root@darkstar:~# cat /etc/default/bind9
# run resolvconf?
RESOLVCONF=no

# startup options for the server
OPTIONS="-u bind -t /var/chroot/named"

Następną czynnością jest stworzenie odpowiednich katalogów, w celu odtworzenia środowiska normalnej pracy w systemie:

mkdir -p /var/chroot/named/{dev,etc,var/{cache/bind,run/named/run}}

Posiadając już strukturę katalogów musimy przenieść pliki konfiguracyjne do nowej lokalizacji oraz stworzyć link symboliczny do starej.

mv /etc/bind /var/chroot/named/etc
ln -s /var/chroot/named/etc/bind /etc/bind

Serwer bind wymaga jeszcze odpowiednich urządzeń, jak null oraz random z odpowiednimi prawami:

mknod /var/chroot/named/dev/null c 1 3
mknod /var/chroot/named/dev/random c 1 8
chmod 666 /var/chroot/named/dev/*

Skoro nasz nowy serwer DNS będzie działał z prawami użytkownika bind – musimy zmienić właściciela wszystkich plików w środowisku chroot():

chown -R bind:bind /var/chroot/named

W normalnej instalacji bind korzysta z biblioteki libgost.so (openssl-1.0.0) dlatego musi być ona również dostępna w ograniczonej przestrzeni – w tym celu wykorzystamy “the bind mounts” polecenia mount:

root@darkstar:~# cat /etc/fstab
...
/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines \
/var/chroot/named/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines \
none defaults,bind,auto,nodev,noexec,nosuid 0 0

Posiadając odpowiedni wpis w fstab możemy stworzyć punkt montowania i zamontować zasób:

mkdir -p /var/chroot/named/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines 
mount !$

Pozostało nam urządzenie do logowania zdarzeń, którego bind szuka pod /dev/log. W tym celu wykorzystamy serwer rsyslogd i stworzymy w tym celu odpowiedni socket (/etc/rsyslog.d/60-bind-chroot.conf):

root@darkstar:~# cat /etc/rsyslog.d/60-bind-chroot.conf
$AddUnixListenSocket /var/chroot/named/dev/log
root@darkstar:~# service rsyslog restart

Ostatnim krokiem jest zaktualizowanie konfiguracji AppArmor, aby zezwolić na czynności odczytywania i zapisywania w nowych lokalizacjach:

root@darkstar:~# cat /etc/apparmor.d/local/usr.sbin.named
# Site-specific additions and overrides for usr.sbin.named.
# For more details, please see /etc/apparmor.d/local/README.
/var/chroot/named/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/libgost.so rm,
/var/chroot/named/etc/bind/** r,
/var/chroot/named/dev/** r,
/var/chroot/named/var/cache/bind/** rw,
/var/chroot/named/var/run/named/** rw,
root@darkstar:~# /etc/init.d/apparmor reload

Teraz możemy uruchomić naszego BINDa w środowisku chroot() i przetestować jego działanie:

root@darkstar:~# /etc/init.d/bind9 start
root@darkstar:~# dig +short A www.google.com @localhost
74.125.24.105
74.125.24.106
74.125.24.99
74.125.24.104
74.125.24.103
74.125.24.147

Więcej informacji: Installing chroot()ed BIND – Ubuntu 12.04 Server

Kategorie K a t e g o r i e : Administracja

Tagi T a g i : , , ,

Komentowanie tego wpisu jest zablokowane.