Моим идеальным решением для отчетов 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