До основного вмісту

Перші кроки після придбання VDS: базовий захист

VDS / VPS · 12.03.2025 · 4 хв читання
Ілюстрація до статті «Перші кроки після придбання VDS: базовий захист»

Чеклист нового VDS

Після отримання нового сервера виконайте ці кроки в перші 30 хвилин — це захистить вас від 95% типових атак.

Крок 1: Створення користувача та SSH-ключі

# Створюємо користувача
adduser myuser
usermod -aG sudo myuser

# Копіюємо SSH-ключ для нового користувача
rsync --archive --chown=myuser:myuser ~/.ssh /home/myuser/

Крок 2: Налаштування SSH

# /etc/ssh/sshd_config
Port 2222                    # Змінюємо стандартний порт
PermitRootLogin no           # Заборона входу root
PasswordAuthentication no    # Лише ключі
PubkeyAuthentication yes
MaxAuthTries 3

systemctl reload sshd

Крок 3: Файрвол UFW

ufw allow 2222/tcp  # Ваш SSH-порт
ufw allow http
ufw allow https
ufw enable

Крок 4: Автооновлення безпеки

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

Крок 5: fail2ban

apt install fail2ban -y
systemctl enable --now fail2ban
ДіяЧасПріоритет
Оновити систему2 хвКритичний
Створити sudo-користувача2 хвКритичний
Налаштувати SSH5 хвКритичний
Налаштувати UFW3 хвВисокий
Встановити fail2ban2 хвВисокий
⚠️ Не закривайте поточну SSH-сесію до перевірки, що нове підключення працює. Інакше ризикуєте втратити доступ до сервера.

Розбір помилок першого підключення

Помилка Permission denied (publickey) під час спроби зайти новим користувачем означає, що ключ не скопіювався або права на файли неправильні. SSH категорично відмовляється читати ключ, якщо каталог чи файли доступні на запис комусь, крім власника.

debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/myuser/.ssh/id_ed25519
Permission denied (publickey).

Перевірте права: ~/.ssh має бути 700, а ~/.ssh/authorized_keys — 600, і обидва належати користувачу, а не root. Команда rsync --chown з кроку 1 зазвичай вирішує це сама, але після ручного копіювання права потрібно виставити окремо.

Помилка Connection refused після зміни порту SSH означає, що або firewall ще не відкрив новий порт, або sshd не перечитав конфіг. Порядок дій важливий: спершу відкрити новий порт в UFW, потім застосувати конфіг sshd, і лише потім закривати старий порт — інакше ризикуєте лишитися без доступу взагалі. Тримайте одне відкрите SSH-зʼєднання до повної перевірки нового порту на випадок, якщо щось піде не так.

Таблиця: що втрачається на кожному кроці за помилки

КрокЯкщо пропуститиНаслідок
SSH-ключіЛишається вхід за паролемБрутфорс підбирає пароль за години
Зміна порту SSHПорт 22 видно всімПостійний шум ботів у auth.log, зайве навантаження
UFWУсі порти відкритіДоступні сервіси, які не мають бути публічними
fail2banНемає блокування за спробамиОдна й та сама IP довбить SSH без обмежень

Коли цього чеклиста недостатньо

  • Сервер обробляє платежі або персональні дані — потрібен повноцінний аудит за стандартом на кшталт PCI DSS, а не загальний чеклист для VDS.
  • На сервері кілька незалежних клієнтів чи проєктів — потрібна ізоляція через контейнери або окремі системні користувачі з обмеженими правами, базового hardening недостатньо.
  • Сервер доступний з недовіреної мережі без VPN — варто розглянути обмеження SSH за IP через UFW або повністю закрити порт і ходити лише через VPN чи bastion-хост.
  • Потрібен аудит того, хто і що робив на сервері, а не лише захист від входу — базовий чеклист не включає журналювання команд і файлових змін, для цього потрібен окремий інструмент на кшталт auditd.

Який тип SSH-ключа обрати

Команда ssh-keygen без параметрів створює ключ RSA-3072 — робочий варіант, але не оптимальний. Для нового сервера краще згенерувати сучасний ключ явно: ssh-keygen -t ed25519 -C "admin@example.com".

Тип ключаДовжинаКоли використовувати
ed25519256 бітЗа замовчуванням для нових серверів, швидший і компактніший за RSA
RSA4096 бітЛише якщо потрібна сумісність зі старим софтом без підтримки ed25519

Перевірка результату

  1. В окремому другому терміналі, не закриваючи поточну сесію, підключіться заново: ssh -p 2222 myuser@server_ip — вхід має пройти за ключем без запиту пароля.
  2. Перевірте, що root через SSH більше не пускає: ssh root@server_ip має завершитися помилкою доступу.
  3. Перевірте стан firewall: ufw status verbose має показувати лише потрібні порти у стані ALLOW.
  4. Перевірте, що fail2ban активний і бачить SSH: fail2ban-client status sshd.

Подальші кроки з обмеження спроб входу — у статті про налаштування fail2ban, а порівняння файрвол-інструментів — у статті про UFW на VPS. Якщо після базового захисту потрібно ще й журналювати дії користувачів на рівні ядра, дивіться статтю про налаштування auditd для моніторингу Linux — вона вже не про перші кроки, а про постійний контроль сервера.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці