Маскот-полярный медведь NordBastion у Nordic-каменной кузницы, приваривающий бронепластины и латунные навесные замки на маленькую серверную башню на наковальне, cyan-защитные глифы обвивают её основание, янтарное свечение горна и янтарные сварочные искры
Руководство · Чеклист·10 мин. чтения · 60 мин. практики

Укрепление VPS — чеклист OPSEC первого часа.
Восемь шагов. Выполняйте это на каждом новом сервере.

Универсальный чеклист перед запуском перед тем, как любая задача попадёт на новый VPS. Только SSH-ключ, нестандартный порт, брандмауэр, автообновления, fail2ban, снимок, задокументированное восстановление. Протестировано на Debian 12 / Ubuntu 22-24 / Alpine.

Восемь шагов
  1. 01

    SSH key auth

  2. 02

    Disable root + change port

  3. 03

    Firewall baseline

  4. 04

    Unattended-upgrades

  5. 05

    Fail2ban

  6. 06

    Time + swap

  7. 07

    Baseline snapshot

  8. 08

    Recovery doc

Шаг 01-02 · SSH

Ключи, а не пароли. Нестандартный порт, а не 22.

На вашем ноутбуке сгенерируйте пару ключей ed25519 (меньше, быстрее, современнее):

ssh-keygen -t ed25519 -C "you@laptop"
ssh-copy-id -p 22 root@<vps-ip>
ssh root@<vps-ip>     # should now work without password

На VPS отредактируйте /etc/ssh/sshd_config:

Port 54871                  # pick a random number 1024-65535
PermitRootLogin no          # use a non-root user with sudo
PasswordAuthentication no   # keys only
PubkeyAuthentication yes

Сначала создайте sudo-пользователя без root (adduser bear; usermod -aG sudo bear; ssh-copy-id -p 22 bear@vps), проверьте вход, ЗАТЕМ перезапустите sshd: systemctl restart sshd. Если вы заблокируете себя, консоль панели предоставит доступ к shell без SSH.

Шаг 03 · Брандмауэр

Запрет входящих по умолчанию. Добавьте в белый список то, что нужно.

apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 54871/tcp      # custom SSH port
ufw allow 80/tcp         # if running a web service
ufw allow 443/tcp        # if running TLS
ufw enable
ufw status verbose

Продублируйте тот же набор правил в брандмауэре уровня бастиона NordBastion через панель управления (Сеть → Брандмауэр). Брандмауэр бастиона блокирует трафик до того, как пакет достигает VPS, экономя CPU при объёмном сканировании. Эшелонированная защита.

Шаг 04-05 · Автообновления + fail2ban

Два пакета, пять минут, реальный эффект.

apt install -y unattended-upgrades fail2ban
dpkg-reconfigure -plow unattended-upgrades   # accept defaults
systemctl enable --now fail2ban
fail2ban-client status                       # shows sshd jail

unattended-upgrades автоматически применяет патчи безопасности; fail2ban банит IP-адреса, делающие 5 неудачных попыток аутентификации в течение 10 минут, на 1 час. Ни тот ни другой не требуют дополнительной настройки для базового случая — оба агрессивны по умолчанию и работают для всех.

Шаг 06 · Время + подкачка

Установите часовой пояс UTC. Добавьте файл подкачки.

timedatectl set-timezone UTC

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile none swap sw 0 0" >> /etc/fstab
free -h                                       # confirm swap is active

UTC на сервере упрощает корреляцию логов между бастионами и клиентами в любом часовом поясе. Файл подкачки 2–4 GB защищает от пиков OOM-kill; на малых тарифах это важно, на больших — дешёвая страховка.

Шаг 07-08 · Снимок + документ восстановления

Зафиксируйте чистое состояние. Запишите путь восстановления.

Снимок. В панели: Серверы → ваш сервер → Снимки → Создать. Назовите его baseline-hardened-YYYY-MM-DD. Снимки NordBastion хранятся вне хоста, зашифрованы и создаются за секунды. Восстановление занимает около 90 секунд — ваше будущее «я» поблагодарит вас в первый раз, когда обновление пойдёт не так.

Документ восстановления. На бумаге или в менеджере паролей запишите:

  • Email аккаунта NordBastion + (мнемоника пароля, а не сам пароль)
  • Где хранится ваш SSH закрытый ключ на ноутбуке
  • Нестандартный номер порта SSH
  • Имя пользователя sudo без прав root на VPS
  • Имя базового снимка для восстановления
  • Примечание: «консоль панели работает без SSH — используйте её для восстановления при блокировке доступа»

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

FAQ · Усиление защиты

Вопросы, и ответы на них.

Восемь вопросов, которые начинающий клиент VPS задаёт при прохождении чеклиста.

Является ли аутентификация по SSH-ключу действительно безопаснее надёжного пароля?

Да, с большим отрывом. Пароль — даже 16-символьный случайный — поддаётся брутфорсу в некоторых реалистичных моделях угроз; ключ SSH ed25519 имеет 256 бит энтропии и не поддаётся. Ключ также привязан к устройству, на котором хранится, поэтому злоумышленнику нужен как файл ключа, так и парольная фраза, расшифровывающая его. Полностью отключите PasswordAuthentication в sshd_config — и поверхность атаки брутфорсом сводится к нулю.

Реально ли помогает смена SSH-порта с 22 на случайный?

Это не остановит решительного злоумышленника — он просканирует все 65 535 портов. Зато это ДЕЙСТВИТЕЛЬНО снижает объём автоматизированного шума от ботов, пробующих только порт 22, что означает более чистые логи и менее нагруженный fail2ban. Выберите случайный порт от 1024 до 65535, запишите его в надёжное место, обновите файрвол для его разрешения. Чистый выигрыш: около 90% меньше шума в логах.

UFW или nftables — что выбрать?

UFW — для тех, кто учится или управляет одним VPS: дружелюбная обёртка, синтаксис читается человеком, работает поверх iptables или nftables. nftables напрямую — если нужна более строгая композиция правил, анонимные наборы или управляете более чем несколькими серверами и хотите единообразия. Оба дают одинаковый результат на уровне ядра.

Стоит ли запускать unattended-upgrades и для ядра?

Патчи безопасности — да: они закрывают критические CVE, а альтернатива — оставлять их открытыми. Полные обновления пакетов ядра рискованнее, потому что для их применения нужна перезагрузка; unattended-upgrades по умолчанию не перезагружает систему. Прочитайте /etc/apt/apt.conf.d/50unattended-upgrades и решите: большинство клиентов NordBastion оставляют автоматическую конфигурацию на «только безопасность» и перезагружаются вручную раз в месяц в спокойное окно.

Необходим ли fail2ban, если я уже отключил аутентификацию по паролю?

Строго обязательно? Нет — как только парольная аутентификация отключена, брутфорс SSH не сработает. fail2ban остаётся полезным для других сервисов (почта, страницы входа веб-приложений, всё, что имеет слой аутентификации). Дешёвая страховка: apt install fail2ban, принять настройки по умолчанию, двигаться дальше. 30 секунд, которые уходят на установку, стоят чистых логов и бонусной защиты сервисов.

А как насчёт полного шифрования диска?

Не в первый час — полное шифрование диска с ключом у пользователя требует либо пользовательской установки ISO (монтирование LUKS при загрузке с парольной фразой, которую кто-то должен ввести), либо предстоящей опции NordBastion LUKS-on-provision (дорожная карта панели). На данный момент рассматривайте диск как доступный для чтения NordBastion (в маловероятном случае ордера) и рассматривайте юрисдикционную защиту NordBastion как уровень, обеспечивающий безопасность. Если ваша модель угроз требует FDE до запуска — установите Debian через rescue ISO в LUKS root-том и разблокируйте через консоль панели при каждой загрузке — это рабочее решение, но существенное изменение операционной нагрузки.

Как часто следует делать снимки?

Три полезных ритма. (1) Перед каждым значимым изменением (обновление пакетов, редактирование конфига, обновление ОС). (2) По расписанию — раз в неделю разумный стандарт для любой производственной задачи. (3) Перед каждой проверкой резервного копирования, чтобы доказать работоспособность восстановления. Снимки NordBastion хранятся вне хоста и зашифрованы; они не занимают диск VPS и могут быть восстановлены примерно за 90 секунд.

Нужно ли мониторить VPS и как это делать?

На первый час: пока нет — сначала выполните усиление защиты, запустите нагрузку, а затем добавьте мониторинг, когда появится что мониторить. Лёгкие варианты: node_exporter + Prometheus + Grafana на втором небольшом VPS, Netdata как self-hosted дашборд в виде одного бинарного файла, или ещё проще — бесплатный внешний проверщик доступности (UptimeRobot, BetterStack), пингующий публичные порты. Выберите один, настройте и забудьте — мониторинг наиболее полезен, когда молчит.

Далее

Сервер укреплён. Теперь стройте на нём что-нибудь.

Последняя проверка · 2026-05-20 · Протестировано · Debian 12 · Ubuntu 22.04 / 24.04 · Alpine 3.19+