Как отключить записи списка crontab в журнале cron?

Как отключить записи списка crontab в журнале cron?

У меня есть скрипт на сервере, который запускается каждые несколько минут и, помимо прочего, проверяет, не были ли внедрены какие-то вредоносные записи crontab. Чтобы сделать это, я проверяю crontab всех пользователей, что работает хорошо, но мой /var/log/cronфайл заполняется записями всех списков crontab, поэтому каждый раз, когда я запускаю скрипт, он будет регистрировать все списки crontab следующим образом:

Nov 30 17:16:02 myserv crontab[348610]: (root) LIST (root)
Nov 30 17:16:02 myserv crontab[348611]: (root) LIST (bin)
Nov 30 17:16:02 myserv crontab[348612]: (root) LIST (daemon)
Nov 30 17:16:02 myserv crontab[348613]: (root) LIST (adm)
Nov 30 17:16:02 myserv crontab[348614]: (root) LIST (lp)
Nov 30 17:16:02 myserv crontab[348615]: (root) LIST (sync)
Nov 30 17:16:02 myserv crontab[348616]: (root) LIST (shutdown)
Nov 30 17:16:02 myserv crontab[348617]: (root) LIST (halt)
Nov 30 17:16:02 myserv crontab[348618]: (root) LIST (mail)
Nov 30 17:16:02 myserv crontab[348619]: (root) LIST (operator)
Nov 30 17:16:02 myserv crontab[348620]: (root) LIST (games)
Nov 30 17:16:02 myserv crontab[348621]: (root) LIST (ftp)
Nov 30 17:16:02 myserv crontab[348622]: (root) LIST (smb)
Nov 30 17:16:02 myserv crontab[348623]: (root) LIST (named)
Nov 30 17:16:02 myserv crontab[348624]: (root) LIST (postgres)
Nov 30 17:16:02 myserv crontab[348625]: (root) LIST (mysql)
.....

поэтому он заполняет файл журнала без необходимости. Я играл с разными селекторами, но, похоже, при выборе cron.infoон показывает всю информацию, тогда как cron.noticeон не показывает, когда crontab был отредактирован или выполнен, что мне опять же нравится в моих журналах.

# Log cron stuff
cron.*                                                  /var/log/cron

cron.*похоже, то же самое, что и cron.info Есть идеи, как исключить записи "СПИСОК"? так что это /var/log/cronбудет выглядеть так:

Nov 30 17:24:02 mysrv CROND[349831]: (root) CMDEND (/etc/cron.b/check nout >/dev/null 2>&1)
Nov 30 17:28:01 mysrv CROND[350781]: (root) CMD (/etc/cron.b/check nout >/dev/null 2>&1)

решение1

Попробуйте с cron.none. Если вы используете *звездочку ( * ), то будет соответствовать нулю или более вхождений.

Теперь вы можете изменить правило, чтобы переместить журнал в другой файл./path/to/another/file

ОБНОВЛЯТЬ

Сравнение-Операции

В настоящее время поддерживаются следующие операции сравнения:

содержит

Проверяет, содержится ли строка, указанная в значении, в свойстве. Должно быть точное совпадение, подстановочные знаки не поддерживаются.

равно

Сравнивает предоставленную строку «value» и содержимое свойства. Эти два значения должны быть точно равны, чтобы совпадать. Разница с contains заключается в том, что contains ищет значение в любом месте внутри значения свойства, тогда как для isequal все символы должны быть идентичны. Таким образом, isequal наиболее полезен для таких полей, как syslogtag или FROMHOST, где вы, вероятно, знаете точное содержимое.

начинается с

Проверяет, найдено ли значение точно в начале значения свойства. Например, если вы ищете «val» с

:msg, startswith, "val"

это будет совпадением, если msg содержит «значения в этом сообщении», но не будет совпадением, если msg содержит «В этом сообщении есть значения» (в последнем случае совпадет «содержит»). Обратите внимание, что «startswith» намного быстрее регулярных выражений. Поэтому даже после их реализации может иметь смысл (с точки зрения производительности) использовать «startswith».

регулярное выражение

Сравнивает свойство с предоставленным регулярным выражением POSIX BRE.

ereregex

Сравнивает свойство с предоставленным регулярным выражением POSIX ERE.

Вы можете использовать символ восклицания (!) непосредственно перед операцией сравнения, результат этой операции будет отрицательным. Например, если msgсодержит «Это информативное сообщение», следующий пример не будет соответствовать:

:msg, contains, "error"

но это соответствует:

:msg, !contains, "error"

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

*.* /var/log/allmsgs-including-informational.log
:msg, contains, "informational"  ~
*.* /var/log/allmsgs-but-informational.log

Не пропустите тильду в строке 2! В этом примере все сообщения записываются в файл allmsgs-including-informational.log. Затем все сообщения, содержащие строку «informational», отбрасываются. Это означает, что строки файла конфигурации ниже «строки discard» (номер 2 в нашем примере) не будут применены к этому сообщению. Затем все оставшиеся строки также будут записаны в файл allmsgs-but-informational.log.

решение2

Я нашел решение с фильтром, для тех, кому интересно. Я вставил оператор над cron.info, чтобы удалить нежелательные сообщения. так что мое решение выглядит так:

:msg, contains, "(root) LIST"                           ~
cron.*                                                  /var/log/cron

теперь все строки с записями "(root) LIST" будут отброшены.

Связанный контент