1. Где искать логи аутентификации в Linux?
Мониторинг безопасности и расследование инцидентов начинаются с анализа журналов событий. В зависимости от семейства ОС, логи входа (SSH, sudo, локальные сессии) сохраняются в разных директориях:
- Debian / Ubuntu:
/var/log/auth.log - RHEL / AlmaLinux / CentOS:
/var/log/secure - Системы с systemd-journald:
journalctl -u sshdилиjournalctl -u ssh
203.0.113.10).
2. Анатомия SSH Brute-Force атаки в логах
При подборе паролей автоматизированными ботами в журналах формируются однотипные записи.
Пример успешного входа:
# Вход по SSH-ключу
Accepted publickey for user from 203.0.113.10 port 52341 ssh2: ED25519 SHA256:...
# Вход по паролю
Accepted password for admin from 203.0.113.10 port 52341 ssh2
Пример неудачных попыток (Brute-Force):
Failed password for invalid user admin from 192.0.2.45 port 41232 ssh2
Failed password for root from 192.0.2.45 port 41233 ssh2
3. Инструменты анализа: grep, awk, sort и uniq
Быстрый анализ текстовых логов строится на конвейере (pipeline) из четырех базовых утилит Linux. Разберем роль каждой из них:
1. grep — Фильтрация по шаблону
Ищет строки, содержащие заданный текст или регулярное выражение.
-i— игнорировать регистр.-v— инвертировать поиск (показать всё, где нет шаблона).-o— выводить только совпавшую часть строки (например, IP-адрес).
# Поиск всех строк с неудачным входом
grep "Failed password" /var/log/auth.log
2. awk — Обработка колонок и полей
Разбивает каждую строку на столбцы (по пробелам) и позволяет извлекать нужные поля. Переменная $1 обозначает первое поле, $8 — восьмое, а $0 — всю строку целиком.
# Извлечение 8-й колонки (имени пользователя в auth.log)
awk '{print $8}' /var/log/auth.log
3. sort — Сортировка данных
Упорядочивает строки по алфавиту или по значению чисел.
-n— сортировать как числа (а не как текст).-r— сортировать по убыванию (от большего к меньшему).
# Сортировка чисел в обратном порядке
sort -nr
4. uniq — Подсчет и удаление дубликатов
Находит и группирует **подряд идущие** одинаковые строки.
uniq сравнивает только соседние строки. Для правильного подсчета данные перед ней **обязательно** нужно отсортировать через sort.
-c— выводить количество повторений каждой строки.
# Подсчет количества уникальных записей
sort | uniq -c
4. Консольный конвейер SOC-аналитика в действии
Объединяя утилиты через символ конвейера (|), мы получаем готовые сценарии для расследования инцидентов.
Поиск последних попыток подбора паролей:
grep "Failed password" /var/log/auth.log | tail -n 20
Топ-10 атакованных логинов:
grep "Invalid user" /var/log/auth.log | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
Топ-10 IP-адресов атакующих:
grep "Failed password" /var/log/auth.log | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort | uniq -c | sort -nr | head -n 10
Проверка на компрометацию (успешный вход после перебора):
grep "Accepted" /var/log/auth.log | grep "192.0.2.45"
5. Автоматическая блокировка атак с помощью Fail2ban
Демон Fail2ban считывает логи в реальном времени и блокирует IP-адреса через фаервол при превышении порога ошибочных попыток.
Установка и настройка в Ubuntu:
# Установка пакета
sudo apt update && sudo apt install fail2ban -y
# Создание локальной конфигурации
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Конфигурация джейла /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
# Параметры блокировки
bantime = 1h
findtime = 10m
maxretry = 5
Управление службой и проверка статуса:
# Перезапуск службы
sudo systemctl restart fail2ban
# Проверка заблокированных IP-адресов
sudo fail2ban-client status sshd
# Досрочная разблокировка IP
sudo fail2ban-client set sshd unbanip 192.0.2.45