Ой, ничего не найдено!

К сожалению, по вашему запросу пока ничего нет (но это только пока!), зато вы можете подписаться на нашу замечательную email-рассылку, чтобы не пропустить самое интересное в будущем.

  • 4

Первые 10 минут с новым сервером: что сделать сразу, чтобы потом не было мучительно больно

  • 3 минуты на чтение

Окей, ситуация знакомая. Ты только что нажал заветную кнопку «Create» у своего облачного провайдера, тебе прилетел свеженький IP-адрес, рутовый пароль в письме, и вот он — твой новый VPS, чистенький, как первый снег. Сервер дышит, пингуется, манит.

И тут есть два пути.

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

Путь второй: ты тратишь десять минут в самом начале, и потом живёшь долго и счастливо.

Давай по второму пути, ладно? Погнали.


Минута 0: заходим и не паникуем

Первым делом — заходим по SSH. Скорее всего, у тебя есть рутовый пароль из письма:

Подключение за минуту
Попробуйте Siteko.net бесплатно в течение месяца
Проверьте хостинг на реальном сайте: скорость, стабильность и поддержка доступны сразу после подключения.
Начать бесплатно
ssh root@ВАШ_IP

Тебя спросят, доверяешь ли ты этому хосту (отпечаток ключа) — говоришь yes, вводишь пароль, и ты внутри. Поздравляю, ты теперь бог этой маленькой вселенной. С богами, как известно, обращаются осторожно, поэтому первое, что мы сделаем, — перестанем быть рутом постоянно. Но не прямо сейчас. Сейчас обновляемся.


Минута 1: обновляем всё, что движется

Образ, из которого подняли твой сервер, почти наверняка собран не вчера. А значит, в нём уже есть пакеты с известными дырами, которые добрые люди давно нашли и которыми не очень добрые люди давно пользуются.

apt update && apt upgrade -y

(Если у тебя не Debian/Ubuntu, а какая-нибудь Alma/Rocky/CentOS — там будет dnf upgrade -y, и ты, скорее всего, и сам это знаешь.)

Пока оно качается и ставится — налей чаю. Это самая скучная минута, дальше будет веселее.


Минута 2: заводим себе человеческого юзера

Сидеть под рутом — это как ходить по дому с включённой бензопилой. Вроде удобно, всё рубится с полтычка, но одно неловкое движение — и ты уже без ноги (читай: без файловой системы, потому что rm -rf с правами рута не задаёт лишних вопросов).

Заводим нормального пользователя:

Первый месяц за 0 рублей
Хостинг для сайта, который должен работать стабильно
Перенесите проект или запустите новый сайт на Siteko.net и протестируйте сервис без предоплаты.
Перейти к хостингу
adduser anton

Подставь своё имя, конечно, если ты не Антон. Тебя попросят пароль и кучу необязательных вопросов про «полное имя» и «номер комнаты» — на всё это можно жать Enter, никому твоя комната не интересна.

Теперь дадим этому юзеру право становиться рутом по требованию (через sudo), чтобы он мог делать важные дела, но не ходил с бензопилой постоянно:

usermod -aG sudo anton

На RPM-системах группа называется wheel, а не sudo — имей в виду.


Минута 3-4: SSH-ключи, или как перестать вводить пароли

Пароли — это прошлый век. Их подбирают, их брутфорсят, их крадут. SSH-ключ подобрать практически нереально (если, конечно, ты не выложишь приватную часть на гитхаб, но ты же так не сделаешь, правда?).

Если у тебя ещё нет ключа — на своём компьютере (не на сервере!) делаешь:

ssh-keygen -t ed25519 -C "anton@ноутбук"

ed25519 — это современный, быстрый и компактный тип ключа. Бери его, не прогадаешь. Жмёшь Enter на все вопросы (можно задать пароль на ключ — это плюс к безопасности, но дело вкуса).

Тестовый период
Оцените хостинг Siteko.net на своем проекте
Один бесплатный месяц поможет проверить панель, скорость и поддержку до оплаты следующего периода.
Открыть Siteko.net

Теперь закидываем публичную часть ключа на сервер. Самый простой способ — ssh-copy-id:

ssh-copy-id anton@ВАШ_IP

Эта команда сама создаст нужные папки, проставит правильные права и положит твой публичный ключ куда надо. Если ssh-copy-id у тебя нет (привет, пользователи Windows), ключ можно скопировать руками — содержимое файла ~/.ssh/id_ed25519.pub нужно добавить строкой в ~/.ssh/authorized_keys на сервере, под нужным юзером.

Проверяем, что заходит по ключу:

ssh anton@ВАШ_IP

Если пароль не спросили и ты внутри — кайф, всё работает. Не закрывай это окно. Серьёзно. Сейчас мы будем менять настройки SSH, и если что-то пойдёт не так, эта живая сессия — твоя страховка от того, чтобы навсегда запереться снаружи собственного сервера.


Минута 5-6: закручиваем гайки в SSH

Открываем конфиг (через sudo, потому что мы теперь приличные люди):

sudo nano /etc/ssh/sshd_config

Находим и приводим к такому виду несколько строк (они могут быть закомментированы решёткой — раскомментируй):

Первый месяц за 0 рублей
Хостинг для сайта, который должен работать стабильно
Перенесите проект или запустите новый сайт на Siteko.net и протестируйте сервис без предоплаты.
Перейти к хостингу
PermitRootLogin no PasswordAuthentication no

Что мы сделали:

  • PermitRootLogin no — теперь напрямую рутом зайти нельзя. Все боты мира, которые круглосуточно долбятся в root с паролем 123456, идут лесом.
  • PasswordAuthentication no — заходить можно только по ключу. Никаких паролей. Брутфорс окончательно теряет смысл.

Сохраняем (в nano это Ctrl+O, потом Enter, потом Ctrl+X) и перезапускаем SSH:

sudo systemctl restart ssh

⚠️ Момент истины. Помнишь то окно, которое я просил не закрывать? Открой новое окно терминала и попробуй зайти заново: ssh anton@ВАШ_IP. Если зашёл — отлично, всё работает, старое окно можно отпускать. Если не зашёл — у тебя всё ещё есть живая сессия в старом окне, в которой можно спокойно откатить настройки и разобраться, что пошло не так. Вот почему мы не закрывали то окно. Я же говорил.

Кстати, про смену стандартного порта 22 на какой-нибудь 2222 — споры не утихают. Это не «безопасность», это «гигиена логов»: боты перестанут засорять тебе журнал бесконечными попытками входа. Реальной защиты это не даёт (порт сканируется за секунды), но логи чище. Хочешь — меняй (Port 2222 в том же конфиге), не хочешь — забей, это не обязательно.


Минута 7: ставим файрвол и закрываем лишнее

По умолчанию у сервера могут быть открыты порты, о которых ты даже не подозреваешь. Давай решать, кого пускать, а кого нет. На Ubuntu/Debian проще всего через ufw (Uncomplicated Firewall — он и правда uncomplicated):

sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow OpenSSH sudo ufw enable

Что тут происходит по-человечески: всё входящее по умолчанию запрещаем, всё исходящее разрешаем, и аккуратно проделываем дырочку для SSH, чтобы самим не остаться снаружи (опять же — не запри себя!).

Если меняли порт SSH на 2222 — тогда вместо allow OpenSSH пиши sudo ufw allow 2222/tcp, иначе будет грустно.

Тестовый период
Оцените хостинг Siteko.net на своем проекте
Один бесплатный месяц поможет проверить панель, скорость и поддержку до оплаты следующего периода.
Открыть Siteko.net

Поднимаешь веб-сервер? Добавь, что нужно:

sudo ufw allow 80/tcp sudo ufw allow 443/tcp

Проверить, что в итоге открыто:

sudo ufw status

Минута 8: fail2ban — вышибала на входе

Даже с ключами и файрволом в логи будут ломиться боты. fail2ban — это такой автоматический вышибала: следит за логами, видит, что с какого-то IP третий раз подряд лезут с кривыми кредами, и просто банит этот IP на время. Тихо, без скандалов.

sudo apt install fail2ban -y

Приятная новость: для SSH он начинает работать практически из коробки, дефолтных настроек на старте хватает. Хочешь потюнить — копируешь /etc/fail2ban/jail.conf в /etc/fail2ban/jail.local и крутишь там (править .conf напрямую не надо, его перезапишет обновление). Но для «первых десяти минут» достаточно просто поставить — он уже работает.


Минута 9: автоматические обновления безопасности

Ты же не будешь каждый день заходить и делать apt upgrade вручную, давай честно. А дырки в софте находят постоянно. Решение — пусть сервер сам подтягивает обновления безопасности, пока ты спишь:

sudo apt install unattended-upgrades -y sudo dpkg-reconfigure --priority=low unattended-upgrades

В появившемся диалоге выбираешь «Yes». Всё, теперь критические патчи прилетают автоматом, и ты не превращаешься в лёгкую мишень из-за того, что забыл обновиться.

Старт без оплаты
Месяц хостинга бесплатно для новых проектов
Разместите сайт, проверьте скорость и оцените удобство Siteko.net. Просто выберите тариф и начните тестовый месяц.
Посмотреть тарифы

Маленькая оговорка: на боевых проде-серверах автообновления иногда отключают и катят патчи по расписанию вручную — чтобы какое-нибудь обновление внезапно не уронило сервис посреди ночи. Но для личного сервера, пет-проекта или чего-то некритичного — автообновления безопасности это чистое добро.


Минута 10: мелочи, которые потом сэкономят тебе нервы

Осталась минута, добьём по-быстрому пару приятных штук.

Часовой пояс. Чтобы логи были в твоём времени, а не в UTC, и ты не считал в уме каждый раз:

sudo timedatectl set-timezone Europe/Moscow

(Подставь свой, список — timedatectl list-timezones.)

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

sudo hostnamectl set-hostname my-cool-server

Swap-файл, если у сервера мало RAM (привет, дешёвые VPS на 1 ГБ). Когда память кончается, swap не даёт всему упасть с гордым Out of memory:

sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Последняя строка добавляет swap в /etc/fstab, чтобы он включался сам после перезагрузки, а не только сейчас.

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

Всё, время вышло. Что в итоге?

За десять минут ты:

  • обновил систему и включил автообновления безопасности;
  • завёл человеческого юзера и слез с рута;
  • настроил вход по SSH-ключу и выключил пароли с рутовым логином;
  • поднял файрвол и пускаешь только то, что нужно;
  • посадил на входе fail2ban;
  • навёл порядок со временем, именем и памятью.

Теперь твой сервер не «свежий лужок для любого ботнета», а вполне себе укреплённая позиция. Это, конечно, не полноценный энтерпрайз-хардненинг с аудитами и центром управления полётами — но это та самая база, без которой всё остальное бессмысленно. Восемьдесят процентов проблем отсекаются вот этими простыми шагами.

А главное — ты сделал это сразу, на чистом сервере, пока на нём ничего нет и не страшно что-нибудь сломать. Потому что делать это потом, на работающем проде, с пользователями и данными — вот это и есть то самое «мучительно больно» из заголовка.

Десять минут сейчас. Или бессонная ночь и письмо от хостера потом. Выбор, как говорится, очевиден.

Ну что, погнали деплоить? 🚀

Первый месяц бесплатно

Хостинг Siteko.net для стабильного запуска сайта

Разместите проект на Siteko.net и проверьте скорость, панель управления и поддержку без стартовой оплаты.

  • 1 месяц бесплатно для новых клиентов сразу после выбора тарифа.
  • Быстрый старт для лендинга, блога или корпоративного сайта.
  • Поддержка рядом поможет с переносом и настройкой проекта.
Выбрать тариф