Двухфакторная аутентификации Linux позволяет обеспечить вход по SSH, с использованием дополнительного одноразового пароля. Система двухфактоной аутентификации позволяет обеспечить доступ пользователя к системе используя несколько методов аутентификации. В случае с SSH это имя пользователя, пароль (ключ SSH) и физический доступ к смартфону пользователя (который имеет свою защиту).
Перед началом настройки убедитесь что на сервере установлена корректная временная зона и синхронизированы часы. В противном случае можно потерять доступ к серверу.
Установка Google Authenticator в Linux
Необходимо установить на хосте Linux Google Authenticator согласно данному руководству.
Генерация ключа входа
Для начала, просто запускаем google-authenticator, на Linux машине.
1 | google-authenticator |
Приложение сгенерирует QR-код и секретный ключ.
Подключение приложения
В различных мактетах сейчас есть множество приложений для работы с 2FA, наиболее распространенные Google Authenticator и Яндексю.Ключ (они совместымы и можно использовать любое)
Есть два способа подключения:
- Ввести секретный код руками
- Сканировать ключ, просто наведя камеру на экран
После ввода данных, приложение сгенерирует одноразовый пароль
Настройка двухфакторной аутентификации Linux
Одноразовый пароль надо ввести в консоли (Enter code from app), далее на все вопросы отвечаем Y
Приложение так же создаст аварийные коды (emergency scratch codes), которые необходимо сохранить в надежном месте на случай потери доступа к устройству.
Включение двухфакторной аутентификации в SSH Сервере
Последним шагом, необходимо внести изменения в настройки SSH сервера
в файл /etc/pam.d/sshd, добавить строку:
1 | nano /etc/pam.d/sshd |
1 | auth required pam_google_authenticator.so |
в файле /etc/ssh/sshd_config, необходимо изменить параметр ChallengeResponseAuthentication:
1 | nano /etc/ssh/sshd_config |
1 | ChallengeResponseAuthentication yes |
После чего, перезапустить ssh сервер:
1 | systemctl reload sshd |
После этого, при следующем входе сервер запросит дополнительный код