*Cube-Host– облачный хостинг!!

Безопасность VPS под Linux: SSH-ключи, UFW и Fail2Ban

Linux VPS Security: SSH Keys, UFW, and Fail2Ban

VPS, подключенный к Интернету, будет просканирован и подвергнется атаке в течение нескольких минут. Самый быстрый способ снизить риск — усилить защиту доступа по SSH, включить брандмауэр с политикой «по умолчанию — запрет» и заблокировать попытки взлома методом перебора. В этом руководстве представлена проверенная базовая настройка для Ubuntu/Debian (с примечаниями для систем на базе RHEL).

Безопасность также зависит от стабильности и контроля: начните с чистого, надежного VPS под Linux, а затем выполните эти шаги сразу после развертывания.

Перед началом (как избежать блокировки доступа)

  • Оставьте один сеанс SSH открытым во время редактирования конфигурации SSH.
  • Убедитесь, что у вас есть доступ к консоли/VNC/последовательному интерфейсу из панели провайдера (аварийный доступ — это спасение).
  • Если вы планируете изменить порт SSH, сначала откройте новый порт в UFW, а затем измените конфигурацию SSH.

1) Обновите систему

Начните с установки обновлений безопасности.

Debian/Ubuntu:

sudo apt update && sudo apt -y upgrade

На базе RHEL (AlmaLinux/Rocky/CentOS):

sudo dnf -y update || sudo yum -y update

2) Создание пользователя с правами администратора (без использования root)

Работа под root — рискованно. Создайте обычного пользователя с правами sudo и используйте его для повседневного администрирования.

Ubuntu/Debian

sudo adduser admin
sudo usermod -aG sudo admin

На базе RHEL (AlmaLinux/Rocky/CentOS)

sudo useradd -m -s /bin/bash admin
sudo passwd admin
sudo usermod -aG wheel admin

Необязательно (рекомендуется): ограничьте вход по SSH специальной группой (например: sshusers).

sudo groupadd sshusers || true
sudo usermod -aG sshusers admin
Creating admin user on Linux VPS

3) Ключи SSH: генерация и добавление

Важно: на сервер копируется только открытый ключ (.pub) копируется на сервер. Закрытый ключ остается на вашем локальном компьютере, и его ни в коем случае нельзя передавать другим пользователям.

Сгенерируйте ключ локально (Windows/macOS/Linux)

ssh-keygen -t ed25519 -a 64

Нажмите Enter, чтобы принять местоположение по умолчанию (~/.ssh/id_ed25519) и, если возможно, установите парольную фразу.

Скопируйте открытый ключ на сервер

Рекомендуемый метод (ssh-copy-id):

ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@SERVER_IP

Ручной способ (если ssh-copy-id недоступен):

sudo -u admin mkdir -p /home/admin/.ssh
sudo -u admin chmod 700 /home/admin/.ssh
sudo -u admin nano /home/admin/.ssh/authorized_keys
sudo -u admin chmod 600 /home/admin/.ssh/authorized_keys
Adding SSH public key on Linux VPS

Проверьте вход с помощью ключа сейчас (до изменения настроек SSH):

ssh admin@SERVER_IP

4) Усиление безопасности SSH: отключение паролей и входа под пользователем root

Отредактируйте конфигурацию SSH-демона. Файл обычно находится в /etc/ssh/sshd_config.

sudo nano /etc/ssh/sshd_config

Укажите (или убедитесь, что) эти директивы присутствуют. Настройте порт, если вы используете пользовательский.

# Optional: change SSH port (remember to allow it in firewall first)
# Port 2222

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

# Disable interactive auth methods if not needed
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no

# Optional: restrict who can SSH (recommended)
AllowGroups sshusers

# Reasonable brute-force limits (helps even without Fail2Ban)
MaxAuthTries 3
LoginGraceTime 30

Проверьте синтаксис конфигурации (безопасная проверка):

sudo sshd -t

Перезапустите/перезагрузите службу SSH:

Ubuntu/Debian:

sudo systemctl reload ssh

На базе RHEL:

sudo systemctl reload sshd
Hardening SSH settings on Linux VPS

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

5) UFW: брандмауэр «закрыт по умолчанию»

UFW — самый простой брандмауэр для Ubuntu/Debian. Его цель: заблокировать весь входящий трафик и разрешить только то, что необходимо вашим сервисам.

Установка и настройка UFW (Ubuntu/Debian):

sudo apt update && sudo apt install -y ufw

# Defaults
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Allow SSH (important: adjust if you changed the port)
sudo ufw allow OpenSSH

# Common web ports (optional)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Enable and check status
sudo ufw enable
sudo ufw status verbose
UFW rules on Linux VPS

Если вы используете пользовательский порт SSH (например, 2222), добавьте его явно, прежде чем что-либо включать или отключать:

sudo ufw allow 2222/tcp

Примечание для систем на базе RHEL: UFW там не является стандартным. Вместо него большинство использует firewalld (firewall-cmd) вместо него.

6) Fail2Ban: установка и защита SSH

Fail2Ban отслеживает журналы и блокирует IP-адреса, демонстрирующие признаки вредоносной активности (например, повторяющиеся неудачные попытки входа). Это снижает количество ложных срабатываний при переборе паролей и предотвращает многие базовые атаки.

Установите и включите Fail2Ban:

sudo apt install -y fail2ban || sudo dnf install -y fail2ban
sudo systemctl enable --now fail2ban
Fail2Ban installation on Linux VPS

Создайте файл jail.local для sshd

Создайте или отредактируйте:

sudo nano /etc/fail2ban/jail.local

Минимальная рекомендуемая конфигурация:

[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5

# If you use UFW, this integrates cleanly on Ubuntu/Debian
banaction = ufw

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s

Перезапустите Fail2Ban:

sudo systemctl restart fail2ban
Fail2Ban jail.local for sshd

Совет: позже вы также сможете защитить конечные точки аутентификации Nginx и агрессивных ботов с помощью дополнительных jail, но для начала займитесь SSH.

7) Проверка работы и журналов

Проверка статуса Fail2Ban и активных блокировок:

sudo fail2ban-client status
sudo fail2ban-client status sshd

Просмотр журналов:

sudo tail -n 200 /var/log/fail2ban.log
Fail2Ban status and logs on Linux VPS

Как проверить блокировку (безопасный способ): с другого компьютера сделайте 5–6 неверных попыток входа по SSH. Затем проверьте снова fail2ban-client status sshd — ваш IP должен появиться в списке заблокированных IP-адресов.

Снять запрет с конкретного IP (при необходимости):

sudo fail2ban-client set sshd unbanip 203.0.113.50

Контрольный список безопасности

  • Вход в SSH по ключу работает, аутентификация по паролю отключена, вход под пользователем root отключен.
  • Брандмауэр настроен на «запрет входящего / разрешение исходящего», открыты только необходимые порты.
  • Fail2Ban обеспечивает защиту sshd, блокировки подтверждены, журналы отслеживаются.
  • У вас есть доступ к аварийной консоли и документация по портам/пользователям.

Защитите свой VPS под Linux с самого первого дня

Разверните «чистый» сервер, ограничьте доступ по SSH только ключами, разрешите в брандмауэре только то, что вам нужно, и позвольте Fail2Ban справляться с шумом от брутфорс-атак. Начните с надежного VPS под Linux и примените эти базовые меры безопасности сразу после развертывания.

Prev
Menu