Двухфакторная аутентификация Google Authenticator

Материал из ALT Linux Wiki
Версия от 20:58, 30 сентября 2019; AlexeiMezin (обсуждение | вклад) (Новая страница: «== Введение == Двухфакторную аутентификацию для входа в систему (локально, через ssh, через O…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Введение

Двухфакторную аутентификацию для входа в систему (локально, через ssh, через OpenVPN и т.п.) можно настроить без использования аппаратных токенов, GSM-модемов для отправки СМС и прочего оборудования. Это можно сделать с использованием Google Authenticator.

Описание и принцип работы Google Authenticator можно найти в интернете. Краткая суть: пользователь на свой смартфон (Android/Apple) устанавливает небольшое бесплатное приложение, и вводит в него ключ, сгенерированный на компьютере. При попытке логина на этот компьютер, система запрашивает одноразовый пинкод, вычисленный на основе ключа и текущего времени. У пользователя на смартфоне такой же ключ и такое же системное время (допустимо расхождение в десятки секунд), поэтому он может вычислить нужный пинкод и ввести его с клавиатуры. Время жизни пинкода по умолчанию 30 секунд, то есть каждые 30 секунд вычисляется новый код. Для работы приложения на смартфоне не нужно подключение к интернету или сотовой сети. Если нет возможности воспользоваться смартфоном, можно ввести один из нескольких одноразовых паролей, сгенерированных во время настройки системы.

Необходимые пакеты

Для работы с Google Authenticator необходимо установить пакет libpam-google-authenticator. Так же желательно установить библиотеку libqrencode4 (или libqrencode для систем на основе p8 или младше).

На смартфон можно стандартными способами установить программу Google Authenticator или FreeOTP.

Включение двухфакторной аутентификации для логина по ssh

Пример: /etc/pam.d/ssh:

#%PAM-1.0
auth            include         system-auth-local
auth            [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth            required        pam_google_authenticator.so echo_verification_code nullok
account         include         common-login
password        include         common-login
session         include         common-login