Базовая защита сервера за 15 минут: SSH-ключи, UFW, Fail2Ban и отключение root
Минимальный чек-лист безопасности для нового VPS: переключаемся на ключи, закрываем порты, банним брутфорсеров. Копипастим и забываем.
Базовая защита нового VPS за 15 минут: 1) Создайте обычного пользователя с sudo. 2) Настройте SSH-ключи и отключите вход по паролю. 3) Установите UFW и откройте только порты 22, 80, 443. 4) Установите Fail2Ban для автобана брутфорсеров. 5) Смените порт SSH с 22 на нестандартный (опционально). Это закрывает 95% атак на типичный VPS.
- SSH-ключи вместо паролей — убирают 99% брутфорс-атак. Пароли для SSH — это дыра.
- UFW (Uncomplicated Firewall) — откройте только нужные порты (22, 80, 443). Всё остальное — DROP.
- Fail2Ban — автоматический бан IP после 5 неудачных попыток входа. Банит на 10 минут по умолчанию.
- Отдельный пользователь вместо root — ограничивает ущерб при компрометации.
Шаг 1: Создаём пользователя и настраиваем SSH-ключи
Никогда не работайте под root в повседневной эксплуатации. Создайте обычного пользователя с sudo и настройте SSH-ключи:
# На сервере: создаём пользователя
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Шаг 2: Firewall через UFW
UFW — обёртка над iptables для людей. Открываем минимум портов:
# Установка (обычно предустановлен)
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-адреса с неудачными попытками входа:
# Установка
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-код к ключевой аутентификации.
Проверенные серверы от надежных провайдеров
Timeweb Cloud
Cloud Start
CPU
1 ядер • 3.3 ГГц
RAM
1 ГБ
Диск
15 ГБ 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 — для экспертов с нестандартными требованиями.