Просте і ефективне загальне рішення - використовувати логчек .
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 або пам уже помилки аутентифікації журналу. Отже, основними відсутніми компонентами є:
- фільтрація того, що нормально
- сповіщення служби
Обидва вони забезпечуються зрушенням у зручному пакеті. Ви можете комбінувати журнал перевірки з будь-якими іншими журналами. Наприклад, iptables можна налаштувати так, щоб систематизувати будь-які спроби підключення до мережі, які явно не дозволено додаванням правил:
iptables -A input -j LOG
iptables -A input -j DROP
одразу після всіх правил дозволу.
Я вважаю, що журнал перевірки є набагато кориснішим, ніж 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
для деталей.