Защита серверов от взлома: смотрю внутрь трафика

Расследую взломы, нахожу бэкдоры и путь входа. Ставлю щит перед уязвимыми панелями и детектор, который по содержимому пакетов отличает клиентов от сканеров.

Признаки, что сервер уже под атакой

Взлом редко выглядит как взлом. Чаще это странная запись в логе, лишняя служба или соединение, которое никто не открывал.

Failed password for root

Тысячи неудачных входов

Пароли подбирают круглосуточно. Вопрос не «будут ли», а что произойдёт, когда один подойдёт.

ESTABLISHED, 0 байт

Пустые соединения на рабочем порту

Кто-то держит соединения и молчит. Так сканеры проверяют, что за сервис отвечает и как его обойти.

Restart=always

Непонятная служба в автозагрузке

Бэкдоры прячутся под системными именами и подделывают даты файлов. Снаружи всё выглядит штатно.

GET /info.php 200

Отладочные скрипты открыты наружу

Одна забытая страница отдаёт пароли и настройки. Её находят автоматические сканеры, а не люди.

PHP 5.x, без обновлений

Старая панель, которую нельзя обновить

Обновить нельзя, выключить тоже. Значит, её нужно закрыть щитом, а не надеяться на удачу.

ESTAB → неизвестный хост

Исходящие соединения в никуда

Обратный shell идёт изнутри наружу, и входящий файрвол его не видит. Такое находят только целенаправленно.

Если узнали свой сервер — не переустанавливайте систему. Сначала снимок диска: иначе вместе со взломом исчезнут и следы того, как он произошёл.

Если взлом уже случился

Переустановка без разбора не помогает: путь входа остаётся открытым, и через неделю всё повторяется. Сначала выясняю, как вошли.

  1. Снимок и изоляция

    Работаю с копией диска или резервной копией, а не с живой системой. Ничего не стираю и не перезапускаю.

  2. Поиск закрепления

    Службы, планировщики, SSH-ключи, подменённые бинарники, подделанные даты файлов, удалённые данные в свободных блоках.

  3. Хронология

    По журналам и метаданным восстанавливаю, кто, когда и что делал. Отделяю доказанное от предположений.

  4. Путь входа и закрытие

    Закрываю найденную дыру и проверяю остальные серверы на те же ключи и бэкдоры: атакующий редко ограничивается одним.

Защита, которая смотрит внутрь соединения

Файрвол решает по адресу и порту. Я разбираю, что внутри соединения и как ведёт себя отправитель, и отсекаю сканеры по нескольким независимым признакам.

Глубокий анализ пакетов

Протокол устройства, задержки, ритм соединений, отпечаток TCP-стека, число сокетов. Каждый признак даёт баллы, порог — блокировка.

Щит перед веб-панелями

Нормализация запросов, закрытие отладочных скриптов, сигнатуры SQL-инъекций и обхода путей, задержки при переборе паролей.

Баны по единой политике

Пороги, рецидивы и белый список в одном месте. Блокировка на уровне ядра, раньше чем запрос дойдёт до приложения.

Аудит парка серверов

SSH, открытые порты, привилегированные контейнеры, устаревшие системы. Отчёт с рисками по каждому серверу и планом исправлений.

Внедряю так, чтобы защита не сломала работу

Плохая защита опаснее её отсутствия: она блокирует своих и её отключают через день. Поэтому каждый шаг проверяемый и обратимый.

  • Сначала наблюдениеНовые правила только пишут в журнал. Вердикты сверяем вместе, и лишь потом включается блокировка.
  • Откат одной командойУ каждого изменения есть проверенный способ вернуть всё как было.
  • Отказ закрытЕсли защитный компонент упал, порт закрывается, а не остаётся открытым без защиты.
  • Минимум правЗащита работает без root, в песочнице systemd, с самотестами. Приложение и его обновления не трогаю.

Честно о пределах

Защита поднимает цену атаки и отсекает всех, кто не старался. Против атакующего, который уже знает ваши ключи, нужны их смена и привязка устройств к сетям. Если это ваш случай, скажу об этом прямо.

Частые вопросы

Сервер, похоже, взломан. Что делать прямо сейчас?

Не переустанавливайте систему и не удаляйте подозрительные файлы: это уничтожит следы. Если возможно, ограничьте сетевой доступ к серверу и сделайте снимок или резервную копию диска. Пароли и ключи меняйте с другой, чистой машины. Затем напишите мне: разбор начинается со снимка, а не с живой системы.

Можно ли защитить старую панель, которую нельзя обновить?

Да. Щит встаёт перед панелью и закрывает опасные пути, отладочные скрипты, атаки в параметрах и перебор паролей. Код панели он не лечит, но сильно уменьшает то, до чего может дотянуться атакующий.

Не заблокирует ли защита наших сотрудников и устройства?

Новые правила сначала работают только на запись в журнал, вердикты сверяем вместе. Администраторы и известные устройства попадают в белый список, а у каждого изменения есть команда отката.

Чем анализ пакетов лучше обычного файрвола?

Файрвол решает по адресу и порту. Анализ пакетов смотрит, что внутри соединения и как ведёт себя отправитель: протокол, задержки, ритм, отпечаток TCP-стека, число соединений. Так сканер отличается от настоящего устройства, даже если стучится в правильный порт.

Защищаете ли вы телефонию?

Да, тот же подход работает для серверов Asterisk: SIP-сканеры и подбор паролей к внутренним номерам видно по поведению. Подробнее — на странице про Asterisk и IP-телефонию.

Опишите, что происходит с сервером

Что заметили, когда началось, какая система и что на ней работает. Если взлом идёт прямо сейчас, так и напишите.

Разберусь и скажу, что делать

Не присылайте пароли и ключи в первом сообщении: доступ согласуем отдельно и безопасным способом.

Что написать

Например: в автозагрузке появилась неизвестная служба, в логах тысячи попыток входа, Ubuntu 20.04, на сервере веб-панель