Простое и эффективное общее решение - использовать logcheck .
sudo apt-get install logcheck
[edit /etc/logcheck/logcheck.conf to your liking]
logcheck периодически сканирует все журналы эффективно (начиная с того места, где он остановился в прошлый раз), фильтрует то, что видит, чтобы исключить все, что считается нормальным, и дополнительно отправляет оповещения по электронной почте с сообщениями, которые не соответствуют нормальным / обычным шаблонам.
Основная идея заключается в том, чтобы следить за появлением каких-либо серьезных записей в ваших файлах журнала, все они, все время, так что вам не нужно.
logcheck легко настраивается (man logcheck
). Вы можете настроить все, в том числе:
- частота проверок
- какие файлы журнала проверяются
- что считается нормальным против не
- куда отправлять уведомления (ненормальные события) по электронной почте
и больше. Ваши шаблоны игнорирования (обычные / обычные) находятся в нескольких файлах в /etc/logcheck/ignore.d.*, и вы можете настроить их под свои нужды; в основном вы можете захотеть добавить свои собственные шаблоны для игнорирования. Пакет Ubuntu по умолчанию поставляется с обширным набором файлов с шаблонами игнорирования для многих сервисов, так что добавлять нечего, если ваша система не работает необычно. Существует 3 набора предварительно настроенных профилей игнорируемых файлов: ignore.d.workstation , ignore.d.server и ignore.d.paranoid, из которых вы можете выбрать.
Основная идея logcheck заключается в том, что различные службы, работающие в системе, уже регистрируют ненормальные события. Например, sshd или pam уже регистрируют ошибки аутентификации. Итак, основные недостающие компоненты:
- фильтрация что нормально
- Оповещения службы
Оба из которых предоставляются Logcheck в удобной упаковке. Вы можете комбинировать logcheck с любой другой регистрацией. Например, iptables можно настроить для системного журнала любых попыток сетевого подключения, которые явно не разрешены, путем добавления правил:
iptables -A input -j LOG
iptables -A input -j DROP
сразу после всех разрешающих правил.
Я считаю, что logcheck гораздо более полезен, чем logwatch (предлагается в других ответах), потому что он поставляется с очень большим количеством правил, позволяющих игнорировать то, что считается нормальной деятельностью. Результатом является гораздо более высокое отношение сигнал / шум в оповещениях, которые отправляются по электронной почте. YMMV.
Еще одним преимуществом logcheck является то, что он ортогонален любому сервису, который регистрирует, поэтому нет дублирования функций. Всякий раз, когда вы добавляете новый сервис, который используется syslog
для регистрации событий, ненормальных или нет, в любой файл, под которым /var/log
вы начинаете получать уведомления об этом автоматически.
КАК:
Поскольку он logcheck
уже настроен заранее, две строки в верхней части этого ответа по существу охватывают все, что вам нужно для начала. Просто установите его и перейдите к верхнему файлу конфигурации:
/etc/logcheck/logcheck.conf
чтобы изменить свой адрес logcheck
электронной почты, чтобы получать уведомления по электронной почте.
Вот дружеское упоминание о втором шаге более подробно . Поскольку Ubuntu основана на Debian, эти инструкции должны работать и на Ubuntu.
Вот еще одна хорошая ссылка .
После установки начинается процесс непрерывного улучшения. Со временем вы дорабатываете свои правила, чтобы игнорировать все, что вы уже знаете и не чувствуете беспокойства Этот процесс уточнения так же прост, как добавление текстовых строк в файл в вашем любимом текстовом редакторе.
Каждая строка в файле игнорирования является расширенным регулярным выражением (см. man 7 regex
), Но вы можете использовать простые строки, если они соответствуют строке журнала, которую вы хотите игнорировать. Просто помните , что символы , такие как *
, ?
, «+», []
, ()
являются особенными в регулярном выражении, так что если они на самом деле появляются в логах, вы должны избавиться от них с помощью обратной косой черты \
в игнор файлы.
Другими словами: если вы получаете предупреждение, которое не хотите получать, посмотрите на строку журнала, которая была отправлена вам по электронной почте, и добавьте соответствующий шаблон, как одну строку в любой файл игнорирования по вашему выбору. Я предлагаю использовать в
/etc/logcheck/ignore.d.<yourloglevel>/my-ignores
качестве личного файла игнорирования. Где <yourloglevel>
один из paranoid
, server
или
workstation
(как вы уже выбрали в основном файле конфигурации:) /etc/logcheck/logcheck.conf
. Посмотрите на примеры в других файлах игнорирования, чтобы узнать, как учитывать текст, который постоянно меняется, например, идентификаторы процессов или метки времени. Есть много существующих примеров для изучения.
Последний совет: logcheck
поставляется с небольшой полезной утилитой, logcheck-test
которая очень удобна для тестирования новых правил. man logcheck-test
для деталей.