Простое и эффективное общее решение - использовать 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для деталей.