Bind, AppArmor et problème de permissions

Bonjour à tous,

Je viens d’installer un serveur DNS secondaire avec Bind sur Debian 6.0.6.

Tout fonctionne correctement (enfin je crois :laughing: ), mais lorsque je consulte les logs de /var/syslog j’ai remarquer ce message :

Apr 23 16:27:09 breguet named[8746]: zone 0.0.10.in-addr.arpa/IN: refresh: could not set file modification time of '/var/cache/bind/db.10': permission denied

j’ai tenté de modifier les permissions avec chmod 775 mais j’ai toujours le même message.

Voici les droits sur /var/cache/bind à ce jour :

-rwxrwxr-x 1 bind bind   430 23 avril 16:29 db.10
-rwxrwxr-x 1 bind bind   534 23 avril 16:24 db.xxx.fr
-rwxrwxr-x 1 root root 14163 23 avril 16:30 db.xxx.local
-rwxrwxr-x 1 root root   744 23 avril 16:36 db.xxx.local.jnl

Après quelques recherches je suis arriver sur AppArmor, j’ai donc regarder de ce côté la.
J’ai bien le dossier /etc/apparmor.d/ avec un fichier à l’intérieur usr.sbin.named qui contient :

[code]# vim:syntax=apparmor

Last Modified: Fri Jun 1 16:43:22 2007

#include <tunables/global>

/usr/sbin/named {
#include <abstractions/base>
#include <abstractions/nameservice>

capability net_bind_service,
capability setgid,
capability setuid,
capability sys_chroot,
capability sys_resource,

/etc/bind should be read-only for bind

/var/lib/bind is for dynamically updated zone (and journal) files.

/var/cache/bind is for slave/stub data, since we’re not the origin of it.

See /usr/share/doc/bind9/README.Debian.gz

/etc/bind/** rw,
/var/lib/bind/** rw,
/var/lib/bind/ rw,
/var/cache/bind/** rw,
/var/cache/bind/ rw,

gssapi

/etc/krb5.keytab kr,
/etc/bind/krb5.keytab kr,

ssl

/etc/ssl/openssl.cnf r,

dnscvsutil package

/var/lib/dnscvsutil/compiled/** rw,

/proc/net/if_inet6 r,
/proc/*/net/if_inet6 r,
/usr/sbin/named mr,
/var/run/named/named.pid w,
/var/run/named/session.key w,

support for resolvconf

/var/run/named/named.options r,

some people like to put logs in /var/log/named/ instead of having

syslog do the heavy lifting.

/var/log/named/** rw,
/var/log/named/ rw,
}
[/code]

et la surprise…, lorsque je fait /etc/init.d/apparmor stop[…], apparmor n’existe pas ! :open_mouth:

Si je lance apt-get install apparmor-profiles, il me dit :

[quote]
apt-get install apparmor-profiles
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances
Lecture des informations d’état… Fait
Aucune version du paquet apparmor-profiles n’est disponible, mais il existe dans la base
de données. Cela signifie en général que le paquet est manquant, qu’il est devenu obsolète
ou qu’il n’est disponible que sur une autre source
Cependant les paquets suivants le remplacent :
bind9

E: Le paquet « apparmor-profiles » n’a pas de version susceptible d’être installée[/quote]

Comment puis-je résoudre ce problème ? doit-je faire une réinstallation par les sources ?

Apparmor n’est pas disponible dans Debian Squeeze. Le fichier /etc/apparmor.d/usr.sbin.named provient du paquet bind9 lui-même. C’est une fausse piste.
named tourne en tant qu’utilisateur bind ou root ?

Bonjour,

Merci pour ta réponse, car je ne comprenais plus rien :laughing:

Comment puis-je savoir ça ?

Avec la sortie de la commande suivante :

Par exemple :

Dans la première colonne on voit que l’utilisateur du processus est “bind”, ce qui est normal puisqu’on voit dans la dernière colonne que named a été invoqué avec l’option “-u bind”. Cette option provient elle-même du fichier /etc/default/bind9 qui est lu par le script de démarrage de BIND :

[code]# run resolvconf?
RESOLVCONF=yes

startup options for the server

OPTIONS="-u bind"
[/code]

La commande me renvoi :

root@breguet:~# ps -Af | grep named
root      8746     1  0 Feb19 ?        00:00:31 named
root      8757     1  0 Feb19 ?        00:00:32 named
root     21384     1  0 Apr23 ?        00:00:00 named
root     21391     1  0 Apr23 ?        00:00:00 named
bind     21467     1  0 Apr23 ?        00:00:00 /usr/sbin/named -4 -u bind
root     21712 21583  0 09:54 pts/0    00:00:00 grep named

Salut,
Il m’est arrivé la même chose il y a peu suite à une mise à jour (je ne sais plus si c’est named ou dhcp…) sur [size=50]Ubuntu[/size]. :wink:
J’ai édité le fichier /etc/apparmor.d/usr.sbin.named (ou dhcp) et le problème à disparu.

Je ne peux pas plus t’aider, je ne sais plus exactement quel fichier j’ai édité, ni quoi…
Mais c’était dans apparmor.d j’en suis certain.

Au pire je te donne une copie des deux fichiers, tu verras bien.

C’est curieux ces quatre instances de named sans arguments dans la ligne de commande, avec comme UID root et des dates différentes. D’ailleurs l’UID 8746 du message d’erreur correspond à l’une d’entre elles. BIND lance bien plusieurs threads named mais sur ma Squeeze ils n’apparaissent pas avec ps -Af, et avec ps -AfL ils ont les mêmes UID, date et ligne de commande que le processus principal :

bind 24776 1 24776 0 4 Mar31 ? 00:00:00 /usr/sbin/named -u bind bind 24776 1 24777 0 4 Mar31 ? 00:03:27 /usr/sbin/named -u bind bind 24776 1 24778 0 4 Mar31 ? 00:00:06 /usr/sbin/named -u bind bind 24776 1 24779 0 4 Mar31 ? 00:00:16 /usr/sbin/named -u bind
Comment ont-ils été lancés ? Tu pourrais terminer toutes les instances de named et redémarrer bind9 proprement avec son script de démarrage ?

J’ai fait un kill de tous ces processus sans argument.

J’ai également fait un stop et start de Bind :

la commande ps -Af me renvoi :

root@breguet:/etc# ps -Af | grep named
bind     21762     1  0 11:27 ?        00:00:00 /usr/sbin/named -4 -u bind
root     21777 21583  0 11:29 pts/0    00:00:00 grep named

C’est un serveur loué à une SSII, je n’ai juste que l’accès ssh.

@lol : oui si tu peux donner le contenu du fichier on ne sait jamais 8)

Bon, et tu as toujours l’erreur maintenant ?

J’ai attendu dans l’espoir que ça marche :slightly_smiling:

Non j’ai toujours le message d’erreur :

tail -f /var/log/syslog | grep named
Apr 24 11:37:01 breguet named[21762]: zone xxx.local/IN: refresh: could not set file modification time of '/var/cache/bind/db.xxx.local': permission denied

Ce n’est pas le même fichier que dans le message initial. Ce fichier-là appartient à root, il faut modifier son propriétaire ou son groupe en bind avec chown. Idem avec le .jnl.

Merci beaucoup :023

J’ai modifier comme les deux autres fichiers avec :

chown bind:bind

Depuis une heure environ je n’ai pas de message d’erreur dans le log (d’habitude c’était au bout de 10/15 mm)

Mais, Il y a un message du type :

J’ai vérifier et apparemment cela provient du underscore :

http://ben.goodacre.name/tech/Bad_owner_name_%28check-names%29_Error_%28BIND%29

est-ce gênant ?

D’après le manuel de BIND 9, pour les zones esclaves il s’agit par défaut d’un avertissement, donc pas gênant. Tu peux le désactiver pour cette zone en ajoutant dans la définition de celle-ci (dans les options de BIND, pas dans le fichier de zone) :

Ou bien pour toutes les zones esclaves, dans les options globales :

Merci beaucoup encore une fois :023 :038