Как усилить безопасность используя SSH ключи

SSH ключи применяются в качестве идентификатора пользователя при подключении через удаленный терминал SSH. При авторизации используется пара ключей: публичный и приватный. Публичный ключ хранится на удаленном сервере, а приватный на локальном компьютере. При отправке запроса на соединение с локального компьютера SSH Daemon сгенерирует Security Challenge (основанный на публичном ключе), только в том случае если ваш приватный ключ подходит.

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

Теперь рассмотрим пример использования SSH ключей для подключения к удаленному серверу.

Сгенерируем пару ключей на локальном компьютере:

ssh-keygen -t rsa -b 4096 -C «Server1»
  • Параметр -t задает формат ключа (в данном случае RSA);
  • Параметр -b задает длину ключа (в примере 4096 бит);
  • Параметр -С задает комментарий (лучше задавайте комментарий если у вас несколько серверов);

Далее вводим путь, куда будут сохранены файлы ключей, например ~/.ssh/Server1. Большинство Linux дистрибутивов хранят ключи в папке ~/.ssh

Затем, программа генерации ключей предлагает защитить приватный ключ паролем. Использование пароля значительно повысит уровень безопасности. Введем пароль дважды. Обратите внимание, что при вводе пароль никак не отображается.

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

ssh-copy-id -i .ssh/5.45.86.120 [email protected]
  • В параметре -i следует указать путь где хранится публичный ключ (мы его указывали ранее, при генерации);
  • Перед @ вместо root можно указать имя любого пользователя на удаленном сервере;
  • После @ указывается IP-адрес сервера;

Для установки ключа, вводим пароль от пользователя, под которым выполняется вход.

Если вывелось сообщение «Nuber of key(s) added: 1», то ключ успешно добавлен. Теперь попробуем авторизоваться по ключу.

ssh -i .ssh/5.45.86.120 [email protected]

Теперь вводим пароль уже не от пользователя root, а от приватного ключа.

Если пароль правильный и ключ подлинный, успешно попадаем в удаленную консоль сервера.

Первым делом запретим любые виды авторизации, кроме как через SSH ключи. Для дистрибутивов семейства Debian это делается так:

sudo nano /etc/ssh/sshd_config

Нужно привести файл конфигурации к такому виду:

PermitRootLogin without-password
AuthorizedKeysFile       %h/.ssh/authorized_keys
PasswordAuthentification no

Сохраняем файл и перезапускаем службу SSH на сервере.

sudo /etc/init.d/ssh restart

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

ShiftHackZ

ShiftHackZ

Автор блога LocalHost // Blog. Интересуюсь компьютерными технологиями, системным администрированием и веб-разработкой. Днями напролет провожу время за своим компьютером и самосовершенствуюсь. Подробнее

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *