Перейти к основному содержимому
Вернуться в категорию

Сервер взломан: Экстренное реагирование и восстановление

Шаги экстренного реагирования при взломе сервера: обнаружение, изоляция, криминалистический анализ и очистка.

Время чтения: 18 мин Устранение неполадок
взломбезопасностькриминалистикаизоляцияочисткавосстановлениереагирование
Автор
REXE Teknoloji Network & Security Team
Редактор
REXE Teknoloji Technical Editorial
Первая публикация
Последнее обновление

Введение

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

Признаки взлома

Типичные признаки компрометации сервера:

  • Неизвестные процессы или сервисы
  • Аномальное использование CPU/RAM (майнинг криптовалют)
  • Созданы неизвестные учётные записи
  • Неизвестные ключи в SSH authorized_keys
  • Неизвестные задачи в crontab
  • Изменённые системные файлы
  • Аномальный исходящий сетевой трафик
  • Дефейс сайта или перенаправления
  • Рассылка спама

Шаг 1: Не паникуйте и документируйте

hljs bash
# Сохранить текущее состояние
date > /tmp/incident_$(date +%Y%m%d_%H%M%S).log
who >> /tmp/incident_*.log
w >> /tmp/incident_*.log
last -20 >> /tmp/incident_*.log
ps auxf >> /tmp/incident_*.log
netstat -tlnp >> /tmp/incident_*.log
ss -tlnp >> /tmp/incident_*.log

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

Шаг 2: Изоляция

Сетевая изоляция

hljs bash
# Заблокировать все исходящие соединения (кроме SSH)
sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A OUTPUT -j DROP

Завершение активных сессий

hljs bash
# Проверить активные SSH-сессии
who
w

# Завершить подозрительные сессии
sudo pkill -u подозрительный_пользователь

Шаг 3: Криминалистический анализ

Проверка учётных записей

hljs bash
# Список всех пользователей
cat /etc/passwd | grep -v nologin | grep -v false

# Проверка пользователей с UID 0 (права root)
awk -F: '($3 == 0) {print}' /etc/passwd

# Недавно созданные пользователи
ls -lt /home/

# Пользователи с правами sudo
grep -v '^#' /etc/sudoers
ls -la /etc/sudoers.d/

# Проверка SSH authorized_keys
for user_home in /home/*; do
    if [ -f "$user_home/.ssh/authorized_keys" ]; then
        echo "=== $user_home ==="
        cat "$user_home/.ssh/authorized_keys"
    fi
done
cat /root/.ssh/authorized_keys

Анализ процессов

hljs bash
# Все запущенные процессы в виде дерева
ps auxf

# Поиск подозрительных процессов
ps aux | grep -E '(mine|xmr|crypto|kinsing|kdevtmpfsi)'

# Процессы с высоким использованием CPU
top -b -n 1 | head -20

# Проверка скрытых процессов
ls -la /proc/*/exe 2>/dev/null | grep deleted

# Проверка путей файлов процессов
ls -la /proc/[0-9]*/exe 2>/dev/null | grep -v '/usr\|/bin\|/sbin\|/lib'

Проверка crontab

hljs bash
# Crontab root
crontab -l

# Crontab всех пользователей
for user in $(cut -f1 -d: /etc/passwd); do
    crontab -l -u $user 2>/dev/null | grep -v '^#'
done

# Системные cron-директории
ls -la /etc/cron.d/
ls -la /etc/cron.daily/
ls -la /etc/cron.hourly/
cat /etc/crontab

# Таймеры systemd
systemctl list-timers --all

Анализ сетевых соединений

hljs bash
# Проверка активных соединений
ss -tanp
netstat -tanp

# Исходящие соединения
ss -tanp | grep ESTABLISHED | grep -v '127.0.0.1'

# Прослушиваемые порты
ss -tlnp

# Соединения с подозрительными IP
netstat -an | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20

Анализ файловой системы

hljs bash
# Файлы, изменённые за последние 24 часа
find / -mtime -1 -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null

# Файлы, созданные за последние 7 дней
find / -ctime -7 -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null

# Проверка SUID/SGID файлов
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null

# Подозрительные файлы в /tmp
ls -la /tmp/
ls -la /var/tmp/
ls -la /dev/shm/

Анализ логов

hljs bash
# Попытки входа по SSH
grep 'Failed password' /var/log/auth.log | tail -50
grep 'Accepted' /var/log/auth.log | tail -50

# Успешные SSH-входы
last -20
lastlog

# Системные логи
journalctl --since "24 hours ago" | grep -i -E '(error|warning|fail|denied)'

Шаг 4: Очистка

Остановка вредоносных процессов

hljs bash
# Завершить подозрительные процессы
sudo kill -9 <PID>

# Найти и завершить процессы майнеров
sudo pkill -9 -f 'xmr\|mine\|crypto\|kinsing'

# Отключить подозрительные сервисы
sudo systemctl stop подозрительный_сервис
sudo systemctl disable подозрительный_сервис

Удаление вредоносных пользователей

hljs bash
# Заблокировать подозрительного пользователя
sudo usermod -L подозрительный_пользователь

# Удалить пользователя
sudo userdel -r подозрительный_пользователь

# Сменить пароль root
sudo passwd root

Очистка SSH-ключей

hljs bash
# Проверить и очистить все файлы authorized_keys
find / -name authorized_keys -exec cat {} \;

# Оставить только свой ключ
echo "ssh-rsa ВАШ_КЛЮЧ" > /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

Шаг 5: Усиление безопасности

Безопасность SSH

hljs bash
# /etc/ssh/sshd_config
Port 2222
PermitRootLogin prohibit-password
PasswordAuthentication no
MaxAuthTries 3
AllowUsers имя_пользователя

sudo systemctl restart sshd

Установка Fail2ban

hljs bash
sudo apt install fail2ban -y

# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Обновление системы

hljs bash
sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt install unattended-upgrades -y

Шаг 6: Восстановление из резервной копии

Если очистка недостаточна, может потребоваться чистая установка:

hljs bash
# 1. Резервное копирование важных данных
tar -czf /tmp/backup_data.tar.gz /var/www/ /home/

# 2. Переустановка ОС через панель REXE
# my.rexe.tr > Услуги > Переустановка ОС

# 3. Усиление безопасности после чистой установки
# 4. Восстановление только файлов данных (НЕ конфигурационных файлов)

При восстановлении из резервной копии НЕ восстанавливайте конфигурационные файлы! Злоумышленник мог добавить в них бэкдоры.

Заключение

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

Часто задаваемые вопросы

Как узнать, что мой сервер взломан?

Типичные признаки: аномальное использование CPU/RAM, неизвестные процессы, новые учётные записи, изменённые файлы, аномальный сетевой трафик и рассылка спама. Проверьте командами 'ps auxf', 'ss -tanp' и 'last'.

Нужно ли немедленно выключить сервер?

Нет! Немедленное выключение может привести к потере криминалистических улик. Сначала задокументируйте текущее состояние, затем выполните сетевую изоляцию.

Очистка или переустановка?

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

Можно ли восстановить данные после взлома?

Да, но будьте осторожны. Можно сохранить файлы данных (базы данных, веб-файлы), но не восстанавливайте конфигурационные и исполняемые файлы из резервной копии.

Как предотвратить взломы в будущем?

Используйте аутентификацию по SSH-ключам, установите Fail2ban, регулярно обновляйте систему, используйте надёжные пароли, отключите ненужные сервисы и правильно настройте правила файрвола Path Panel.

Связанные статьи

Сетевой трафикВходящий GbpsИсходящий Gbps