Початкове налаштування VPS¶
Час: ~20 хвилин
Рівень: Початківець
Потрібно: Новий VPS з SSH доступом
Що отримаємо¶
Захищений сервер з:
- Не-root користувачем
- SSH аутентифікацією по ключах
- Базовим firewall
- Fail2ban захистом
- Автоматичними оновленнями безпеки
Передумови¶
- [ ] VPS з Ubuntu 22.04/24.04
- [ ] SSH доступ до сервера
- [ ] SSH ключ на вашому комп'ютері
Крок 1: Підключення по SSH¶
ssh root@<IP_ADDRESS>
Або якщо маєте ключ:
ssh -i ~/.ssh/your_key root@<IP_ADDRESS>
Крок 2: Оновлення системи¶
apt update && apt upgrade -y
Крок 3: Створення користувача¶
Ніколи не працюйте під root. Створіть звичайного користувача:
# Створити користувача
adduser admin
# Додати до групи sudo
usermod -aG sudo admin
При створенні введіть пароль та підтвердіть.
Крок 4: Налаштування SSH ключа для користувача¶
На вашому локальному комп'ютері:¶
Якщо немає SSH ключа, створіть:
ssh-keygen -t ed25519 -C "your@email.com"
Скопіюйте публічний ключ:
cat ~/.ssh/id_ed25519.pub
На сервері:¶
# Перейти до користувача admin
su - admin
# Створити директорію SSH
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Додати ключ
nano ~/.ssh/authorized_keys
# Вставте публічний ключ та збережіть (Ctrl+O, Enter, Ctrl+X)
chmod 600 ~/.ssh/authorized_keys
Крок 5: SSH Hardening¶
Відредагуйте конфігурацію SSH:
sudo nano /etc/ssh/sshd_config
Знайдіть та змініть (або додайте):
# Заборонити root логін
PermitRootLogin no
# Заборонити аутентифікацію паролем
PasswordAuthentication no
# Дозволити тільки SSH ключі
PubkeyAuthentication yes
# Змінити порт (опціонально)
#Port 2222
Важливо: Перед застосуванням переконайтесь що ваш ключ працює!
Перезапустіть SSH:
sudo systemctl restart sshd
Тест: Відкрийте нове вікно терміналу та спробуйте підключитись:
ssh admin@<IP_ADDRESS>
Крок 6: Налаштування Firewall (UFW)¶
# Встановити UFW
sudo apt install ufw -y
# Налаштувати правила за замовчуванням
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Дозволити SSH
sudo ufw allow ssh
# Якщо змінили порт: sudo ufw allow 2222/tcp
# Увімкнути firewall
sudo ufw enable
# Перевірити статус
sudo ufw status
Очікуваний результат:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Крок 7: Встановлення Fail2ban¶
Fail2ban блокує IP після невдалих спроб логіну.
# Встановити
sudo apt install fail2ban -y
# Створити локальну конфігурацію
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Знайдіть секцію [sshd] та переконайтесь:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
Перезапустіть:
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
Перевірка:
sudo fail2ban-client status sshd
Крок 8: Автоматичні оновлення безпеки¶
# Встановити unattended-upgrades
sudo apt install unattended-upgrades -y
# Увімкнути автооновлення
sudo dpkg-reconfigure -plow unattended-upgrades
# Виберіть "Yes"
Перевірка:
cat /etc/apt/apt.conf.d/20auto-upgrades
Має бути:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Крок 9: Налаштування hostname та timezone¶
# Встановити hostname
sudo hostnamectl set-hostname myserver
# Встановити timezone
sudo timedatectl set-timezone Europe/Kyiv
# Перевірити
hostnamectl
timedatectl
Крок 10: Корисні утиліти¶
sudo apt install -y \
htop \
curl \
wget \
git \
vim \
tmux \
net-tools
Фінальна перевірка¶
# Перевірити SSH конфігурацію
sudo sshd -t
# Перевірити firewall
sudo ufw status verbose
# Перевірити fail2ban
sudo fail2ban-client status
# Перевірити автооновлення
sudo systemctl status unattended-upgrades
Типові проблеми¶
Заблокований після зміни SSH¶
Симптоми: Не можете підключитись по SSH
Рішення:
1. Використовуйте консоль хостера (VNC/Console)
2. Виправте /etc/ssh/sshd_config
3. Перезапустіть: sudo systemctl restart sshd
UFW заблокував підключення¶
Симптоми: Connection refused
Рішення:
1. Через консоль хостера виконайте:
bash
sudo ufw allow ssh
sudo ufw reload
Fail2ban заблокував ваш IP¶
Симптоми: Connection refused після кількох невдалих спроб
Рішення:
# Переглянути заблоковані IP
sudo fail2ban-client status sshd
# Розблокувати IP
sudo fail2ban-client set sshd unbanip <YOUR_IP>
Наступні кроки¶
- SSH ключі — детальніше про ключі
- Docker Compose деплой — запуск сервісів
- Caddy reverse proxy — налаштування веб-сервера
Див. також¶
Шлях: step-by-step/vps-initial-setup.md