Серверна безпека Технічні

Серверні логи як детектор вторгнень: що ваш сервер кричить вам щодня, а ви не чуєте

Фахівець перевіряє серверні логи в дата-центрі для моніторингу безпеки linux сервера

Уявіть ситуацію: ви спокійно п'єте ранкову каву, перевіряєте пошту, а в цей момент хтось методично перебирає паролі до вашого SSH. 300 спроб за хвилину. Ваш сервер фіксує кожну з них - старанно, посекундно, у файлі, який ви не відкривали з моменту налаштування. Серверні логи - це дзеркало заднього виду для вашої інфраструктури. Проблема в тому, що більшість адміністраторів дивляться в це дзеркало лише після аварії. А потрібно - до неї.

Ця стаття не про теорію. Вона про те, як навчитися читати те, що сервер вам уже давно говорить, і перетворити нудні текстові файли на систему раннього попередження, яка працює 24/7 без жодної додаткової підписки.

Чому 90% зламів починаються з рядка, який ніхто не прочитав

За даними звіту Verizon Data Breach Investigations Report 2024, у 83% випадків сліди компрометації були присутні в логах задовго до того, як інцидент виявляли. Не дні - тижні. Іноді місяці. Злочинець вже ходив по вашому серверу, а ви навіть не підозрювали.

Справа в тому, що логи - це не просто файли для аудиту "після факту". Це потік даних у реальному часі, який може розповісти про:

  • Brute-force атаки - сотні невдалих спроб авторизації з однієї IP або розподілених ботнетів
  • Сканування вразливостей - запити до неіснуючих шляхів типу /wp-admin, /phpmyadmin, /.env
  • Ескалацію привілеїв - незвичні sudo-команди або створення нових користувачів
  • Витік даних - аномально великі відповіді сервера на звичайні запити
  • Бекдори - з'єднання на нестандартних портах у нічний час

Один знайомий DevOps-інженер з Варшави розповідав мені, як знайшов зламаний сервер клієнта тільки тому, що випадково помітив у auth.log рядок з успішним входом root о 3:47 ночі з IP-адреси в Індонезії. Ніякий антивірус цього не засік. А лог - засік.

Консультант аналізує дані на планшеті для виявлення зламу сервера по логах
Консультант аналізує дані на планшеті для виявлення зламу сервера по логах

Анатомія серверного логу: що де шукати і як не заблукати

Якщо ви працюєте з Linux-сервером (а це переважна більшість хостингових середовищ), ось головні файли, які треба моніторити щодня. Не раз на місяць. Щодня.

Файл логу Що фіксує На що звертати увагу
/var/log/auth.log (або /var/log/secure) Авторизація, SSH, sudo Failed password, Accepted publickey з невідомих IP
/var/log/syslog Системні події Несподівані перезапуски сервісів, OOM-killer
/var/log/apache2/access.log (або nginx) HTTP-запити Масові 404, SQL-ін'єкції в URL, підозрілі User-Agent
/var/log/apache2/error.log Помилки веб-сервера PHP-помилки, permission denied, segfault
/var/log/fail2ban.log Заблоковані IP Частота банів, повторні атаки з тих самих підмереж
/var/log/kern.log Ядро системи Мережеві аномалії, hardware-помилки

Головне правило: якщо ви не знаєте, де ваші логи - ви не знаєте, чи ваш сервер у безпеці. Це як мати камери спостереження в магазині, але ніколи не дивитися записи.

Практичний мінімум: 5 команд, які покажуть загрози прямо зараз

Не треба встановлювати SIEM-систему за $50 000 на рік, щоб почати. Достатньо терміналу і базових інструментів, які вже є на вашому сервері.

  1. Побачити всі невдалі SSH-спроби за останню добу: grep "Failed password" /var/log/auth.log | tail -50 - якщо бачите більше 100 рядків за годину, це brute-force
  2. Знайти IP-адреси, що атакують найчастіше: grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20
  3. Виявити підозрілі запити до веб-сервера: grep -iE "(union|select|drop|script|eval|base64)" /var/log/nginx/access.log - класичні маркери SQL-ін'єкцій та XSS
  4. Перевірити, хто заходив по SSH успішно: grep "Accepted" /var/log/auth.log | awk '{print $1,$2,$3,$9,$11}' - порівняйте з вашими відомими IP
  5. Відстежити створення нових користувачів: grep "useradd|adduser" /var/log/auth.log - якщо ви нікого не додавали, це червоний прапор

Витратіть 5 хвилин прямо зараз. Відкрийте термінал і запустіть першу команду. Те, що ви побачите, може вас здивувати - або налякати.

Центр кібербезпеки де спеціалісти забезпечують захист від brute-force атак на сервери
Центр кібербезпеки де спеціалісти забезпечують захист від brute-force атак на сервери

Автоматизація: як перетворити логи на живу систему захисту

Ручне читання логів - це як патрулювання вулиці пішки в місті-мільйоннику. Героїчно, але неефективно. Вам потрібна автоматизація, і ось три рівні, залежно від бюджету та навичок.

Рівень 1: Fail2Ban (безкоштовно, 20 хвилин на налаштування)

Fail2Ban читає логи в реальному часі і автоматично блокує IP-адреси після N невдалих спроб. Мінімальна конфігурація для SSH - буквально 10 рядків. За статистикою, правильно налаштований Fail2Ban зменшує кількість brute-force атак на 95-98%.

Рівень 2: Logwatch + кастомні скрипти (безкоштовно, 1-2 години)

Logwatch щоранку надсилає вам дайджест подій: хто заходив, які помилки виникали, які сервіси перезапускалися. Додайте свій bash-скрипт, який шукає конкретні патерни і відправляє alert у Telegram через бота - і ви маєте бюджетну SIEM-систему.

Рівень 3: ELK Stack або Grafana Loki (безкоштовно, але потребує ресурсів)

Для серйозних проєктів з кількома серверами - централізований збір логів. Elasticsearch + Logstash + Kibana дають вам дашборди, графіки аномалій, кореляцію подій. Grafana Loki - легша альтернатива, яка їсть менше RAM.

"Логи без аналізу - це як чорна скринька літака, яку ніхто ніколи не відкриє. Вони мають цінність лише тоді, коли хтось їх читає - людина або машина." - Брюс Шнаєр, криптограф та експерт з кібербезпеки

Типові помилки, які перетворюють логи на макулатуру

Навіть досвідчені адміністратори допускають помилки, що знецінюють всю систему логування. Ось що я бачу найчастіше за 15 років роботи з серверною інфраструктурою.

Помилка перша: логи зберігаються на тому ж сервері. Якщо зловмисник отримав root-доступ, перше, що він зробить - зітре логи. Ваші докази зникнуть разом з ними. Рішення? Відправляйте логи на зовнішній syslog-сервер або в хмарне сховище. Rsyslog з TLS-шифруванням налаштовується за пів години.

Помилка друга: logrotate видаляє старі логи занадто рано. Дефолтна конфігурація часто зберігає лише 4 тижні. А середній час виявлення компрометації - 204 дні (IBM Cost of a Data Breach Report 2024). Бачите проблему? Збільшіть retention мінімум до 90 днів, а краще - до 180.

Помилка третя: ігнорування логів додатків. Всі дивляться auth.log, але забувають про логи WordPress, Laravel, Node.js. А саме там часто фіксуються спроби експлуатації вразливостей конкретного фреймворку.

Помилка четверта: відсутність синхронізації часу. NTP - це не розкіш. Якщо час на сервері відрізняється від реального на 3 хвилини, кореляція подій між різними логами стає неможливою. Одна команда timedatectl set-ntp true - і проблема зникає.

Ілюстрація концепції кібербезпеки та моніторингу безпеки linux сервера від вторгнень
Ілюстрація концепції кібербезпеки та моніторингу безпеки linux сервера від вторгнень

Готовий чекліст безпеки логування: роздрукуйте і повісьте над монітором

Я зібрав мінімальний набір дій, який перетворить ваші логи з мертвого вантажу на робочий інструмент захисту. Це не ідеальна конфігурація - це відправна точка, після якої ви вже не летите всліпу.

  1. Налаштуйте зовнішню доставку логів (rsyslog, Filebeat або хоча б scp за cron)
  2. Встановіть і сконфігуруйте Fail2Ban для SSH, HTTP-auth та поштових сервісів
  3. Збільшіть retention у logrotate до мінімум 90 днів
  4. Налаштуйте Logwatch або аналогічний інструмент для щоденного дайджесту на email
  5. Створіть bash-скрипт для пошуку критичних патернів ("root login", "useradd", "COMMAND=/bin/sh")
  6. Синхронізуйте час через NTP на всіх серверах
  7. Раз на тиждень вручну переглядайте top-20 IP з невдалими спробами входу

Весь цей список можна реалізувати за один вечір. Без бюджету. Без сторонніх сервісів. І він закриє 80% типових векторів атак, які починаються з того, що ніхто не дивився в логи.

Ваш сервер прямо зараз записує все, що з ним відбувається. Питання тільки одне: ви слухаєте - чи чекаєте, поки хтось інший прочитає ці записи замість вас? Відкрийте термінал. Прямо зараз. П'ять хвилин можуть змінити все.