Безопасность

Защита SSH

2 мин чтения

Безопасный доступ к Linux-ВМ по SSH

Подбор паролей по SSH — самая частая атака на серверы с публичным IP-адресом. Боты сканируют интернет и перебирают тысячи паролей в час. Лучшая защита — вход только по SSH-ключам.


Шаг 1. Добавьте SSH-ключ

  • При создании ВМ добавьте свой открытый SSH-ключ в блоке Add SSH Key To Your Instance. См. Виртуальная машина.
  • Для существующей ВМ ключами можно управлять на вкладке SSH Keys в настройках ВМ. См. SSH-ключи.

Добавление SSH-ключа

Если ключа еще нет, создайте его на своем компьютере:

ssh-keygen -t ed25519

Открытый ключ сохраняется в ~/.ssh/id_ed25519.pub. Никогда не передавайте и не загружайте закрытый ключ (id_ed25519 без .pub).

Шаг 2. Отключите вход по паролю и под root

Внимание

Сначала убедитесь, что можете войти по ключу. Не закрывайте текущую SSH-сессию и проверьте вход во втором окне терминала. Иначе можно потерять доступ к серверу. Если это случилось, воспользуйтесь веб-консолью.

  1. Если вы входите под root, создайте пользователя с правами sudo:

    adduser admin
    usermod -aG sudo admin    # Ubuntu и Debian
    usermod -aG wheel admin   # Rocky, AlmaLinux, RHEL

    Скопируйте свой ключ этому пользователю (~/.ssh/authorized_keys) и проверьте, что можете войти под ним.

  2. Откройте конфигурацию SSH-сервера:

    sudo nano /etc/ssh/sshd_config
  3. Задайте параметры:

    PasswordAuthentication no
    PermitRootLogin no

    В новых дистрибутивах проверьте также файлы в /etc/ssh/sshd_config.d/: настройка в них может переопределять основной файл.

  4. Проверьте конфигурацию и перезапустите SSH-сервер:

    sudo sshd -t && sudo systemctl restart ssh    # Ubuntu и Debian
    sudo sshd -t && sudo systemctl restart sshd   # Rocky, AlmaLinux, RHEL
  5. Во втором окне терминала проверьте, что вход по ключу по-прежнему работает.

Шаг 3. Ограничьте, кто может подключаться

Разрешите SSH только со своих IP-адресов или через VPN. См. Сетевой доступ. Смена порта с 22 на нестандартный уменьшает шум от ботов в журналах, но не заменяет ограничение по IP.

Шаг 4. Блокируйте подбор паролей

Установите fail2ban — он блокирует IP-адреса, с которых много раз не удается войти.

sudo apt install fail2ban                         # Ubuntu и Debian
sudo dnf install epel-release && sudo dnf install fail2ban   # Rocky, AlmaLinux
sudo systemctl enable --now fail2ban

Настройки по умолчанию защищают SSH. Проверить статус можно командой:

sudo fail2ban-client status sshd

Заключение

Вход по SSH только по ключам с ограничением по IP защищает ВМ от самых частых атак. Для Windows-ВМ те же принципы относятся к RDP — см. Сетевой доступ.