Логирование привязки не работает

Вопрос или проблема

Логирование привязки не работает

Я использую 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 не имеет достаточных прав для записи в файл лога.

Вот пошаговое руководство по устранению данной проблемы:

  1. Проверка прав доступа к директории: Убедитесь, что директория /var/log/bind существует и имеет правильные права доступа. Команда ls -ld /var/log/bind показывает, что владельцем директории является пользователь root, а группа — root. Это может быть проблемой, так как служба BIND обычно работает от имени пользователя bind. Чтобы решить эту проблему, вам нужно изменить владельца директории:

    sudo chown bind:bind /var/log/bind
  2. Настройка прав доступа: Убедитесь, что служба BIND имеет возможность записи в эту директорию. Правила доступа могут быть расширены до drwxrwxr-x (где rwx для группы bind):

    sudo chmod 770 /var/log/bind
  3. Настройка 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
  4. Перезапуск BIND: Теперь, после того как все изменения были внесены, перезапустите службу BIND:

    sudo service bind9 restart
  5. Проверка статуса: Убедитесь, что служба успешно запустилась и работает без ошибок:

    sudo service bind9 status
  6. Проверка логов: После успешной перезагрузки, проверьте файл лога для подтверждения того, что записи теперь создаются:

    tail -f /var/log/bind/bind.log

Если все шаги были выполнены правильно, вы должны увидеть, что BIND теперь может записывать логи без ошибок. Если возникает ошибка, убедитесь, что вы проверили все права доступа, владельцев директорий и настройки AppArmor.

Если после выполнения всех шагов проблема осталась, проверьте системные логи в /var/log/syslog для дополнительной информации о возможных ошибках.

Оцените материал
Добавить комментарий

Капча загружается...