Логотип

Как настроить двухфакторную аутентификацию для SSH в Linux

Как настроить двухфакторную аутентификацию для SSH в Linux

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

Google Authenticator — это модуль с открытым исходным кодом, который включает в себя реализацию токенов проверки с одноразовыми паролями (TOTP), разработанную Google.

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

В этой статье я покажу вам, как настроить SSH для двухфакторной аутентификации в дистрибутивах Linux на базе RedHat и Debian, таких как Fedora, CentOS Stream, Rocky Linux, AlmaLinux, Ubuntu, Debian и Mint.

 

Установка Google Authenticator в Linux

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

В системах на базе RedHat (RHEL, CentOS Stream, Rocky Linux, AlmaLinux) необходимо включить репозиторий EPEL и установить необходимые пакеты:

sudo dnf install epel-release -y
sudo dnf install google-authenticator qrencode-libs -y

 

Читать  Что такое SSH в Linux

В системах на базе Debian установите модуль Google Authenticator PAM с помощью следующей команды apt.

sudo apt install libpam-google-authenticator -y

Генерировать Токены аутентификации Google

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

google-authenticator

 

Вам будет предложено ответить на ряд вопросов. В большинстве случаев просто введите "y" (да). Если что-то пойдёт не так, вы можете снова запустить команду, чтобы сбросить настройки.

После ответа на эти вопросы вы получите секретный ключ и коды экстренных ситуаций. Запишите эти данные, так как секретный ключ понадобится нам позже для настройки приложения Google Authenticator.

Вы можете увидеть такой результат:

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint

Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.

Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1
Code confirmation skipped

Your emergency scratch codes are:
83714291
53083200
80975623
57217008
77496339

 

Продолжайте отвечать "y" на все запросы о конфигурации:

Do you want me to update your "/root/.google_authenticator" file (y/n) y
Do you want to disallow multiple uses of the same authentication token? (y/n) y
Do you want to increase the window to about 4min? (y/n) y
Do you want to enable rate-limiting? (y/n) y
Генерировать Токены Аутентификации Google

Настройка SSH для использования Google Authenticator в Linux

Откройте файл конфигурации PAM ‘/etc/pam.d/sshd‘ и добавьте следующую строку в начало или перед любой строкой pam_permit.so:

auth required pam_google_authenticator.so nullok

 

Читать  Bash Heredoc

Примечание: если SELinux включен, переместите файл .google_authenticator в папку с соответствующим контекстом SELinux (например, ~/.ssh/) и укажите полный путь:

auth required pam_google_authenticator.so secret=/home//.ssh/.google_authenticator nullok

 

Затем откройте файл конфигурации SSH ‘/etc/ssh/sshd_config‘ и убедитесь, что в нём заданы следующие параметры:

UsePAM yes
ChallengeResponseAuthentication yes

 

При желании вы можете включить двухфакторную аутентификацию и аутентификацию по ключу/паролю:

AuthenticationMethods publickey,keyboard-interactive

 

Наконец, перезапустите службу SSH, чтобы изменения вступили в силу.

sudo systemctl restart sshd

 

Настройка приложения Google Authenticator

Запустите приложение Google Authenticator на своём смартфоне. Нажмите + и выберите «Введите ключ настройки». Если у вас нет этого приложения, вы можете скачать и установить приложение Google Authenticator на свои устройства Android/iPhone/Blackberry.

Добавьте свою учётную запись «Имя» и введите «секретный ключ», сгенерированный ранее.

Он сгенерирует одноразовый пароль (код подтверждения), который будет постоянно меняться каждые 30 секунд на вашем телефоне.

Теперь попробуйте войти в систему через SSH, вам будет предложено ввести код Google Authenticator (код подтверждения) и пароль всякий раз, когда вы попытаетесь войти в систему через SSH. У вас есть только 30 секунд, чтобы ввести этот проверочный код; если вы пропустите его, будет восстановлен новый проверочный код.

login as: destroyer
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 12 02:21:44 2024 from 82.146.45.247
[root@destroyer ~]#

 

Если у вас нет смартфона, вы также можете использовать надстройку Authenticator для Firefox или настольное приложение TOTP, например KeePassXC или Authenticator App для Linux.

Читать  Команды Linux Как предотвратить ошибку SSH Broken Pipe

 

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

Редактор: AndreyEx

Рейтинг: 5 (2 голоса)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала