Instalacja serwera bind w środowisku chroot() – Ubuntu 14.04 LTS Server
Napisał: Patryk Krawaczyński
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