Новый VPS приходит «голым»: система из шаблона, пакеты недельной или месячной давности, вход под root по паролю, все порты открыты. В таком виде он живёт в интернете считанные часы до первых попыток подбора пароля — сканеры находят новые адреса почти сразу. Ниже десять шагов, которые превращают свежий сервер в рабочий и защищённый. Всё вместе — около часа, первые пять шагов — пятнадцать минут. Команды для Ubuntu и Debian, которые ставят чаще всего.
Шаг 1. Подключиться
После оплаты на почту приходят IP-адрес и пароль root. Подключение по SSH:
ssh root@IP_СЕРВЕРА
На Windows 10 и 11 команда ssh работает прямо в PowerShell или терминале; на старых системах — через PuTTY. При первом подключении система спросит, доверяете ли вы ключу сервера, — ответьте yes. Если сервер Windows, подключаетесь не по SSH, а по RDP; настройку Windows-сервера мы разобрали в статье «Windows VPS».
Шаг 2. Обновить систему
apt update && apt upgrade -y reboot
Образ, из которого развернули сервер, собран какое-то время назад, и часть пакетов в нём с известными уязвимостями. Перезагрузка нужна, если обновилось ядро; через минуту подключитесь снова.
Шаг 3. Создать своего пользователя
adduser deploy usermod -aG sudo deploy
Работать под root постоянно опасно: любая опечатка выполняется с полными правами. Имя пользователя — любое, кроме очевидных admin и user. Дальше вы работаете под ним и поднимаете права через sudo только когда нужно.
Шаг 4. Вход по ключу вместо пароля
На своём компьютере (не на сервере) создайте ключ, если его ещё нет, и скопируйте на сервер:
ssh-keygen -t ed25519 ssh-copy-id deploy@IP_СЕРВЕРА
На Windows без ssh-copy-id откройте файл C:\Users\ИМЯ\.ssh\id_ed25519.pub, скопируйте его содержимое и на сервере вставьте в /home/deploy/.ssh/authorized_keys.
Проверьте, что вход по ключу работает, открыв второе окно терминала: ssh deploy@IP_СЕРВЕРА — пароль спрашиваться не должен. Только после этого переходите к следующему шагу, иначе рискуете закрыть себе доступ.
Шаг 5. Закрыть вход root и по паролю
sudo nano /etc/ssh/sshd_config
Найдите и установите:
PermitRootLogin no PasswordAuthentication no
Сохраните (Ctrl+O, Enter, Ctrl+X) и перезапустите службу: sudo systemctl restart ssh. В новых версиях Ubuntu дополнительно проверьте файлы в /etc/ssh/sshd_config.d/ — там может лежать настройка, разрешающая пароли.
После этого шага подбор пароля перестаёт быть угрозой в принципе: пароля больше нет.
Шаг 6. Включить firewall
sudo ufw allow OpenSSH sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable sudo ufw status
Наружу открыты только SSH и веб. Всё остальное — база данных, Redis, панели — должно быть доступно только изнутри сервера. Первой строкой идёт именно OpenSSH: если включить firewall без неё, текущее соединение оборвётся, и зайти снова не получится.
Шаг 7. Автоматические обновления безопасности
sudo apt install unattended-upgrades -y sudo dpkg-reconfigure --priority=low unattended-upgrades
Критические заплатки будут ставиться сами, без вашего участия. Большинство успешных взломов используют уязвимости, закрытые месяцы назад, — эта мера закрывает их автоматически.
Шаг 8. Защита от перебора: fail2ban
sudo apt install fail2ban -y sudo systemctl enable --now fail2ban
С настройками по умолчанию fail2ban следит за SSH и блокирует адреса после нескольких неудачных попыток. При входе только по ключу это второй рубеж, но он ещё и разгружает логи от мусора. Когда появится веб-сервер, стоит включить фильтры и для него — как, мы описали в статье о защите от DDoS.
Шаг 9. Часовой пояс, имя и swap
sudo timedatectl set-timezone Europe/Moscow sudo hostnamectl set-hostname myserver
Часовой пояс — чтобы время в логах совпадало с вашим и не приходилось пересчитывать при разборе инцидентов. Имя — чтобы не путать серверы, когда их станет несколько.
На тарифах с 1–2 ГБ памяти полезен небольшой файл подкачки: он не ускорит сервер, но спасёт базу данных от принудительного завершения при кратковременном пике.
sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile && sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Если swap используется постоянно, это не решение, а сигнал, что тариф мал для проекта: как посчитать нужную память — в статье «Как выбрать тариф VPS».
Шаг 10. Бэкапы и мониторинг
Сделайте это до того, как на сервере появится что-то ценное, — потом всегда «некогда».
- Резервное копирование. Минимум — ежедневный дамп базы и копия файлов на другой сервер, лучше в другой стране:
rsyncилиresticпо cron. Lite за $6 в соседней локации — самое дешёвое хранилище копий. Подробнее — на странице резервного копирования. - Мониторинг доступности. Внешняя проверка раз в минуту с уведомлением в Telegram или на почту. Узнать о падении раньше пользователей — главное, что даёт мониторинг.
Дальше: что ставить под задачу
После десяти шагов сервер готов к работе. Что дальше, зависит от задачи:
- Сайт на PHP — Nginx, PHP-FPM, MariaDB и certbot для SSL. Пошагово, с переносом с хостинга, — в инструкции «Как перенести сайт на VPS без простоя».
- Несколько сайтов, почта, не хочется консоли — панель управления; какую выбрать и хватит ли памяти — в статье «Панель или консоль».
- Бот, API, сервисы в контейнерах — Docker и docker compose.
Если что-то пошло не так
Закрыли себе доступ по SSH (включили ufw без OpenSSH, отключили пароли до проверки ключа) — не паникуйте. В панели провайдера есть консоль VNC, которая работает в обход сети: через неё можно войти и исправить настройку. Именно поэтому шаги 4–6 идут в таком порядке и с проверками.
Сервер перестал отвечать после перезагрузки — проверьте состояние в панели провайдера и загляните через VNC. Порядок диагностики — в статье «Что делать, если сайт упал».
Шпаргалка
ssh root@IPapt update && apt upgrade -yadduser deploy && usermod -aG sudo deployssh-copy-id deploy@IP→ проверить входPermitRootLogin no,PasswordAuthentication noufw allow OpenSSH / 80 / 443,ufw enableunattended-upgradesfail2ban- Часовой пояс, имя, swap на малых тарифах
- Бэкап в другую страну и мониторинг
Ещё нет сервера? Start в Финляндии — $10/мес Lite под бэкапы — $6/мес
