Для tripwire, как бы я отправил отчет по электронной почте только при обнаружении нарушения?

Мое идеальное решение для отчетов tripwire было бы:

  • Ежедневные электронные письма будут генерироваться только в случае обнаружения нарушения

  • Каждое воскресенье отчет отправляется по электронной почте независимо от того, было ли обнаружено нарушение

Меня также интересуют мнения SF'ers о реализации этого. Возможно, это противоречит цели tripwire? Я мог видеть, что кто-то делает этот аргумент, я полагаю.

4 ответа

Решение

Я знаю, что уже выбрал представление г-на Безумного Шляпника в качестве ответа, но, подумав, я подумал о чем-то еще, что может сработать. Кто-нибудь видит, почему это не сработает?

tripwire_out=`/usr/sbin/tripwire --check`; test -z "`echo $tripwire_out | grep 'Total violations found: 0'`"&& echo $tripwire_out

Я проверил его в оболочке, и он работает как задумано. Тем не менее, я еще не заменил работу cron tripwire.

Что, вы парни, думаете?

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

Во-первых, все хосты отправляют свои отчеты по адресу tripwire@company.com, Это легко организовать из каждой записи crontab; Я делаю это с:

# check the tripwires
MAILTO=tripwire@company.com
3 1 * * *  /usr/sbin/tripwire --check

Во-вторых, на почтовом сервере у меня есть запись псевдонима, которая говорит:

# tripwire report autoprocessing
tripwire:   /var/tmp/tripwire

В-третьих, у меня есть задание cron, которое запускается каждое утро для обработки содержимого этого файла, и другое, которое запускается каждый вечер для его удаления (поэтому я смотрю только на самые последние выходные данные):

# report problems with nightly tripwire runs
2 7 * * *  /usr/local/bin/tripwire-check
45 23 * * *  rm -f /var/tmp/tripwire

А вот содержимое /usr/local/bin/tripwire-check; это очень просто:

#!/bin/tcsh
grep "Total violation" /var/tmp/tripwire | grep -vw 0 > /dev/null || exit 0
egrep 'Host name|Total vio' /var/tmp/tripwire | mail -s "NIGHTLY TRIPWIRE VIOLATIONS `date +%Y%m%d`" my-real-address@company.com

Первый grep завершает работу без какой-либо почты или вывода IFO. Все строки, содержащие количество нарушений, также содержат номер 0 как целое слово; вторая, которая вызывается только в случае сбоя первой строки, создает краткую сводную электронную почту и отправляет ее мне.

И, наконец, вот пример выходных данных, когда сообщается об ошибке:

Subject: NIGHTLY TRIPWIRE VIOLATIONS 20050401
Date:   Fri, 1 Apr 2005 07:02:00 +0100
To:     the-real-me@company.com
From:   root <root@company.com>

Host name: fw03b.company.com
Total violations found: 0
Host name: je01b.company.com
Total violations found: 0
Host name: ms01.company.com
Total violations found: 1
Host name: fw05a.company.com
Total violations found: 0
Host name: fw02b.company.com
Total violations found: 0
Host name: fw01b.company.com
Total violations found: 0
Host name: je02o.company.com
Total violations found: 0
Host name: je01a.company.com
Total violations found: 0
Host name: fw04a.company.com
Total violations found: 0
Host name: fw04b.company.com
Total violations found: 0
Host name: je02p.company.com
Total violations found: 0
Host name: fw02a.company.com
Total violations found: 0
Host name: fw03a.company.com
Total violations found: 0
Host name: rp01a.company.com
Total violations found: 0
Host name: rp01b.company.com
Total violations found: 0
Host name: je03o.company.com
Total violations found: 0
Host name: db03.company.com
Total violations found: 0
Host name: lb02p.company.com
Total violations found: 15
Host name: rp02o.company.com
Total violations found: 23
Host name: as05.company.com
Total violations found: 0
Host name: db02.company.com
Total violations found: 0

Надеюсь, что это полезно.

Tripwire имеет возможность подавлять отчеты, которые не имеют ошибок (MAILNOVIOLATIONS), он находится в файле конфигурации...

Вы можете установить 2 различных файла twcfg, один с MAILNOVIOLATIONS, установленным в TRUE, и один с этой опцией, установленной в FALSE.

MAILNOVIOLATIONS =true   (or false)

Тогда ваш cronjob может запустить tripwire, используя флаг -c, чтобы выбрать файл twcfg.

Ежедневный отчет crontab:

30 12 * * 1,2,3,4,5,6 /usr/sbin/tripwire --check -c PATH_TO_DAILY_CFG_FILE | mail -s "Tripwire report for `uname -n`, errors found" your_email@domain.com

Воскресный отчет crontab:

30 12 * * 0 /usr/sbin/tripwire --check -c PATH_TO_WEEKLY_CFG_FILE | mail -s "Weekly Tripwire report for `uname -n`" your_email@domain.com

Таким образом, ваш ежедневный cronjob будет запускать tripwire с использованием файла конфигурации, который будет отправлять отчеты только по электронной почте, если будут обнаружены нарушения, а ваш еженедельный cronjob отправит вам отчет по электронной почте, независимо от того,

ps вышеупомянутые команды crontab взяты из системы, использующей Debian, вам может потребоваться изменить путь к вашему двоичному файлу Tripwire.

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

Просто отправьте число "Всего нарушений найдено" в теме письма, чтобы я продолжал получать уведомления, но мне не нужно открывать их, хотя я вижу, что какое-то нарушение происходит. Таким образом, я также уверен, что tripwire продолжает работать как положено:

tripwire --check > /tmp/twreport; mail -s "Tripwire report for `uname -n`: `grep 'Total violations found' /tmp/twreport`" mymail@example.com < /tmp/twreport; rm /tmp/twreport

Шаг за шагом:

1.- Я сохраняю в файле "twreport" отчет о tripwire

tripwire --check > /tmp/twreport;

2. Я делаю grep в файле twreport для строки "Всего нарушений найдено". Я вставляю это в тему команды mail. И я получаю текстовое содержимое в теле письма:

mail -s "Tripwire report for `uname -n`: `grep 'Total violations found' /tmp/twreport`" mymail@example.com < /tmp/twreport

3.- Наконец, я удаляю файл twreport:

rm /tmp/twreport
Другие вопросы по тегам