🧠 Как настроить двухфакторную (2FA) аутентификацию для SSH на CentOS / RHEL 8/7 |

🧠 Как настроить двухфакторную (2FA) аутентификацию для SSH на CentOS / RHEL 8/7

Мануал

Мы рассмотрим, как защитить SSH с помощью двухфакторной аутентификации с использованием Google Authenticator на CentOS / RHEL 8/7.

Двухфакторная аутентификация – это процесс, который состоит из двух этапов для проверки личности объекта, обращающегося к услугам в сети.

Это добавляет второй уровень безопасности к стандартной аутентификации по имени пользователя и паролю.

SSH – это широко используемый протокол для доступа к удаленным серверам Linux / Unix и передачи файлов между серверами.

?????? Как разрешить / запретить определенным пользователям вход через SSH в Ubuntu 18.04

Если нет правильной политики безопасности, регулирующей доступ через ssh, успешная атака методом перебора может привести к убыткам для компании.

В этом руководстве будет обсуждаться, как можно настроить двухфакторную (2FA) аутентификацию для SSH на CentOS / RHEL 8/7.

Второй уровень безопасности, который мы будем использовать в этом упражнении, – Google Authenticator.

Мы будем использовать приложение Google Authenticator для Android (в магазине Play) и iOS (в iTunes) для генерации кодов аутентификации.

Что  потребуется?

  • Сервер под управлением RHEL / CentOS 8/7
  • Телефон под управлением Android или iOS
  • Приложение Google Authenticator
  • Настроенное соединение SSH

Шаг 1: Установите Репозиторий EPEL

Вам необходимо установить и работать с EPEL-репозиторием, чтобы можно было установить зависимости.

Используйте наше руководство ниже, чтобы добавить репозиторий EPEL в вашу систему RHEL / CentOS 8.

? Как установить репозиторий EPEL на RHEL 8 / CentOS 8

Шаг 2: Установите и настройте необходимые пакеты

Нам нужно установить модуль PAM Google Authenticator из репозитория EPEL.

Прежде всего, подтвердите, что пакет доступен.

$ sudo yum search google-authenticator
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:01:53 ago on Sat 29 Dec 2018 10:09:22 AM EAT.
========================================================== Name Matched: oogle-authenticator ==========================================================
google-authenticator.x86_64 : One-time pass-code support using open standards

После подтверждения продолжите установку с qrencode, используя менеджер пакетов dnf или yum.

sudo dnf -y install google-authenticator qrencode

Пакет Google Authenticator содержит подключаемый модуль аутентификации (PAM), который позволяет входить в систему с использованием одноразовых паролей, соответствующих открытым стандартам, разработанным Инициативой для открытой аутентификации (OATH) (которая не связана с OAuth).

Более подробную информацию об установленном пакете можно проверить с помощью:

$ rpm -qi google-authenticator
 Name        : google-authenticator
 Version     : 1.04
 Release     : 1.el7
 Architecture: x86_64
 Install Date: Sat 29 Dec 2018 10:12:50 AM EAT
 Group       : Unspecified
 Size        : 98922
 License     : ASL 2.0
 Signature   : RSA/SHA256, Thu 17 Aug 2017 03:27:00 AM EAT, Key ID 6a2faea2352c64e5
 Source RPM  : google-authenticator-1.04-1.el7.src.rpm
 Build Date  : Thu 17 Aug 2017 03:13:19 AM EAT
 Build Host  : buildhw-06.phx2.fedoraproject.org
 Relocations : (not relocatable)
 Packager    : Fedora Project
 Vendor      : Fedora Project
 URL         : https://github.com/google/google-authenticator-libpam/
 Summary     : One-time pass-code support using open standards
 ......

Шаг 3: Настройка SSH-сервера

После установки вам нужно заставить SSH использовать модуль PAM Google Authenticator.

Для этого откройте файл /etc/pam.d/sshd и добавьте следующую строку в конце.

$ sudo vi /etc/pam.d/sshd
# Add to end
auth required pam_google_authenticator.so

Затем измените /etc/ssh/sshd_config

$ sudo vi /etc/ssh/sshd_config
ChallengeResponseAuthentication yes

Измените значение ChallengeResponseAuthentication с «no» на «yes», чтобы включить пароли запроса-ответа.

Шаг 4: Настройка аутентификации

С Google Authenticator настройка двухфакторной аутентификации – это прогулка в парке.

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

В терминале выполните команду google-authenticator.

$ google-authenticator

Система задаст вам ряд вопросов, вот рекомендуемая конфигурация:

  • Use “time-based” time-based tokens: yes
  • Update the .google_authenticator file: yes
  • Disallow multiple uses of the same authentication token: yes
  • Increase the original generation time limit: no
  • Enable rate-limiting: yes

Вам будет предоставлен секретный ключ, проверочный код и аварийные скретч-коды, которые будут использоваться, если у вас нет доступа к вашему телефону.

Запишите их на бумаге или блокноте и сохраните их в безопасности.

Your new secret key is: DKM6MJWQVGZHLTWJ4G45XXXXXX
Your verification code is 869XXX
Your emergency scratch codes are:

 2746XXXX
 2665XXXX
 3671XXXX
 2271XXXX
 8000XXXX

Установите и настройте Google Authenticator

Приложение Google Authenticator доступно для Android (в магазине Play) и iOS (в iTunes) для генерации кодов аутентификации.

Скачайте и установите его.

Следуйте инструкциям, чтобы завершить настройку, затем выберите Сканировать штрих-код или введите Закрытый ключ.

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

Вы должны увидеть аккаунт, добавленный в Google Authenticator

Проверка двухфакторной аутентификации SSH

Попробуйте инициировать новый  сеанс SSH к серверу.

$ ssh rhel8 
Password: <Enter SSH Password>
Verification code: <Enter Verificarion code on Google Authenticator>
Activate the web console with: systemctl enable --now cockpit.socket

Last failed login: Sat Dec 29 11:51:46 EAT 2018 from 192.168.122.1 on ssh:notty
Last login: Sat Dec 29 11:48:31 2018
[jmutai@rhel8 ~]$

Ваша двухфакторная аутентификация SSH была успешно настроена на RHEL / CentOS 8.

Другие статьи из этой серии:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Роман

    auth required убьет авторизацию в ispmanager, поэтому нужно auth optional, если пользуетесь им

    Ответить
  2. Igor

    Вот тут ошибка
    “Измените значение ChallengeResponseAuthentication с «yes» на «no», чтобы включить пароли запроса-ответа.”
    Должно быть с «no» на «yes»

    Ответить
    1. cryptoparty автор

      Спасибо, поправили

      Ответить