Безопасность• Гайды по выбору

Базовая защита сервера за 15 минут: SSH-ключи, UFW, Fail2Ban и отключение root

Минимальный чек-лист безопасности для нового VPS: переключаемся на ключи, закрываем порты, банним брутфорсеров. Копипастим и забываем.

Обновлено: 2026-10-27T06:00:03.040Z
Время чтения: ~9 мин
Автор: Артём Савельев (DevOps-инженер)
Быстрый ответ & Краткая суть

Базовая защита нового VPS за 15 минут: 1) Создайте обычного пользователя с sudo. 2) Настройте SSH-ключи и отключите вход по паролю. 3) Установите UFW и откройте только порты 22, 80, 443. 4) Установите Fail2Ban для автобана брутфорсеров. 5) Смените порт SSH с 22 на нестандартный (опционально). Это закрывает 95% атак на типичный VPS.

SSH-ключиОтключить PasswordAuthentication
UFWufw allow 22,80,443/tcp && ufw enable
Fail2BanАвтобан после 5 неудачных попыток
Время~15 минут на всё
Ключевые выводы и краткая суть
  • SSH-ключи вместо паролей — убирают 99% брутфорс-атак. Пароли для SSH — это дыра.
  • UFW (Uncomplicated Firewall) — откройте только нужные порты (22, 80, 443). Всё остальное — DROP.
  • Fail2Ban — автоматический бан IP после 5 неудачных попыток входа. Банит на 10 минут по умолчанию.
  • Отдельный пользователь вместо root — ограничивает ущерб при компрометации.

Шаг 1: Создаём пользователя и настраиваем SSH-ключи

Никогда не работайте под root в повседневной эксплуатации. Создайте обычного пользователя с sudo и настройте SSH-ключи:

ssh-setup.sh
# На сервере: создаём пользователя
adduser deploy
usermod -aG sudo deploy

# На ВАШЕМ компьютере: генерируем ключ (если нет)
ssh-keygen -t ed25519 -C "your@email.com"

# Копируем ключ на сервер
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@YOUR_SERVER_IP

# Проверяем вход по ключу (без пароля!)
ssh deploy@YOUR_SERVER_IP

# На сервере: отключаем вход по паролю
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
echo "PermitRootLogin no" | sudo tee -a /etc/ssh/sshd_config
sudo systemctl restart sshd
Не закройте себе доступ!Перед отключением пароля убедитесь, что SSH-ключ работает. Откройте второе SSH-соединение и проверьте вход по ключу. Если заблокируетесь — восстановить доступ можно только через консоль провайдера.

Шаг 2: Firewall через UFW

UFW — обёртка над iptables для людей. Открываем минимум портов:

ufw-setup.sh
# Установка (обычно предустановлен)
sudo apt install -y ufw

# Правило по умолчанию: блокировать всё входящее
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Открываем SSH (ОБЯЗАТЕЛЬНО до включения!)
sudo ufw allow 22/tcp

# Открываем веб-порты
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Включаем файрвол
sudo ufw enable

# Проверяем
sudo ufw status verbose

Шаг 3: Fail2Ban — автобан брутфорсеров

Fail2Ban мониторит логи SSH и банит IP-адреса с неудачными попытками входа:

fail2ban-setup.sh
# Установка
sudo apt install -y fail2ban

# Конфигурация
sudo cat > /etc/fail2ban/jail.local << 'EOF'
[DEFAULT]
bantime = 3600     # Бан на 1 час
findtime = 600     # Окно наблюдения 10 минут
maxretry = 5       # 5 неудачных попыток

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3       # Для SSH строже — 3 попытки
bantime = 86400    # Бан на 24 часа
EOF

# Запуск
sudo systemctl enable --now fail2ban

# Проверка
sudo fail2ban-client status sshd

Дополнительные меры (опционально)

Смена порта SSH: в /etc/ssh/sshd_config измените Port 22 на нестандартный (например, 2222). Это убирает 90% автоматических сканеров. Не забудьте обновить правило UFW: ufw delete allow 22/tcp && ufw allow 2222/tcp.

Автообновления безопасности: sudo apt install unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades. Патчи безопасности устанавливаются автоматически.

Двухфакторная аутентификация SSH (Google Authenticator): sudo apt install libpam-google-authenticator. Добавляет TOTP-код к ключевой аутентификации.

Рекомендованные конфигурации по теме статьи

Проверенные серверы от надежных провайдеров

Весь каталог
Хит цены
Aeza

Aeza

Москва★ 4.6

Shared Start

CPU

1 ядер • 3.3 ГГц

RAM

1 ГБ

Диск

10 ГБ NVMe

Канал

200 Мбит/с

149 ₽/мес

Хит цены
Timeweb Cloud

Timeweb Cloud

Москва★ 4.8

Cloud Start

CPU

1 ядер • 3.3 ГГц

RAM

1 ГБ

Диск

15 ГБ NVMe

Канал

200 Мбит/с

299 ₽/мес

Aeza

Aeza

Москва★ 4.6

Shared Medium

CPU

2 ядер • 3.3 ГГц

RAM

2 ГБ

Диск

30 ГБ NVMe

Канал

200 Мбит/с

299 ₽/мес

Часто задаваемые вопросы (FAQ)

Что делать, если забанил свой IP через Fail2Ban?

Зайдите через консоль провайдера (VNC/KVM) и выполните: sudo fail2ban-client unban YOUR_IP. Или: sudo fail2ban-client set sshd unbanip YOUR_IP.

Нужен ли коммерческий файрвол (CSF, iptables напрямую)?

Для 90% задач UFW + Fail2Ban достаточно. CSF (ConfigServer Firewall) полезен на хостинг-панелях (cPanel, DirectAdmin). Чистый iptables — для экспертов с нестандартными требованиями.