Сервер взломан или атакован: что делать
Признаки взлома, первые шаги в аккаунте и панели, проверки на сервере, чистое восстановление и действия при внешней атаке.
На этой странице
Если вы подозреваете, что кто-то проник на ваш сервер или что сервер атакуют извне, выполните шаги ниже по порядку: защитите аккаунт blackbox.md, защитите доступ к серверу в панели app.blackbox.md (страница «Мои серверы», app.blackbox.md/my-servers, меню «Инфраструктура» → «Мои серверы»), проверьте сервер и разверните всё заново на чистом сервере. Команды выполняются на сервере по SSH от имени root (Подключение к серверу по SSH (Windows, macOS, Linux)).
Доступно: владельцу аккаунта blackbox.md, который заказал сервер. Команды проверки — всем, у кого есть доступ root по SSH к серверу. На карточках с пометкой «Обслуживается» кнопок панели нет — по таким серверам пишите нам напрямую.
Признаки взлома
| Признак | Как проверить |
|---|---|
| Неизвестные процессы загружают процессор, например майнеры криптовалют | ps aux (шаг 3) |
| Необъяснимый исходящий трафик, соединения с неизвестными адресами | ss -tunap (шаг 3) |
| Очередь писем растёт, хотя вы не делаете рассылок | mailq, если работает почтовый сервер |
| Системные пользователи или задания cron, которых вы не создавали | шаг 3 |
| В разделе «Установленные ключи» есть ключ, который вы не добавляли | карточка сервера (шаг 2) |
| Изменённые файлы сайта, чужие перенаправления, новые PHP-файлы | find (шаг 3) |
| Успешные входы с незнакомых IP-адресов | last (шаг 3) |
| BLACKBOX переслал вам жалобу на злоупотребление | письмо от поддержки |
Прежде чем искать чужие ключи, найдите два ключа, которые BLACKBOX добавляет на новые серверы: «Ключ управления (blackbox.md)» и ключ AI-агента с комментарием blackbox-agent-…. Это не признаки взлома: Ключи BLACKBOX на вашем сервере. Но учтите: комментарий к ключу задаёт тот, кто его добавляет, поэтому злоумышленник может подписать свой ключ так же. Если строк blackbox-agent-… несколько или вы сомневаетесь, удалите их (шаг 2): панель от ключа агента не зависит.
Что сделать в первую очередь
Если сервер прямо сейчас атакует другие системы или рассылает спам (жалоба от BLACKBOX, растущая очередь писем, большой исходящий трафик):
- На странице «Мои серверы» в карточке сервера нажмите «Остановить» и подтвердите «Остановить ИМЯ_СЕРВЕРА?».
- Сразу напишите в поддержку (раздел «Что отправить в поддержку» ниже).
Остановленный сервер по-прежнему оплачивается, а «Сбросить пароль», список «Установленные ключи» и удаление ключей не работают: для них сервер должен быть запущен. Запускайте его снова кнопкой «Запустить» только тогда, когда будете готовы выполнить шаги ниже: при запуске могут снова заработать и программы злоумышленника (Перезагрузка, остановка и запуск сервера).
В остальных случаях сервер не останавливайте: сначала выполните шаги 1 и 2, пока сервер работает и отвечает по SSH.
Шаг 1. Защитите аккаунт blackbox.md
- Смените пароль аккаунта: «Личный кабинет» → «Профиль» → раздел «Безопасность аккаунта» → «Пароль» → «Изменить пароль». Заполните «Текущий пароль» и «Новый пароль» и нажмите «Сохранить пароль». Появится «Пароль изменён. Пожалуйста, войдите снова.», и вы автоматически выйдете из аккаунта. Все сессии на blackbox.md завершатся, а все API-токены, созданные до смены пароля, перестанут работать (Смена пароля аккаунта).
- Войдите с новым паролем и откройте «API-токены». Если в столбце «Последнее использование» стоит недавняя дата, а вы этим токеном не пользовались, он попал в чужие руки. Нажмите «Отозвать» у каждого старого токена (список не показывает, что смена пароля их уже отключила) и подтвердите «Отозвать этот токен? Любой AI-клиент, использующий его, потеряет доступ немедленно.» Новые токены создавайте только для AI-клиентов, которыми пользуетесь (API-токены: создание, копирование и отзыв).
- В разделе «SSH-ключи» удалите кнопкой «Удалить» ключи, которые вы не узнаёте. Удаление здесь не убирает ключ с серверов (шаг 2).
- В разделах «Заказы» и «Баланс» убедитесь, что нет заказов или платежей, которых вы не делали.
- Откройте панель кнопкой «Открыть панель» (или пунктом «Панель управления» в меню аккаунта). В панели перейдите в «Настройки» → «Сессии», нажмите «Выйти везде» и подтвердите «Завершить все сессии этого аккаунта, включая текущую? Потребуется войти снова.» Все сессии в панели завершатся, а запомненные для 2FA устройства будут забыты. Затем снова откройте панель из аккаунта (Настройки панели: профиль, пароль и сессии).
Аккаунт создан через Google или GitLab
У такого аккаунта нет пароля на blackbox.md, поэтому раздела «Пароль» в профиле нет. Смените пароль аккаунта Google или GitLab, включите там двухфакторную аутентификацию и завершите активные сессии. API-токены автоматически не отключаются: отзовите их по одному кнопкой «Отозвать». Остальные шаги те же (Вход через Google или GitLab).
Шаг 2. Защитите доступ к серверу в панели
Работайте в карточке сервера на странице «Мои серверы». Если аккаунтом тоже мог воспользоваться кто-то другой, повторите шаги для каждого сервера.
- Нажмите «Сбросить пароль» и подтвердите «Сбросить пароль для ИМЯ_СЕРВЕРА? Текущий пароль перестанет работать немедленно.» Новый пароль root появится в карточке, в строках «Пользователь» и «Пароль»; сохраните его в менеджере паролей. Если появилось
reset_failed, пароль не изменился: обычно это значит, что панель не смогла подключиться к серверу. См. Сброс пароля root и напишите нам. - Нажмите «Добавить SSH-ключ» и проверьте каждую строку в разделе «Установленные ключи». Оставьте «Ключ управления (blackbox.md)» (у него нет кнопки «Удалить») и свои ключи. Для любого другого ключа, который вы не узнаёте, запишите отпечаток и комментарий, затем нажмите «Удалить» и подтвердите «Удалить ключ SHA256:… с этого сервера?». Появится «Ключ удалён.»
- Так же удалите ключ AI-агента (
blackbox-agent-…), если вы не пользуетесь SSH-доступом через AI или если API-токены могли попасть в чужие руки: AI-ассистент с разрешением «Просматривать пароли/доступы к серверам» может получить этот ключ. Если SSH-доступ через AI вам нужен и дальше, после удаления запросите новый ключ сregenerate=true; без этого параметра вернётся старый ключ (SSH-доступ и SSH-ключи через AI-ассистента). - Если вашего ключа на сервере ещё нет, добавьте его там же («Использовать сохранённый ключ» или «Вставить новый ключ» → «Добавить ключ»). Подключитесь с этим ключом в новом окне терминала и не закрывайте эту сессию (Добавление и удаление SSH-ключей на сервере).
- Убедившись, что ваш ключ работает, нажмите «Отключить вход по паролю» и подтвердите. В карточке появится «Только ключ» (Включение и отключение входа по паролю по SSH).
Важно Не удаляйте из
authorized_keysключ управления (в панели — «Ключ управления (blackbox.md)») и не ставьтеPermitRootLogin no: и то и другое блокирует сброс пароля и управление ключами из панели. Веб-консоли и VNC у клиентов нет. Прежде чем менять настройки SSH или файрвола, держите открытой вторую SSH-сессию; если доступ потерян, напишите в поддержку.
Шаг 3. Проверьте сервер
Команды ниже только читают информацию. Сохраните их вывод на своём компьютере и запишите, что нашли: процессы, IP-адреса, даты, пути к файлам. Не удаляйте файлы и не завершайте процессы наугад: злоумышленники обычно оставляют несколько путей возврата, а удалённое уже нельзя проанализировать.
Ubuntu и Debian
who
last -n 30
lastb -n 30
journalctl -u ssh --since "7 days ago" | grep -E "Accepted|Failed password|Invalid user"
ls -la /var/spool/cron/crontabsAlmaLinux и CentOS Stream
who
last -n 30
lastb -n 30
journalctl -u sshd --since "7 days ago" | grep -E "Accepted|Failed password|Invalid user"
ls -la /var/spool/cronwho показывает, кто подключён сейчас, last — успешные входы, lastb — неудачные попытки (много неудачных попыток — это нормально). В журнале строки Accepted — успешные входы с указанием способа (password или publickey) и IP-адреса; для publickey в конце строки указан и отпечаток ключа (SHA256:…) — сравните его со списком «Установленные ключи». Если команды last нет, пользуйтесь только journalctl. Последняя команда показывает, у каких пользователей есть задания cron: каждый файл назван по имени пользователя.
Процессы и соединения
ps aux --sort=-%cpu | head -n 15
ls -l /proc/PID/exe
ss -tunap
ls -la /tmp /var/tmp /dev/shmЗамените PID числом из второго столбца подозрительного процесса: ссылка exe показывает настоящую программу. Путь в /tmp или /dev/shm либо пометка (deleted) — плохие признаки. В выводе ss ищите соединения ESTAB с незнакомыми адресами и портами и имя программы в users:((…)).
Задания по расписанию, службы, пользователи и ключи
crontab -l
cat /etc/crontab
ls -la /etc/cron.*
systemctl list-timers --all
systemctl list-units --type=service --state=running
awk -F: '$3 == 0 || $3 >= 1000 {print $1, $3, $6, $7}' /etc/passwd
getent group sudo wheel
cat /root/.ssh/authorized_keys
ls -la /home/*/.ssh/authorized_keysUID 0 должен быть только у root. Учётные записи с UID от 1000 и выше — это обычные пользователи (nobody с UID 65534 — это нормально): убедитесь, что вы знаете их все, как и участников групп sudo и wheel. Подозрительны строки в cron и службах, которые скачивают и запускают скрипты (curl, wget).
Файлы сайта
find /var/www -type f -mtime -7 -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort | tail -n 50
find /var/www -path "*uploads*" -name "*.php"Если сайт лежит в другом каталоге, замените /var/www; чтобы охватить больший период, увеличьте 7 (дней). PHP-файлы в каталогах загрузок (например, wp-content/uploads в WordPress) очень подозрительны: проверьте каждый.
Шаг 4. Разверните чистый сервер
Опасно Взломанному серверу больше нельзя доверять, даже если вы удалили всё, что нашли: могли остаться незамеченные ключи, пользователи, задания по расписанию или изменённые программы. Надёжный путь — сервер, установленный с нуля.
Кнопки переустановки операционной системы в панели нет. Порядок действий:
- Закажите новый сервер (Оформление заказа по шагам). На шаге «SSH-ключ для сервера» прикрепите свой ключ и оставьте отмеченным флажок «Отключить вход по паролю (только SSH-ключ)»: сервер будет принимать вход по SSH только по ключу (SSH-ключ при заказе и серверы «только по ключу»).
- Защитите его и установите пакеты из официальных источников дистрибутива (Защита нового сервера: чек-лист).
- Установите приложение из официального источника: CMS, модули и темы — от производителя, свой код — из git-репозитория. Не копируйте со старого сервера программы, скрипты, задания cron и конфигурации.
- Восстановите только данные (базы данных, загруженные файлы, контент) из резервной копии, сделанной до взлома. BLACKBOX не делает автоматических копий сервера; если более ранней копии нет, скопируйте данные со старого сервера и предварительно проверьте их (Стратегия резервного копирования для вашего сервера, Перенос сайта на сервер BLACKBOX).
- Смените все секреты приложения: пароли баз данных, API-ключи, учётные данные SMTP, секретные ключи в конфигурации, пароли администраторов сайта. Замените и приватные ключи, хранившиеся на старом сервере (например, для деплоя).
- Направьте домен на новый сервер (Как направить домен на сервер). Если вы подключили Cloudflare или GoDaddy, это можно сделать на странице «DNS» в панели (Управление DNS-записями из панели).
- Скопируйте со старого сервера всё, что ещё нужно, включая журналы, и удалите его красной кнопкой «Удалить» в карточке. Удаление выполняется после 24-часовой отсрочки, деньги за начатый период не возвращаются; до удаления сервер оплачивается. Сравнение с отменой заказа: Безвозвратное удаление сервера.
Если новый сервер вам не нужен, спросите в поддержке, можно ли переустановить операционную систему на этом же сервере. При переустановке все данные на сервере будут потеряны, поэтому сохраните их заранее; затем выполните шаги 2–5 из списка выше.
Шаг 5. Закройте путь проникновения
Прежде чем запускать новый сервер в работу, устраните причину, иначе атака повторится:
- Устаревшие CMS, модули и темы. Обновите их, удалите неиспользуемые и включите автоматические обновления безопасности (Обновления системы и автоматические обновления безопасности).
- Слабые или повторно используемые пароли. Используйте уникальные пароли из менеджера паролей для root, администрирования сайта и баз данных; для SSH используйте ключи.
- Службы, доступные из интернета. Привяжите базы данных к
127.0.0.1и ограничьте доступ к панелям администрирования (например, phpMyAdmin). Сетевой фильтр, которым управляет BLACKBOX, этих мер не заменяет (Файрвол: сетевая фильтрация и ufw/firewalld на сервере). - Панель. Включите двухфакторную аутентификацию в панели (Двухфакторная аутентификация (2FA) в панели).
- Доступ BLACKBOX. Для root используйте
PermitRootLogin prohibit-password, а неPermitRootLogin no, и не удаляйте «Ключ управления (blackbox.md)».
Затем пройдите весь список: Защита нового сервера: чек-лист.
Ваша ответственность
- По Условиям использования, раздел 3, вы несёте полную ответственность за собственную деятельность и за деятельность всех, кому даёте доступ к услугам. За защиту паролей, SSH-ключей и API-токенов тоже отвечаете вы. BLACKBOX не несёт ответственности за использование ваших учётных записей третьими лицами, если не доказано нарушение безопасности систем BLACKBOX.
- Раздел 2 Условий запрещает, в частности, спам и участие, «добровольное или по грубой неосторожности», в DoS- и DDoS-атаках (Политика допустимого использования: что запрещено).
- При обнаружении нарушения, например по внешней жалобе, BLACKBOX может приостановить или прекратить предоставление услуг полностью или частично, с предварительным уведомлением или без него, в зависимости от серьёзности ситуации. Отвечайте поддержке быстро и сообщайте, что уже сделали.
- Если на сервере были персональные данные ваших пользователей (например, покупателей интернет-магазина), оператором этих данных являетесь вы, и вы же отвечаете за соблюдение закона о защите данных (Условия, раздел 8). Оцените, нужно ли уведомить Национальный центр по защите персональных данных и затронутых людей (ст. 33–34 Закона № 195/2024). BLACKBOX как лицо, уполномоченное оператором, оказывает разумное содействие в той мере, в какой это технически возможно на уровне инфраструктуры хостинга: Соглашение об обработке данных (DPA) для компаний.
Внешняя атака: сервер не взломан
Если на шаге 3 вы не нашли чужих успешных входов, неизвестных процессов или ключей, скорее всего, сервер просто атакуют извне.
Подбор пароля SSH
Тысячи строк Failed password или Invalid user в журнале и длинный список в lastb — обычное дело для любого сервера с публичным IP-адресом: роботы постоянно сканируют интернет. Защититесь с помощью fail2ban (Защита от подбора паролей с помощью fail2ban) и входа только по ключу («Отключить вход по паролю», шаг 2).
Слишком много HTTP-запросов к сайту
Пропустите домен через прокси Cloudflare (оранжевое облако). Если Cloudflare подключён в панели, отметьте «Прокси» у записей A, AAAA и CNAME сайта на странице «DNS» (Управление DNS-записями из панели); иначе включите прокси прямо в аккаунте Cloudflare. Веб-трафик пойдёт через Cloudflare, который может фильтровать запросы.
Ограничьте число запросов с одного IP-адреса в nginx. Создайте файл
/etc/nginx/conf.d/ratelimit.conf:limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s; limit_req_status 429;Добавьте в блок
server { }сайта:limit_req zone=perip burst=20 nodelay;Проверьте конфигурацию и перезагрузите nginx:
nginx -t systemctl reload nginxС каждого IP-адреса можно отправлять 10 запросов в секунду с запасом 20; лишние запросы получают ошибку 429. Подберите значения под свой сайт. За Cloudflare nginx видит адреса Cloudflare: сначала настройте получение реальных адресов посетителей (документация Cloudflare).
Если атака продолжается или идёт напрямую на IP-адрес сервера, напишите в поддержку.
Что отправить в поддержку
Напишите на support@blackbox.md, создайте тикет («Личный кабинет» → «Помощь и поддержка», Создание тикета в поддержку) или в срочных случаях позвоните по номеру +373 78 003948 (пн–пт, 09:00–18:00 по времени Молдовы). Укажите:
- IP-адрес сервера;
- номер заказа (
BBX-…); - когда вы заметили проблему (дата, время и часовой пояс);
- что уже сделали (сервер остановлен, пароль сброшен, ключи удалены, заказан новый сервер);
- что нашли на шаге 3, текстом: процессы, IP-адреса, строки из журналов, отпечатки удалённых ключей.
Безопасность Никогда не отправляйте пароли, приватные ключи и API-токены — даже в поддержку BLACKBOX. Отпечаток ключа и публичный ключ можно отправлять без риска.
Частые вопросы
Можно ли очистить сервер без переустановки? Попробовать можно, но вы не будете уверены, что нашли всё. Для сервера с сайтом или важными данными мы рекомендуем новый сервер (шаг 4).
Может ли BLACKBOX очистить сервер за меня? BLACKBOX не обращается к содержимому вашего приложения и не читает его, кроме технической поддержки по вашему прямому запросу и случаев, когда этого требует закон (Соглашение об обработке данных (DPA) для компаний). За помощью с очисткой или переносом на новый сервер обратитесь в поддержку: Профессиональные услуги по запросу: администрирование, DevOps, миграция.
Мне пришла жалоба на злоупотребление, но на сервере я ничего не нашёл. Что делать? Всё равно ответьте нам как можно скорее: расскажите, что проверили на шаге 3 и что нашли. Иногда источник — приложение на сервере, например контактная форма, через которую рассылают спам.
Можно ли получить другой IP-адрес? В панели IP-адрес не меняется. Новый заказанный сервер получает собственный IP-адрес; о других вариантах спросите нас.