Когда на сервере поселился майнер: 5 правил защиты
Основы кибербезопасности я изучал методом тыка. Однажды на тестовом сервере поселился майнер, который жрал 90% CPU. Я тогда впервые столкнулся с тем, что сервер взломали. Сначала я просто заметил, что сервер стал жутко тормозить, а вентиляторы на машинке загудели как турбина. Зашёл по SSH, посмотрел на нагрузку — а там процесс крутит ядра на полную.
Это был не просто урок, а настоящий ушат холодной воды. Я разбирался в этой истории несколько вечеров, менял настройки, читал логи и переставлял сервер. Зато теперь я знаю, что работает, а что нет. И в этой статье расскажу о пяти правилах, которые отсекают большинство атак.
Первое: пароли
Не используйте password123 и другие очевидные комбинации. Это первый пункт, с которого я начал исправлять ситуацию. У меня тогда стояли простые пароли на некоторых сервисах, и именно так, скорее всего, и залезли. Теперь я пользуюсь менеджером паролей — я остановился на Bitwarden, он бесплатный и удобный.
У каждого сервиса — уникальный длинный пароль. Если один сервис взломают, остальные останутся в безопасности. Менеджер генерирует и хранит сложные пароли, так что мне не нужно их запоминать. Это заняло немного времени на настройку, зато теперь я спокоен.
Второе: SSH по ключу, а не по паролю
Вход по паролю в SSH — огромная дыра. Атакующие перебирают пароли автоматически, и рано или поздно могут угадать. Я отключил вход по паролю и настроил вход по ключу. В файле sshd_config я установил PasswordAuthentication no и перезапустил службу.
Ключ надёжнее любого пароля, потому что его невозможно подобрать перебором. Я сгенерировал пару ключей, загрузил публичный ключ на сервер и проверил, что вход работает. После этого отключил пароли. Попыток входа в логи стало гораздо меньше.
Третье: Fail2ban
Fail2ban блокирует IP-адреса после нескольких неудачных попыток входа. Я настроил бан после трёх неудачных попыток на 24 часа. Программа следит за логами и автоматически добавляет подозрительные адреса в файрвол.
После настройки Fail2ban количество атак на моём сервере резко упало. Брутфорсеры упёрлись в блокировку и ушли искать более лёгкую цель. Настройка заняла несколько минут, а польза огромная.
Четвёртое: автообновления
Свежие патчи закрывают уязвимости, которыми пользуются атакующие. Я включил unattended-upgrades на Ubuntu, чтобы система сама ставила обновления безопасности. Теперь дыры закрываются автоматически, без моего участия.
Раньше я откладывал обновления и в итоге получал уязвимую систему. Теперь автоматическое обновление — обязательная часть любой моей установки. Если вы хотите спать спокойно, настройте автообновления сразу после установки сервера.
Пятое: не держите открытыми лишние порты
Каждый открытый порт — это ещё одна дверь для атакующего. Я закрыл все порты, кроме тех, которые реально нужны: 22 для SSH, 80 и 443 для веб-трафика. Всё остальное я закрыл файрволом. Меньше открытых портов — меньше поверхность атаки.
Настройка файрвола заняла у меня немного времени. Я добавил правила для нужных портов и запретил всё остальное по умолчанию. Теперь, даже если на сервере появится уязвимый сервис, снаружи до него не добраться.
Что я сделал после инцидента
Когда я нашёл майнер, первым делом убил процесс и удалил его файлы. Затем я перебрал логи, чтобы понять, как именно залезли. Восстановить всё оказалось проще на чистой системе, поэтому я переустановил сервер и сразу настроил все пять правил.
После переустановки я проверил, что ничего лишнего не запущено и нет незнакомых служб. С тех пор я регулярно просматриваю процессы и логи. Такая проверка занимает несколько минут в неделю, но даёт уверенность, что всё чисто.
Как проверить сервер сегодня
Эти пять правил отсекают 99% атак. Я проверяю свой сервер по такому списку: сложные уникальные пароли, вход только по ключу, Fail2ban, автообновления и закрытые лишние порты. Если всё на месте — сервер в порядке.
Проверьте свой сервер сегодня, не откладывая. Мой случай показал, что взлом может случиться в любой момент, даже на тестовой машине. Потратьте час на настройку защиты — это сэкономит вам дни разбирательств.
Почему я не узнал о взломе раньше
Главная моя ошибка — я не смотрел на мониторинг. Если бы я проверял нагрузку и логи регулярно, заметил бы майнер в первый же день, а не через неделю. Теперь на сервере настроен простой мониторинг, и я получаю уведомления при аномальной нагрузке.
Мониторинг — это шестое правило, которое я добавил к своим пяти. Без него любые настройки защиты дают ложное чувство спокойствия. Уведомления о нагрузке, диске и подозрительных процессах помогают заметить проблему на ранней стадии.
Что ещё я менял в настройках
После взлома я также сменил все пароли на сервере, включая пароль базы данных и панели управления. Сгенерировал новые ключи SSH и добавил их в список доверенных. Отключил сервисы, которые мне не нужны, чтобы уменьшить количество потенциальных уязвимостей.
Я понял, что безопасность — это процесс, а не разовая настройка. Нужно регулярно проверять, обновлять и следить. Мой подход изменился: теперь я не считаю сервер защищённым только потому, что один раз настроил файрвол.
Как майнер вообще попал на сервер
Разбирая логи, я понял, что доступ получили через слабый пароль одного из сервисов. Атакующие используют автоматические сканеры, которые перебирают пароли по всей сети интернета. Моя тестовая машина была открыта наружу, и такой сканер быстро нашёл её.
После взлома они загрузили майнер и настроили его автозапуск. Машина превратилась в бесплатную ферму для добычи криптовалюты. Мне повезло, что майнер работал один и не трогал данные. В худшем случае взломщик мог бы установить шпиона или удалить файлы.
Как выглядит заражённый сервер
Понять, что сервер заражён, можно по нескольким признакам. Резко растёт нагрузка на процессор, даже когда никто не работает с сервером. Процессы с непонятными именами висят в списке и съедают ресурсы. Вентиляторы или кулеры начинают работать на максимуме, если сервер физический.
Я бы посоветовал при подозрении сразу посмотреть команду top или htop. Там видно, какой процесс грузит систему. Дальше проверяются автозапуски и планировщики — часто майнеры прописываются там, чтобы пережить перезагрузку. Удаление одного процесса без проверки автозапуска не решит проблему.
Резервные копии как страховка
После инцидента я понял, как важно иметь резервные копии. Если бы майнер повредил данные или сервер пришлось переустанавливать, копии позволили бы восстановить всё за короткое время. Теперь резервное копирование стоит у меня на первом месте после безопасности.
Я делаю копии базы данных и важных файлов регулярно, а восстановление проверяю на тестовом окружении. Так я уверен, что в нужный момент копии действительно сработают. Бэкапы — это не роскошь, а обязательная часть любой серверной инфраструктуры.
Права и ограничение доступа
Отдельно я занялся правами пользователей на сервере. Захожу по SSH под обычным пользователем, а не под root. Для административных действий использую sudo. Так случайная команда или уязвимость не сможет нанести слишком много вреда.
Также я ограничил доступ к панелям и базам данных по IP. Если администрирую из дома, то разрешаю доступ только с моего адреса. Это сильно усложняет жизнь атакующим, даже если они узнают пароль.
Логи — лучший друг администратора
Логи помогли мне разобраться, как именно залезли на сервер. В них видны попытки входа, запущенные команды и обращения к сервисам. Я стал регулярно просматривать логи, особенно после изменений в настройках. Это занятие скучное, но необходимое.
Для удобства я настроил простую ротацию логов и хранение их в течение месяца. Если что-то случится, я смогу вернуться на любой день и посмотреть, что происходило. Поиск причины в логах во много раз быстрее, чем гадание наугад.
Защита веб-приложений
Сервер — это не только операционная система. На нём часто крутятся сайты и приложения, которые тоже надо защищать. Я обновил все установленные программы, убрал неиспользуемые модули и отключил лишние сервисы. Каждая необновлённая программа — потенциальная дверь для атаки.
Для сайтов я настроил ограничение частоты запросов и защиту от брутфорса панелей входа. Появились лишние запросы к формам авторизации — я сразу заблокировал источник. Простые меры на уровне приложений сильно снижают риск повторения истории с майнером.
Отдельная сеть для тестов
Мои тестовые машины раньше были доступны из интернета напрямую. Теперь я пересмотрел схему: тестовое окружение живёт в отдельной сети и не торчит наружу. Для доступа извне использую VPN. Так тестовые серверы больше не являются мишенью для сканеров.
Такой подход добавил немного неудобств в работе, но безопасность стала в разы выше. Майнер попал на мою машину именно потому, что она была открыта. Закрыв её в отдельную сеть, я убрал главную причину проблемы.
Что я проверяю регулярно
Сейчас у меня есть небольшой список регулярных проверок. Раз в неделю я смотрю нагрузку, свободное место и список процессов. Проверяю обновления и применяю их. Просматриваю попытки входа в логи. Всё это занимает около десяти минут и не требует специальных инструментов.
Регулярность важнее тщательности. Даже быстрый взгляд на сервер поможет заметить аномалию, пока она не переросла в серьёзную проблему. Именно регулярного внимания мне не хватило, когда на сервере поселился майнер.
Почему стоит рассказывать о таких случаях
Когда я делюсь историей о майнере, многие спрашивают, не стыдно ли мне. Отвечаю: нет. На ошибках учатся, а мой случай — живая иллюстрация того, что безопасность нельзя откладывать. Если мой опыт поможет кому-то не наступить на те же грабли, значит, я пишу не зря.
Кибербезопасность для меня теперь — не скучная теория, а практика, выработанная через болезненный опыт. Пять правил, которые я описал, работают. Проверьте свой сервер по этому списку и будьте спокойны.
Итог
Майнер на сервере стал для меня лучшим уроком безопасности. Теперь я чётко знаю пять правил, которые отсекают почти все атаки: сложные пароли, SSH по ключу, Fail2ban, автообновления и закрытые порты. Плюс добавил мониторинг для раннего обнаружения проблем.
Проверьте свой сервер сегодня. Если какое-то правило у вас не выполнено — исправьте это сейчас. Я потратил на настройку защиты один вечер и с тех пор сплю спокойно. Поверьте, лучше потратить час на профилактику, чем неделю на разбор взлома.