Рейтинг:0

Logrotate Service Failure

флаг cn

My logrotate service failes. It complains about a duplicate entry for modsecurity.

 ● logrotate.service - Rotate log files
       Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled)
       Active: failed (Result: exit-code) since Tue 2021-06-08 14:22:07 CST; 2h 54min ago
         Docs: man:logrotate(8)
               man:logrotate.conf(5)
     Main PID: 15370 (code=exited, status=1/FAILURE)
    
    Jun 08 14:22:07 server1.example.com systemd[1]: Starting Rotate log files...
    Jun 08 14:22:07 server1.example.com logrotate[15370]: error: modsecurity:1 duplicate log entry for /var/log/apache2/modsec_audit.log
    Jun 08 14:22:07 server1.example.com logrotate[15370]: error: found error in file modsecurity, skipping
    Jun 08 14:22:07 server1.example.com systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
    Jun 08 14:22:07 server1.example.com systemd[1]: logrotate.service: Failed with result 'exit-code'.
    Jun 08 14:22:07 server1.example.com systemd[1]: Failed to start Rotate log files.

However, /etc/logrotate.d/modsecurity doesn't contain any duplicates:

/var/log/apache2/modsec_audit.log
{
        rotate 14
        daily
        missingok
        compress
        delaycompress
        notifempty
}

Any thought?

UPDATE:

#grep -r 'modsec_audit.log' /etc/

/etc/logrotate.d/modsecurity:/var/log/apache2/modsec_audit.log
/etc/modsecurity/modsecurity.conf:SecAuditLog /var/log/apache2/modsec_audit.log
/etc/modsecurity/modsecurity.conf-recommended:SecAuditLog /var/log/apache2/modsec_audit.log

So I went through:

 /etc/modsecurity/modsecurity.conf:SecAuditLog /var/log/apache2/modsec_audit.log
 /etc/modsecurity/modsecurity.conf-recommended:SecAuditLog /var/log/apache2/modsec_audit.log

and hashed out the modsec_audit.log values, as below

#SecAuditLogType Serial
#SecAuditLog /var/log/apache2/modsec_audit.log

then ran:
systemctl restart logrotate

Same error

UPDATE 2:

Following @Nikita Kipriyanov advice, I went through and completely hashed out /etc/logrotate.d/modsecurity and now logrotate executes successfully (all mdosec logs hashed out):

#systemctl status logrotate ● logrotate.service - Rotate log files Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled) Active: inactive (dead) since Thu 2021-06-10 09:36:53 CST; 52s ago Docs: man:logrotate(8) man:logrotate.conf(5) Process: 20308 ExecStart=/usr/sbin/logrotate /etc/logrotate.conf (code=exited, status=0/SUCCESS) Main PID: 20308 (code=exited, status=0/SUCCESS)

Jun 10 09:36:52 tester1.example.com systemd[1]: Starting Rotate log files...
Jun 10 09:36:53 tester1.example.com systemd[1]: logrotate.service: Succeeded.
Jun 10 09:36:53 tester1.example.com systemd[1]: Started Rotate log files.

So I enabled the original modsec_audit.log located at /etc/modsecurity/modsecuirty.confto see what would happen. Again, things seem to work correctly

systemctl status logrotate

● logrotate.service - Rotate log files Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled) Active: inactive (dead) since Thu 2021-06-10 09:54:05 CST; 4s ago Docs: man:logrotate(8) man:logrotate.conf(5) Process: 21452 ExecStart=/usr/sbin/logrotate /etc/logrotate.conf (code=exited, status=0/SUCCESS) Main PID: 21452 (code=exited, status=0/SUCCESS)

Jun 10 09:54:05 tester1.example.com systemd[1]: Starting Rotate log files... Jun 10 09:54:05 tester1.example.com systemd[1]: logrotate.service: Succeeded. Jun 10 09:54:05 tester1.example.com systemd[1]: Started Rotate log files.

Same story for /etc/modsecurity/modsecurity-recommended, meaning that the logrotate service only fails when I use
/etc/logrotate.d/modsecuirty and the collision has to be a wildcard as suggested by @Nikita Kipriyanov

Michael Hampton avatar
флаг cz
Найдите другой файл, в котором он определен.
Nikita Kipriyanov avatar
флаг za
Обратите внимание, что повторяющаяся запись может быть подстановочным знаком. Было бы бессмысленно искать именно `modsec_audit`. Это можно проверить, отключив *известный* проблемный файл, и если после этого все начнется, то *есть* коллизия.
Maestro223 avatar
флаг cn
@NikitaKipriyanov Вы были правы, столкновение должно быть подстановочным знаком, я показал работу в посте выше. Как исправить коллизию?
Рейтинг:2
флаг za

Итак, файл /var/log/apache2/modsec_audit.log настроен на вращение /etc/logrotate.d/modsecurity и какой-то другой файл, который покрывает его подстановочным знаком. Например, это может быть определено как /var/журнал/apache2/*журнал, который, конечно же, включает этот файл. Я не знаю, какие еще файлы конфигурации logrotate у вас есть, но велика вероятность, что это /etc/logrotate.d/apache2 или что-то подобное имеет подстановочный знак.

Следовательно /var/log/apache2/modsec_audit.log будет повернут, даже если вы удалите /etc/logrotate.d/modsecurity. Или, лучше, замените его пустым файлом (или файлом, содержащим только комментарий, содержащий ссылку на этот вопрос SF и ответ, чтобы легко запомнить, что произошло). Это самое простое решение проблемы в ближайшее время. В противном случае вы можете удалить /var/log/apache2/modsec_audit.log от того, чтобы быть пойманным с подстановочным знаком; нет способа установить исключения для подстановочных знаков в logrotate, поэтому вам придется переписать подстановочные знаки, чтобы они включали все файлы, кроме этого. Я считаю это обременительным.

Также помните, /etc/logrotate.d/modsecurity и другие конфигурации logrotate, вероятно, были установлены некоторыми пакетами ОС. Эти файлы будут переустановлены при обновлении этих пакетов. В то время как удаленный файл будет просто помещен на место, отредактированный файл не будет. Сработает защита файла конфигурации, и, по крайней мере, вы получите уведомление об обновленной конфигурации и приглашение решить проблему вручную.Таким образом, «создать пустой файл» считается правкой и сэкономит вам немного волос.

И, чтобы решить эту проблему полностью и навсегда, вы должны выяснить, к каким пакетам принадлежат эти конфликтующие файлы, и зарегистрировать ошибку в системе отслеживания ошибок вашего дистрибутива. Вы можете убедить их исправить пакеты, чтобы обновления не содержали эти файлы или эти файлы не конфликтовали, и после обновления ничего не ломалось.

Рейтинг:1
флаг us

Скорее всего, у вас есть повторяющаяся запись, определенная в другом файле.
Проверять /etc/logrotate.conf файл на наличие дубликатов, если их нет в этом файле выдать

grep -rnw '/etc/logrotate.d/' -e 'modsec_audit.log'

найти дубликаты в других файлах.


Вы также можете попробовать поискать в /etc/logrotate.d/rsyslog файл:

grep 'modsec_audit.log' /etc/logrotate.d/rsyslog

Там вы можете найти дубликаты.

Maestro223 avatar
флаг cn
Спасибо за ответ. Я немного запутался в том, как действовать, основываясь на выводе `grep -rnw '/etc/logrotate.d/' -e 'modsec_audit.log``, то есть `/etc/logrotate.d/modsecurity:1:/ вар/журнал/apache2/modsec_audit.log `
p10l avatar
флаг us
Я отредактировал свой ответ и добавил еще один способ поиска дубликатов. Посмотрите, поможет ли это.
p10l avatar
флаг us
Также `/etc/logrotate.conf` может включать другие файлы с директивой `include`. Убедитесь, что во включенных файлах нет дубликатов.
Maestro223 avatar
флаг cn
Я добавил вывод `#grep -r 'modsec_audit.log' /etc/` в свой пост. Я не вижу (или не понимаю), где может быть дубликат.
p10l avatar
флаг us
Ну вот и все. Три дубликата. Один в `/etc/logrotate.d/modsecurity`, один в `/etc/modsecurity/modsecurity.conf` и один в `/etc/modsecurity/modsecurity.conf-recommended`. Удалите два из них и перезапустите службу logrotate.
Maestro223 avatar
флаг cn
Я тоже так думал, поэтому я просмотрел и вырезал `modsec_audit.log` из двух нижних файлов, перечисленных выше, оставив только `/etc/logrotate.d/modsecurity:/var/log/apache2/modsec_audit.log. `. Затем перезапустил службу logrotate... та же ошибка: -/ Я покажу работу выше, через несколько минут.
Maestro223 avatar
флаг cn
Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/126251/discussion-between-yupthatguy-and-pawel-grondal).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.