Bind9 run-root Probleme durch AppArmor unter Ubuntu 10.04 und Plesk 10 beheben
Der Autoinstaller von Plesk installiert Bind9 unter Ubuntu standardmäßig falsch. Sämtliche DNS Einstellungen im Plesk Domain Manager zeigen daher keine Wirkung, da der von Plesk installierte Chrooted Bind nicht verwendet wird – stattdessen wird der „normale“ Bind9 verwendet, welcher keine Informationen über Zonen oder ähnliches von Plesk in den Konfigurationsdateien enthält.
Einstieg
Anbei ein kurzer Überblick:
- Der Standard Ubuntu Bind9 hat alle Konfigurationsdateien in /etc/bind
- Plesk verändert aber sämtliche Konfigurationsdateien in /var/named/run-root/
- Unter /etc/named.conf ist schon ein passender Symlink auf die globale Bind Konfigurationsdatei gesetzt (run-root), wird aber nicht verwendet
Zu dem ganzen Schlamassel kommt noch, dass das im Kernel integrierte AppArmor keinerlei Zugriff außerhalb der Standardverzeichnisse von Bind9 zulässt, also somit auch nicht auf den Chrooted Bind9.
Alles wieder gerade biegen
Zum Anfang ist es sicherlich sinnvoll, zuerst mal für die nötigen Zugriffsrechte zu sorgen. Da die AppArmor Profile über den Zugriffsrechten stehen, bringt also weder chown noch chmod etwas – Eigentlich auch logisch, da die Datei- und Verzeichnisrechte schon stimmen.
Das Problem lässt sich entweder durch komplettes Entfernen von AppArmor lösen oder indem das Bind named AppArmor Profil in den Complain Mode gestellt wird – Was fortan bedeutet, dass sämtliche Aktivitäten von Bind zwar kontrolliert und geloggt werden, aber der Zugriff nicht beschränkt wird. Im Gegensatz dazu steht der Enforce Mode, in dem wir uns momentan befinden.
Damit named ab sofort im complain Mode läuft, reicht ein einfaches:
[code]aa-complain /etc/apparmor.d/usr.sbin.named[/code]
Dies ist sicherlich der schnellere und sinnvollere Weg, da Apparmor nicht einfach mittels apt-get remove entfernt werden kann, sondern zusätzlich noch der Kernel neu eingerichtet werden muss mittels update-initramfs.
Da aber momentan immer noch der ‚falsche‘ Bind gestartet wird und nicht der in /var/named/run-root müssen die Startparameter von Bind9 geändert werden.
Dies ändern wir unter /etc/default/bind9 indem wir statt
[code]# run resolvconf?
RESOLVCONF=yes
# startup options for the server
OPTIONS=“-u bind“[/code]
den OPTIONS Teil entsprechend abändern: Es soll die Konfiguration (-c) aus /etc/named.conf geladen werden. Zudem befindet sich Bind im Chroot Verzeichnis (-t) /var/named/run-root/
[code]# run resolvconf?
RESOLVCONF=yes
OPTIONS=“${OPTIONS} -t /var/named/run-root -c /etc/named.conf -u bind“[/code]
Nach einem Neustart von AppArmor und Bind sollten nun dann die richtigen Zonen geladen werden
[code]service apparmor restart
service bind9 restart[/code]
Weitere Tips
Wie immer bei Problemen hilft der Blick ins Log – Bind schreibt diese meist in das syslog, vereinzelt aber auch in messages
Sollte Bind nicht starten, kann ein tail bei gleichzeitigem Start von Bind auf die entsprechenden Logs für Lösungsansätze sorgen.
[code]tail -f /var/log/messages | grep „named“
tail -f /var/log/syslog | grep „named“[/code]
Sollte Bind rndc Probleme haben (siehe auch im Terminal hierfür rndc status) sollte man sich die in der rndc.conf gespeicherten String ansehen und in alle Konfigurationsdateien von Bind kopieren, da dies darauf schließen lässt, dass irgendwo Inkonsistenz herrscht.
One Response
Vielen Dank!
Die Lösung funktioniert auch bei neueren Versionen von Plesk und Ubuntu.
Jedoch sollte man dazu sagen, dass man für den Befehl „aa-complain /etc/apparmor.d/usr.sbin.named“ das Paket AppArmor Utils benötigt, dass nicht bei allen Pleskversionen mit-installiert wird.