Двухфакторная аутентификация Google Authenticator: различия между версиями
(не показана 1 промежуточная версия этого же участника) | |||
Строка 14: | Строка 14: | ||
Пример: | Пример: | ||
{{prg|/etc/pam.d/ | В файле {{prg|/etc/openssh/sshd_config}} включить опцию | ||
<pre> | |||
KbdInteractiveAuthentication yes | |||
</pre> | |||
Для дистрибутивов на базе p11 так же нужно включить поддержку в клиенте, добавив аналогичную строку в файл {{prg|/etc/openssh/ssh_config}}. | |||
{{prg|/etc/pam.d/sshd}}: | |||
<pre> | <pre> | ||
#%PAM-1.0 | #%PAM-1.0 | ||
auth include | auth include common-login | ||
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf | auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf | ||
auth required pam_google_authenticator.so echo_verification_code nullok | auth required pam_google_authenticator.so echo_verification_code nullok | ||
Строка 34: | Строка 43: | ||
# empty line at the end!!! | # empty line at the end!!! | ||
</pre> | </pre> | ||
Если нужно, чтоб пинкод запрашивался всегда, можно удалить строку с упоминанием этого файла из {{prg|/etc/pam.d/ | Если нужно, чтоб пинкод запрашивался всегда, можно удалить строку с упоминанием этого файла из {{prg|/etc/pam.d/sshd}}. | ||
Параметр {{prg|echo_verification_code}} включает отображение цифр пинкода при их вводе. Параметр {{prg|nullok}} разрешает вход без пинкода для тех пользователей, у которых не настроен Google Authenticator. | Параметр {{prg|echo_verification_code}} включает отображение цифр пинкода при их вводе. Параметр {{prg|nullok}} разрешает вход без пинкода для тех пользователей, у которых не настроен Google Authenticator. |
Текущая версия от 11:06, 12 июля 2024
Введение
Двухфакторную аутентификацию для входа в систему (локально, через ssh, через OpenVPN и т.п.) можно настроить без использования аппаратных токенов, GSM-модемов для отправки СМС и прочего оборудования. Это можно сделать с использованием Google Authenticator.
Описание и принцип работы Google Authenticator можно найти в интернете. Краткая суть: пользователь на свой смартфон (Android/Apple) устанавливает небольшое бесплатное приложение, и вводит в него ключ, сгенерированный на компьютере. При попытке логина на этот компьютер, система запрашивает одноразовый пинкод, вычисленный на основе ключа и текущего времени. У пользователя на смартфоне такой же ключ и такое же системное время (допустимо расхождение в десятки секунд), поэтому он может вычислить нужный пинкод и ввести его с клавиатуры. Время жизни пинкода по умолчанию 30 секунд, то есть каждые 30 секунд вычисляется новый код. Для работы приложения на смартфоне не нужно подключение к интернету или сотовой сети. Если нет возможности воспользоваться смартфоном, можно ввести один из нескольких одноразовых паролей, сгенерированных во время настройки системы.
Необходимые пакеты
Для работы с Google Authenticator необходимо установить пакет libpam-google-authenticator. Так же желательно установить библиотеку libqrencode4 (или libqrencode для систем на основе p8 или младше).
На смартфон можно стандартными способами установить программу Google Authenticator или FreeOTP.
О генерации ключа для пользователя можно почитать в интернете. Кратко: от пользователя запустить google-authenticator, на первый вопрос ответить "да", ввести ключ в смартфон (вручную или через QR-код, если установлена библиотека libqrencode и он отобразился на экране), подтвердить сохранение изменений.
Включение двухфакторной аутентификации для логина по ssh
Пример:
В файле /etc/openssh/sshd_config включить опцию
KbdInteractiveAuthentication yes
Для дистрибутивов на базе p11 так же нужно включить поддержку в клиенте, добавив аналогичную строку в файл /etc/openssh/ssh_config.
/etc/pam.d/sshd:
#%PAM-1.0 auth include common-login 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
В файле /etc/security/access-local.conf нужно указать, при логине из каких подсетей не будет применяться двухфакторная аутентификация:
# Two-factor can be skipped on local network + : ALL : 192.168.1.0/24 + : ALL : 127.0.0.1 + : ALL : LOCAL - : ALL : ALL # empty line at the end!!!
Если нужно, чтоб пинкод запрашивался всегда, можно удалить строку с упоминанием этого файла из /etc/pam.d/sshd.
Параметр echo_verification_code включает отображение цифр пинкода при их вводе. Параметр nullok разрешает вход без пинкода для тех пользователей, у которых не настроен Google Authenticator.
Включение двухфакторной аутентификации для логина через OpenVPN
Дописать этот раздел.