Вы только что оплатили сервер и получили письмо с IP-адресом и паролем root. Дальше почти все делают одну и ту же ошибку — начинают ставить софт. Сначала стоит закрыть базовые дыры: свежий сервер с паролем root находят автоматические сканеры за считанные часы.
Гайд рассчитан на Ubuntu 22.04/24.04 и Debian 12. Отмечайте шаги — прогресс сохранится, даже если закроете вкладку.
Что понадобится
Доступ к серверу по SSH (IP, логин, пароль из письма) и терминал на своём компьютере. На Windows подойдёт PowerShell или Windows Terminal.
Подключиться к серверу
Откройте терминал и подключитесь, подставив свой IP:
root@vps:~#ssh [email protected]При первом подключении система покажет отпечаток ключа сервера и спросит подтверждение — введите yes. Затем введите пароль из письма провайдера: символы при вводе не отображаются, это нормально.
Если подключение отвергнуто
Проверьте, что провайдер уже развернул сервер (обычно 1–5 минут), и что вы не перепутали порт. Некоторые хостинги сразу выдают SSH на нестандартном порту — тогда ssh -p 2222 root@IP.
Обновить систему
Пакеты в образе почти всегда отстают на недели, а среди обновлений бывают заплатки безопасности:
root@vps:~#apt update && apt upgrade -yЕсли после обновления обновилось ядро, перезагрузите сервер и подключитесь заново:
root@vps:~#rebootСоздать отдельного пользователя
Работать под root постоянно — плохая привычка: любая опечатка выполняется с максимальными правами. Заведите обычного пользователя и дайте ему sudo:
root@vps:~#adduser nexusroot@vps:~#usermod -aG sudo nexusКоманда adduser спросит пароль и несколько необязательных полей — их можно пропустить клавишей Enter.
Зачем нужен отдельный пользователь, если sudo всё равно даёт полные права?
Настроить вход по SSH-ключу
Ключ невозможно подобрать перебором, в отличие от пароля. На своём компьютере (не на сервере) создайте пару ключей, если её ещё нет:
you@local:~#ssh-keygen -t ed25519 -C "nexnode"Затем скопируйте публичный ключ на сервер:
you@local:~#ssh-copy-id [email protected]Проверьте, что вход работает без пароля:
you@local:~#ssh [email protected]Не закрывайте текущую сессию
Пока не убедились, что вход по ключу работает, держите открытым старое подключение под root. Иначе при ошибке можно потерять доступ к серверу и придётся идти в аварийную консоль провайдера.
Запретить вход по паролю и под root
Теперь, когда ключ работает, отключаем то, что перебирают боты. Откройте конфиг SSH:
root@vps:~#nano /etc/ssh/sshd_configНайдите и приведите к такому виду три параметра:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Сохраните (Ctrl+O, Enter) и выйдите (Ctrl+X), затем перезапустите службу:
root@vps:~#systemctl restart sshПроверьте до выхода
В новом окне терминала подключитесь как nexus. Только убедившись, что вход работает, закрывайте старую сессию.
Включить файрвол
По умолчанию открыты все порты, на которых что-то слушает. Оставим только нужное:
root@vps:~#ufw allow OpenSSHroot@vps:~#ufw allow 80/tcproot@vps:~#ufw allow 443/tcproot@vps:~#ufw enableПроверить результат:
root@vps:~#ufw status verboseПорты 80 и 443 нужны, если на сервере будет сайт. Если нет — не открывайте их.
Что произойдёт, если включить ufw, забыв разрешить OpenSSH?
Поставить fail2ban
Даже с ключами в логах будут тысячи попыток входа. Fail2ban банит IP после нескольких неудач:
root@vps:~#apt install fail2ban -yroot@vps:~#systemctl enable --now fail2banПосмотреть, что он работает:
root@vps:~#fail2ban-client status sshdВключить автоматические обновления безопасности
Чтобы заплатки ставились без вашего участия:
root@vps:~#apt install unattended-upgrades -yroot@vps:~#dpkg-reconfigure --priority=low unattended-upgradesНа этом базовая настройка закончена. Сервер обновлён, вход только по ключу, лишние порты закрыты, брутфорс блокируется.
Что дальше
Дальше зависит от задачи: поднять сайт — смотрите гайд по nginx и HTTPS, развернуть приложение в контейнерах — деплой через Docker Compose. Если сервер ещё не выбран, загляните в рейтинг хостингов.