Вопрос или проблема
Логирование привязки не работает
Я использую Ubuntu 18.04.2 и BIND 9.11.3
Я пытаюсь включить журналирование, добавив следующее в /etc/bind/named.conf.local
logging {
channel bind.log {
file "/var/log/bind/bind.log" versions 3 size 20m;
print-time yes;
print-category yes;
print-severity yes;
// Установите уровень серьезности на dynamic, чтобы увидеть все сообщения отладки.
severity info;
};
category default { bind.log; };
};
Команда “named-checkconf /etc/bind/named.conf.local” не сообщает об ошибках. Однако, когда я выполняю:
root@mail:/home/mike# service bind9 restart
root@mail:/home/mike# service bind9 status
Я получаю:
bind9.service - BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2019-07-06 18:48:43 NZST; 2s ago
Docs: man:named(8)
Process: 9812 ExecStop=/usr/sbin/rndc stop (code=exited, status=0/SUCCESS)
Process: 12930 ExecStart=/usr/sbin/named -f $OPTIONS (code=exited, status=1/FAILURE)
Main PID: 12930 (code=exited, status=1/FAILURE)
Jul 06 18:48:43 mail.mydomain.nz named[12930]: automatic empty zone: A.E.F.IP6.ARPA
Jul 06 18:48:43 mail.mydomain.nz named[12930]: automatic empty zone: B.E.F.IP6.ARPA
Jul 06 18:48:43 mail.mydomain.nz named[12930]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
Jul 06 18:48:43 mail.mydomain.nz named[12930]: automatic empty zone: EMPTY.AS112.ARPA
Jul 06 18:48:43 mail.mydomain.nz named[12930]: none:103: 'max-cache-size 90%' - setting to 7086MB (out of 7874MB)
Jul 06 18:48:43 mail.mydomain.nz named[12930]: command channel listening on 127.0.0.1#953
Jul 06 18:48:43 mail.mydomain.nz named[12930]: isc_stdio_open '/var/log/bind/bind.log' failed: permission denied
Jul 06 18:48:43 mail.mydomain.nz named[12930]: configuring logging: permission denied
Jul 06 18:48:43 mail.mydomain.nz named[12930]: loading configuration: permission denied
Jul 06 18:48:43 mail.mydomain.nz named[12930]: exiting (due to fatal error)
Права доступа к /var/log/bind:
root@mail:/home/mike# ls -ld /var/log/bind
drwxrwxr-x 2 root root 4096 Jul 6 17:51 /var/log/bind
В этой записи сказано
isc_stdio_open ‘/var/log/bind9/query.log’ failed: permission denied
“bind:bind” работает, но я не смог это понять. Это ссылка на то, что каталог принадлежит пользователю с именем “bind” и относится к группе “bind”? Я бы прокомментировал этот вопрос, спрашивая дополнительную информацию, но требуется как минимум 50 репутационных баллов.
Я заметил это в syslog:
Jul 6 22:30:52 mail kernel: [1835655.620976] audit: type=1400 audit(1562409052.847:297): apparmor="DENIED" operation="open" profile="/usr/sbin/named" name="/var/log/bind/bind.log" pid=10582 comm="isc-worker0000" requested_mask="ac" denied_mask="ac" fsuid=120 ouid=0
В /etc/apparmor.d/usr.sbin.named
Я изменил
# некоторые люди предпочитают сохранять логи в /var/log/named/ вместо того, чтобы
# syslog выполнял тяжелую работу.
/var/log/named/** rw,
/var/log/named/ rw,
на
# некоторые люди предпочитают сохранять логи в /var/log/named/ вместо того, чтобы
# syslog выполнял тяжелую работу.
/var/log/bind/** rw,
/var/log/bind/ rw,
так как это было название каталога, в который я указал для записи логов.
Затем
root@mail:/home/mike# service apparmor restart
root@mail:/home/mike# service bind9 restart
root@mail:/home/mike# service bind9 status
Все хорошо.
Ответ или решение
Для решения проблемы с включением логгирования в BIND на Ubuntu 18.04.2, необходимо обратить внимание на настройки прав доступа и конфигурации AppArmor. Судя по предоставленной информации, проблема связана с тем, что служба BIND не имеет достаточных прав для записи в файл лога.
Вот пошаговое руководство по устранению данной проблемы:
-
Проверка прав доступа к директории: Убедитесь, что директория
/var/log/bind
существует и имеет правильные права доступа. Командаls -ld /var/log/bind
показывает, что владельцем директории является пользовательroot
, а группа —root
. Это может быть проблемой, так как служба BIND обычно работает от имени пользователяbind
. Чтобы решить эту проблему, вам нужно изменить владельца директории:sudo chown bind:bind /var/log/bind
-
Настройка прав доступа: Убедитесь, что служба BIND имеет возможность записи в эту директорию. Правила доступа могут быть расширены до
drwxrwxr-x
(гдеrwx
для группыbind
):sudo chmod 770 /var/log/bind
-
Настройка AppArmor: Поскольку ваша система использует AppArmor для ограничения действий служб, вам необходимо обновить профиль AppArmor для BIND. Откройте файл
/etc/apparmor.d/usr.sbin.named
и измените строчки, отвечающие за доступ к логам:/var/log/bind/** rw, /var/log/bind/ rw,
Если указанная директория была вместо
/var/log/named/
, вам нужно было изменить эти строки, как вы и сделали. После сохранения изменений выполните команду для перезагрузки AppArmor:sudo service apparmor restart
-
Перезапуск BIND: Теперь, после того как все изменения были внесены, перезапустите службу BIND:
sudo service bind9 restart
-
Проверка статуса: Убедитесь, что служба успешно запустилась и работает без ошибок:
sudo service bind9 status
-
Проверка логов: После успешной перезагрузки, проверьте файл лога для подтверждения того, что записи теперь создаются:
tail -f /var/log/bind/bind.log
Если все шаги были выполнены правильно, вы должны увидеть, что BIND теперь может записывать логи без ошибок. Если возникает ошибка, убедитесь, что вы проверили все права доступа, владельцев директорий и настройки AppArmor.
Если после выполнения всех шагов проблема осталась, проверьте системные логи в /var/log/syslog
для дополнительной информации о возможных ошибках.