Страница 1 из 1

Включаем двухфакторную аутентификацию (2FA) для SSH входа в Linux

Добавлено: 17 май 2024, 14:17
ya
Включаем двухфакторную аутентификацию (2FA) для SSH входа в Linux
https://winitpro.ru/index.php/2021/12/21/2fa-dlya-ssh-v-linux/


apt-get install libpam-google-authenticator

Можно задать сразу задать все настройки $ google-authenticator -t -f -d -w 3 -e 5 -r 3 -R 30
-t – включить вход по одноразовому паролю
-f – сохранить конфигурацию в файле ~/.google_authenticator
-d – запретить использовать предыдущие пароли
-w 3 – разрешить использовать один предудущий и один следующий токен (если время не синхронизировано)
-e 5 – сгенерировать 5 аварийных кодов
-r 3 -R 30 – разрешить не более 3 логинов каждые 30 секунд

Теперь нужно добавить следующую строку в файл /etc/pam.d/sshd:

Код: Выделить всё

auth required pam_google_authenticator.so nullok
Опция nullok позволяет пользователю, для которого не настроена двухфакторная аутентификация, входить с помощью только имени и пароля. После настройки и тестирования 2FA рекомендует убрать этот параметр, чтобы требовать обязательное использование двухфакторной аутентификации.

Теперь внесите изменения в файл /etc/ssh/sshd_config: sudo mcedit /etc/ssh/sshd_config
Измените значение в строке ChallengeResponseAuthentication на Yes:
ChallengeResponseAuthentication yes
Сохраните изменения в файле sshd_config и перезапустите sshd: service ssh restartsshd - включить двухфакторную аутентфикацию
Теперь попробуйте подключится к вашему хосту Linux по SSH. Перед вводом пароля у вас будет запрошено ввести код верификации (verification code).

Откройте приложение Authenticator на смартфоне, найдите пользователя вашего сервера. Введите в консоль 6-символьный одноразовый пароль (One-time password code), который сгенерировал для вас Authenticator.


При успешном входе в логе аутентификации появится строка:

cat /var/log/auth.log

Dec 21 09:01:22 srv-ubun01 sshd(pam_google_authenticator)[6242]: Accepted google_authenticator for sysops

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

Код: Выделить всё

PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey,keyboard-interactive