Чек-лист действий, который можно использовать, когда есть основания считать, что сервер был скомпрометирован и на нем исполняется вредоносный код. Чаще всего это нужно не для починить здесь и сейчас, а для расследования: понять вектор атаки и масштаб проблемы. Если факт взлома подтвержден - правильное решение почти всегда одно: полная переустановка сервера с переносом только проверенных данных.
1️⃣ Анализ логов (особенно для веб-сервера). Начинать стоит с логов веб-сервера и приложения. Если известно о незакрытой уязвимости - ищем:
её эксплуатацию,
загрузку или запуск web-shell,
подозрительные запросы к конкретным файлам.
Часто уязвимость привязана к одному файлу, тогда имеет смысл искать все обращения именно к нему и цепочку последующих запросов.
2️⃣ Поиск недавно измененных файлов. Не серебряная пуля (mtime легко подменить), но иногда сильно помогает:
find /var/www/site -type f -mtime -30 ! -mtime -1 -printf '%TY-%Tm-%Td %TT %p\n' | sort -r
Команда выводит файлы, измененные за последние 30 дней (кроме сегодняшнего), и сортирует их от новых к старым.
Если вывод большой, то сохраняйте в файл и анализируйте отдельно. В таком виде команда реально полезна.
3️⃣ Системные журналы и планировщики. Проверяем:
системные логи,
логи аутентификации SSH,
cron, at, systemd timers.
Отдельный плюс - если логи отправляются на внешний log-server: злоумышленнику сложнее их подчистить.
Где именно искать запланированные задачи - это тема отдельного разбора, но пропускать ее нельзя.
4️⃣ История команд. Иногда всплывает что-то интересное:
cat ~/.bash_history
cat ~/.mysql_history
sudo -u postgres psql
\s
Да, историю могут чистить, но если этого не сделали, то есть шанс увидеть и ручную активность атакующего.
5️⃣ Проверка целостности пакетов. Сравниваем системные файлы с эталонными хешами из пакетов:
dpkg --verify
rpm -Va
Любые неожиданные изменения в системных бинарниках - серьезный красный флаг.
6️⃣ Пользователи, SSH и домашние каталоги. Проверяем:
системных пользователей и их shell,
authorized_keys,
домашние каталоги пользователей, от которых работают сервисы (web, app, db),
временные директории (
/tmp, /var/tmp).Часто зловреды прячутся именно там.
7️⃣ Сетевые соединения. Смотрим, какие порты слушаются и куда сервер ходит сам:
ss -tulnp | column -t
ss -ntu
Неожиданные исходящие соединения - это один из самых надежных индикаторов компрометации.
8️⃣ Список процессов. Иногда достаточно просто посмотреть глазами:
ps axf
Майнеры, странные бинарники и процессы без имени часто палятся именно здесь.
#linux #security