Назад | Перейти на главную страницу

В случае с tripwire: как мне отправлять отчет по электронной почте только при обнаружении нарушения?

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

Мне также интересно мнение специалистов по научной фантастике об этом. Возможно, это противоречит назначению 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 имеет возможность подавлять отчеты, в которых нет ошибок (ПОЧТОВЫЕ НОВИНКИ), это находится в конфигурационном файле ...

Вы можете создать 2 разных файла twcfg, один с Почтовые новости установлен в 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 будет отправлять вам отчет по электронной почте независимо.

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

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

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

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

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

Еще одно возможное простое решение, не совсем то, о чем просят, но, возможно, полезно для кого-то.

Просто отправьте количество «Всего обнаружено нарушений» в теме письма, чтобы я продолжал получать уведомления, но у меня нет необходимости открывать их, хотя я вижу, что происходит некоторое нарушение. Таким образом, я уверен, что 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 для строки «Всего обнаружено нарушений». Я вставляю это в тему почтовой команды. И я получаю текстовое содержимое twreport в теле письма:

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

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

rm /tmp/twreport