Disclosure. В статье есть партнерская ссылка на Contabo. Если вы закажете сервер по ней, мы получим небольшую комиссию – на цену для вас это не влияет. Пишем о Contabo не ради партнерки, а потому что сами держим там свой парк серверов. История ниже – реальная.
Коротко, для тех, кто спешит
Несколько лет мы переплачивали за «спокойствие». Брали шаред-хостинги и VPS именно там, где была хорошая техническая поддержка, – и это выливалось в немалые ежемесячные бюджеты. Но даже за эти деньги проблемы с администрированием никуда не девались: что-то падало, что-то нужно было донастроить, а по-настоящему сложные вещи поддержка не делала – «это вне нашей зоны ответственности».
Переломным стал взлом одного из наших серверов. Тогда нам не смог помочь никто: админы тянули время, что-то поделали, но толку не было. От отчаяния я решил разобраться сам – подключил Claude (Claude Code) прямо в терминале. И с того момента все перевернулось: с тех пор как я начал конфигурировать и настраивать серверы с Claude, проблемы с администрированием просто исчезли. Самое удивительное – я лишь описывал простыми словами, что хочу получить, а Claude технически все настраивал, предупреждал о деталях и давал рекомендации. Остались одни плюсы. Отдельные системные администраторы мне больше не нужны.
Эта статья – о том, как мы к этому пришли.
Как было: платил за поддержку – и все равно имел проблемы
Логика была простая и, казалось, разумная: если ты не сисадмин, бери хостинг там, где за тебя все сделают. Поэтому мы сознательно выбирали тарифы подороже – шаред-хостинги с живой поддержкой, managed-VPS, где обещали «поможем с чем угодно». За это платишь заметную надбавку каждый месяц, умноженную на количество проектов. В сумме – существенная строка расходов.
Проблема в том, что это не спасало. Поддержка прекрасно перезапускала сервис или отвечала на мелкий вопрос, но как только требовалось что-то нестандартное – миграция, конфиг nginx под конкретный кейс, разбор, почему сайт отдает 500, настройка фаервола – начиналось «это уже администрирование вашего приложения, мы этим не занимаемся». То есть ты платишь за поддержку, а реальное администрирование все равно висит на тебе. И ты либо платишь еще и отдельному админу, либо живешь с полурабочими решениями.
Так продолжалось, пока удача не закончилась.
День, когда нас взломали

Позже, восстановив хронологию по логам, мы увидели картину:
- 14 июля, 17:27 – кто-то с чужого IP зашел root по SSH. Одна неудачная попытка – и успешный вход. Пароль просто угадали брутфорсом.
- 17:34–18:08 – за полчаса на сервер поставили полный набор: криптомайнер, rootkit для сокрытия процессов, похититель паролей и механизмы самовосстановления.
Худшее выяснилось при разборе: отдельный SSH-бэкдор-ключ добавили еще 12 июля – за два дня до «громкой» атаки. И не только в root, а почти во все аккаунты с реальным shell-доступом. У злоумышленника было несколько независимых входов.
Что конкретно жило на сервере (все это мы потом вычистили):
- Криптомайнер, замаскированный под системную библиотеку
libudev.so.6, с запуском черезcron.hourly. - Rootkit
hide– чтобы майнер не было видно в списке процессов. - PAM-хук – похититель паролей: логировал каждую попытку входа (логин, пароль, IP) в скрытый файл.
- Скрипт-«воскреситель» в
cron.daily: через час после удаления майнера переустанавливал его из скрытых копий и отравлял.bashrc. - Шесть скрытых бэкап-копий малвари по
/boot,/srv,/mnt,/opt,/usr/libпод случайными именами. - Каталоги
.sshс бэкдор-ключами были защищены immutable-флагами (chattr +i), чтобы их нельзя было просто удалить.
Кто хоть раз видел зараженный сервер впервые – знает это чувство: не понимаешь, почему что-то восстанавливается, сколько еще спрятано, и твой ли теперь root.
Админы, которые не помогли
Первое, что делаешь, – ищешь, кто это починит. Мы тоже. И тут началось самое деморализующее.
Админы, к которым мы обратились, тянули время. Кто-то взялся, поковырялся – часть малвари даже убрали (позже в логах было видно, что какие-то файлы удаляли, сервер несколько раз перезагружали). Но результата не было: майнер возвращался, чужие ключи оставались, непонятная персистентность никуда не делась. Объяснить, что вообще происходит и чист ли теперь сервер, никто не мог.
Ты платишь, ждешь – а воз и ныне там. В какой-то момент стало ясно: еще день в этом режиме – и я потеряю время, деньги и сам сервер. Вот тут, уже без всякой надежды на них, я решил попробовать сам.
Как мы разгребали это с Claude

Ключевое решение оказалось простым: не делать вслепую. Вместо «загуглил команду – вставил – надеюсь» мы с Claude пошли методично, с объяснением каждого шага.
Самое важное: я говорил простыми словами – Claude делал
Отдельно остановлюсь на том, как это выглядело, потому что именно это поразило больше всего. Я не сисадмин и не писал ни одной команды «из головы». Я просто описывал обычными словами, что хочу получить: «похоже, нас взломали – разберись, что поставили и как убрать», «сделай так, чтобы root больше не пускало по паролю», «закрой все лишнее, оставь только сайты и почту».
Техническую часть брал на себя Claude:
- переводил мое пожелание в конкретные команды и объяснял, что каждая делает, прежде чем я ее выполню;
- предупреждал о деталях и рисках, которые я бы ни за что не учел сам: «сначала разреши SSH-порт, иначе запрешь себя снаружи сервера», «этот файл нулевого размера восстанавливается – лучше копнуть глубже, чем просто удалить», «ipset не переживет ребут – нужен отдельный сервис, чтобы правило не потерялось»;
- давал рекомендации, о которых я даже не спрашивал: забанить рецидивистов через recidive, включить автообновления, сделать снапшот-страховку перед рискованным шагом.
Распределение было четким: на мне – решения и здравый смысл («да, делай», «нет, сначала бэкап»), на Claude – техника и внимательность к мелочам. Мне не нужно было становиться инженером – нужно было понятно сформулировать задачу и проверять выводы.
И это главное впечатление от всей истории: все было одновременно простым и впечатляющим. Вещи, от которых раньше опускались руки, делались спокойным диалогом в терминале.
1. Сначала понять масштаб
Прогнали chkrootkit и rkhunter. Они сразу подсветили предупреждения о возможном rootkit уровня ядра и скрытых каталогах .ssh. Claude объяснил, что означает каждое предупреждение и какие из них – реальная угроза, а какие ложное срабатывание. Это важно: половина вывода таких утилит – шум, и без понимания ты либо паникуешь зря, либо пропускаешь настоящее.
2. Снять защиту малвари и вычистить IOC
Дальше по кругу: найти компонент, понять, как он держится за систему, снять chattr-флаги, удалить. Майнер, лоадер, rootkit hide, PAM-похититель, скрипт-воскреситель, все шесть скрытых бэкапов. Зараженные .bash_profile/.profile/.bashrc – почистили, оригиналы сохранили как доказательства. Отдельная история – бэкдор-ключи: их нужно было вытащить из всех аккаунтов, не задев легитимные ключи команды. Когда каждый шаг на глазах, перед каждым удалением видно, чей это ключ.
3. Момент, когда мы решили переустановить сервер
Был один файл – нулевого размера, с SUID-битом и chattr +i, – который продолжал восстанавливаться даже после того, как мы вычистили все: malware, cron, systemd, PAM-хук, все бэкдор-ключи. Мы проверили cron, systemd-таймеры, incron, at, kernel-модули, живой семплинг процессов каждую секунду. Источник так и не нашли.
Сам файл безобидный (0 байт ничего не выполнит). Но непонятная персистентность – тревожный сигнал: если не можешь объяснить, почему что-то восстанавливается, не можешь гарантировать, что сервер чист. Поэтому приняли честное решение – чистая переустановка. Contabo позволяет сделать это из панели за пару кликов.
Главный урок: иногда правильный ответ – не «долечить», а «снести и поставить заново по чистому чеклисту».
Чеклист харднинга, который теперь у нас стандарт
После переустановки мы накатили набор базовой защиты. Теперь этот список применяется к каждому новому VPS:
- SSH – только по ключу.
PermitRootLogin prohibit-password,PasswordAuthentication no. Парольный брутфорс root – тот самый вектор, которым нас взломали, – после этого не работает. - UFW. Сначала разрешить 22/80/443 (чтобы не запереть себя), потом
default deny incomingиenable. - fail2ban с jail-ами
sshdиrecidive(бан рецидивистов на неделю). - Блок-лист blocklist.de через ipset – около 18 000 известных вредоносных IP дропаются на входе, ежедневное автообновление через systemd-таймер.
- Облачный фаервол Contabo – отдельный слой на уровне провайдера, еще до того, как трафик дойдет до сервера. Default-deny, открываем только нужное каждой роли.
- Автообновления (
unattended-upgrades) – критические патчи ставятся сами.
Мелкие грабли, на которые мы наступили (чтобы вы не наступали):
- В
before.rulesдля ufw правило-Aдолжно идти после объявления цепочки:chain - [0:0], иначеiptables-restoreтихо падает, аufw reloadоб этом не ругается. ipsetживет в памяти и не переживает ребут – нужен отдельный restore-сервис, поднимающий набор до старта ufw.- На Ubuntu 24.04
fail2banпишет в journal, и дляrecidiveнужно отдельно указать лог-файл.
Ничего космического. Но собранное в один повторяемый чеклист – сервер перестает быть лотереей.
Что изменилось: сисадмины больше не нужны
Самое большое изменение даже не техническое, а в голове: серверная часть перестала быть страшной. Мы больше не «владельцы сайтов, которые боятся зайти в терминал». Мы проверяем, обновляем и закрываем порты сами – с Claude как вторым пилотом, который объясняет каждый шаг и ловит ошибки до того, как ты их выполнишь.
Практические последствия:
- Тот же чеклист харднинга мы раскатили на весь парк – каждый новый сервер поднимается уже защищенным с первой минуты.
- Через API Contabo держим инвентарь серверов, управляем облачными фаерволами и делаем снапшоты скриптами, а не кликами.
- И главное про деньги: мы перестали платить за дорогой managed-хостинг и отдельную поддержку, которой все равно не хватало. Задачи, которые раньше требовали либо дорогого спеца, либо managed-тарифа, теперь делаются за вечер – с пониманием, что именно и зачем ты делаешь.
Значит ли это, что Claude «заменил» системного администратора? Для нашего масштаба – по сути да: отдельные сисадмины нам больше не нужны. Порог входа упал настолько, что администрирование перестало быть отдельной статьей расходов. За Claude все равно стоит проверять – и мы проверяем, особенно перед удалением чего-либо на проде. Но это партнерство, а не беспомощность и не счет по часовой ставке.
Почему именно Contabo

Когда админ и платная поддержка больше не нужны, меняется и выбор хостинга. Раньше мы переплачивали за managed именно ради «помогут». Теперь помогает Claude – и логично брать дешевый, но мощный unmanaged-VPS, а не дорогой тариф с поддержкой, которой не пользуешься. Contabo сюда ложится идеально:
- Цена/мощность. За деньги, за которые в «больших» облаках берешь крошечный инстанс, тут получаешь VPS с нормальным CPU, несколькими гигабайтами RAM и приличным диском.
- Европейские дата-центры – важно для латентности и GDPR.
- Облачный фаервол на уровне провайдера – тот самый дополнительный слой защиты, бесплатно в панели.
- Полноценный REST API – инвентарь, снапшоты, фаерволы, reinstall, приватные сети, объектное хранилище. Все скриптуется.
- Reinstall/rescue в пару кликов – то, что спасло нас во время чистой переустановки.
Минусы тоже есть: поддержка не мгновенная, а панель без излишеств. Но когда поддержка тебе не нужна каждый день, это как раз перестает быть минусом – ты не платишь за то, чем не пользуешься.
👉 Посмотреть тарифы Contabo VPS: contabo.com/vps
Вывод
Годами мы платили за «спокойствие» – managed-хостинг и поддержку – и все равно имели проблемы с администрированием. Решила их не более дорогая подписка, а связка дешевого гибкого VPS + AI-помощник в терминале. Не потому, что мы стали сисадминами, а потому, что перестали делать вслепую – и перестали за это переплачивать.
Если вы тоже держите сайты на дорогом managed-тарифе «чтобы было спокойно» – попробуйте другой путь: недорогой VPS и базовый чеклист (SSH по ключу, fail2ban, фаервол). Уже одно это убирает тот вектор атаки, которым зашли к нам, – и показывает, сколько вы на самом деле переплачивали.
FAQ
Действительно ли можно обойтись без системного администратора? Для парка типовых сайтов (nginx/PHP/MySQL, WordPress, Joomla и т. д.) – да. Рутинные задачи (настройка, обновления, фаервол, разбор ошибок, бэкапы) делаются в терминале с AI-помощником, который объясняет каждый шаг. Для редких сложных кейсов всегда можно разово привлечь спеца – но это уже не ежемесячная строка расходов.
Сколько экономишь, отказавшись от managed-хостинга? Зависит от парка, но разница между managed-тарифом с поддержкой и unmanaged-VPS той же мощности – часто кратная. Умножьте надбавку на количество проектов и месяцев – и увидите бюджет, который уходил за «спокойствие».
Безопасно ли давать AI доступ к продакшн-серверу? Вы не «даете доступ» – вы работаете в терминале сами, а AI предлагает команды и объясняет их. Каждое действие вы видите и подтверждаете. Правило простое: перед любым удалением или изменением на проде – перечитать, что именно выполнится.
Что делать прямо сейчас, если подозреваю, что сервер взломали? Не перезагружайте вслепую (потеряете часть следов в памяти). Сделайте снапшот для доказательств, прогоните chkrootkit/rkhunter, проверьте authorized_keys во всех аккаунтах и свежие записи в cron/systemd. Если видите непонятную персистентность – планируйте чистую переустановку с последующим харднингом.
Какая минимальная защита должна быть на каждом VPS? SSH только по ключу, парольный вход выключен, fail2ban, фаервол default-deny и автообновления. Пять пунктов, полчаса работы – и 99% автоматизированных атак вас уже не достанут.
*Материал основан на реальном инциденте в нашей инфраструктуре (июль 2026). Технические детали, IP-адреса и доступы намеренно обобщены из соображений безопасности.*
Фото для статьи: Gabriel Heinzer, Kevin Horvat и Domaintechnik на Unsplash, Paras Katwal на Pexels. Использованы по бесплатным лицензиям Unsplash и Pexels.