Security Lab

Как настроить SSH для безопасной аутентификации: полное руководство

Как настроить SSH для безопасной аутентификации: полное руководство

SSH (Secure Shell) — это протокол, который обеспечивает защищённый доступ к удалённым серверам. Это один из самых важных инструментов для системных администраторов и разработчиков, особенно когда речь идет о безопасности. В этом посте я объясню, как настроить SSH для безопасной аутентификации, чтобы защитить ваш сервер от несанкционированного доступа.

Шаг 1: Генерация SSH-ключей

Что такое SSH-ключи?

SSH-ключи — это пары ключей, состоящие из приватного и публичного ключа. Публичный ключ размещается на сервере и используется для аутентификации, а приватный ключ хранится на локальном компьютере пользователя и должен быть защищён.

Как создать SSH-ключи?

Для генерации SSH-ключей используйте команду ssh-keygen:

ssh-keygen -t ed25519

Алгоритм Ed25519 рекомендуется за его высокую безопасность и производительность. Вы также можете использовать RSA с ключом длиной 4096 бит:

ssh-keygen -t rsa -b 4096

После выполнения команды вам будет предложено указать место для сохранения ключа и создать парольную фразу для дополнительной защиты приватного ключа.

Шаг 2: Настройка сервера для использования SSH-ключей

Копирование публичного ключа на сервер

Для добавления публичного ключа на сервер используйте команду ssh-copy-id:

ssh-copy-id user@server_address

Эта команда добавит ваш публичный ключ в файл ~/.ssh/authorized_keys на сервере.

Добавление ключа вручную

Вы можете вручную скопировать содержимое вашего публичного ключа (файл .pub) и вставить его в файл ~/.ssh/authorized_keys на сервере.

Шаг 3: Улучшение безопасности SSH

Отключение входа по паролю

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

  1. Откройте файл конфигурации SSH /etc/ssh/sshd_config.
  2. Найдите строку PasswordAuthentication и измените её на no.

PasswordAuthentication no

  1. Перезапустите SSH-сервер:

sudo systemctl restart sshd

Отключение входа под root

Вход под root даёт полный доступ к системе, что крайне опасно. Для отключения входа под root:

  1. В файле конфигурации SSH /etc/ssh/sshd_config найдите строку PermitRootLogin и измените её на no.

PermitRootLogin no

  1. Перезапустите SSH-сервер.

Изменение порта по умолчанию

Изменение порта SSH с 22 на другой номер может снизить вероятность автоматических атак:

  1. В файле конфигурации SSH /etc/ssh/sshd_config измените строку Port на желаемый номер порта, например:

Port 2222

  1. Перезапустите SSH-сервер.

Настройка двухфакторной аутентификации

Двухфакторная аутентификация добавляет дополнительный уровень безопасности. Вы можете использовать Google Authenticator или аппаратные токены (например, YubiKey). Настройка двухфакторной аутентификации может включать установку и настройку PAM (Pluggable Authentication Modules).

Шаг 4: Отключение ненадежных алгоритмов и настройка надежных ключей

Отключение ключей ECDSA

Алгоритм ECDSA связан с технологиями NIST, что не всегда надежно. Чтобы предотвратить генерацию и использование этих ключей, создадим неработающие символические ссылки:

cd /etc/ssh

rm ssh_host_ecdsa_key*

rm ssh_host_key*

ln -s ssh_host_ecdsa_key ssh_host_ecdsa_key

ln -s ssh_host_key ssh_host_key

Отключение ключей DSA

Ключи DSA ограничены размером в 1024 бита, что не считается безопасным. Для их отключения:

cd /etc/ssh

rm ssh_host_dsa_key*

ln -s ssh_host_dsa_key ssh_host_dsa_key

Генерация RSA-ключа большего размера

Для более надежной аутентификации стоит сгенерировать RSA-ключ длиной 4096 бит:

cd /etc/ssh

rm ssh_host_rsa_key*

ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key < /dev/null

Генерация клиентских ключей

Для создания клиентских ключей используйте следующие команды:

ssh-keygen -t ed25519

ssh-keygen -t rsa -b 4096

Заключение

Из этого поста можно сделать вывод, что настройка SSH для безопасной аутентификации — это важный шаг в защите ваших серверов. Используйте SSH-ключи, отключите вход по паролю, измените стандартный порт, настройте двухфакторную аутентификацию и отключите ненадежные алгоритмы для максимальной безопасности. Помните, что безопасность — это процесс, и регулярное обновление и проверка ваших настроек — залог защиты ваших данных.

SSH root аутентификация безопасность ключи
Alt text

Комнатный Блогер

Объясняю новую цифровую реальность