В этой статье мы покажем, как настроить двухфакторную аутентификацию (2FA) для SSH входа на Linux сервер с помощью Google PAM (Pluggable Authentication Module) и мобильного приложения Microsoft Authenticator . 2FA позволяет добавить дополнительный слой безопасности при аутентификации на Linux хосте по SSH. Теперь для входа на сервер кроме имени и пароля пользователя (rsa ключа), вы должны будете ввести одноразовый цифровой пароль (Time-based One-time Password — TOTP), который генерируется в вашем смартфоне.
Установите на свой смартфон мобильное приложение Microsoft Authenticator (доступно как в Google Store, так и в App Store).
Теперь нужно установить и настроить пакет Google PAM на вашем Linux сервере:
sudo apt-get install libpam-google-authenticator
В RHEL/CentOS/Fedora: yum install google-authenticator
google-authenticator
Y -> Enter
Y -> Enter
Y -> Enter
Y -> Enter
Y -> Enter
$ 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 секунд
auth required pam_google_authenticator.so nullok
sudo mcedit /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
Теперь попробуйте подключится к вашему хосту Linux по SSH. Перед вводом пароля у вас будет запрошено ввести код верификации (verification code).
Откройте приложение Authenticator на смартфоне, найдите пользователя вашего сервера. Введите в консоль 6-символьный одноразовый пароль (One-time password code), который сгенерировал для вас Authenticator.
Обратите внимание, что этот одноразовый код ограничен по времени (по умолчанию 30 секунд). Если вы ввели правильный одноразовый код, появится предложение ввести пароль пользователя Linux.
При успешном входе в логе аутентификации появится строка:
cat /var/log/auth.log
Dec 21 09:01:22 srv-ubun01 sshd(pam_google_authenticator)[6242]: Accepted google_authenticator for sysops
Если указать неверный код, в логе будут ошибки:
Dec 21 09:02:38 srv-ubun01 sshd(pam_google_authenticator)[6436]: Invalid verification code for sysops_x000D_Dec 21 09:02:40 srv-ubun01 sshd[6436]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.14.1 user=sysops
Если вы хотите использовать 2FA вместе с SSH аутентификацией по ключам, добавьте следующие директивы в /etc/ssh/sshd_config:
PasswordAuthentication no_x000D_PubkeyAuthentication yes_x000D_AuthenticationMethods publickey,keyboard-interactive
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…