Двухфакторная аутентификация Google Authenticator: различия между версиями
(Новая страница: «== Введение == Двухфакторную аутентификацию для входа в систему (локально, через ssh, через O…») |
|||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 8: | Строка 8: | ||
На смартфон можно стандартными способами установить программу {{prg|Google Authenticator}} или {{prg|FreeOTP}}. | На смартфон можно стандартными способами установить программу {{prg|Google Authenticator}} или {{prg|FreeOTP}}. | ||
О генерации ключа для пользователя можно почитать в интернете. Кратко: от пользователя запустить {{prg|google-authenticator}}, на первый вопрос ответить "да", ввести ключ в смартфон (вручную или через QR-код, если установлена библиотека libqrencode и он отобразился на экране), подтвердить сохранение изменений. | |||
== Включение двухфакторной аутентификации для логина по ssh == | == Включение двухфакторной аутентификации для логина по ssh == | ||
Пример: | Пример: | ||
{{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 | ||
Строка 22: | Строка 34: | ||
</pre> | </pre> | ||
В файле {{prg|/etc/security/access-local.conf}} нужно указать, при логине из каких подсетей не будет применяться двухфакторная аутентификация: | |||
<pre> | |||
# 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!!! | |||
</pre> | |||
Если нужно, чтоб пинкод запрашивался всегда, можно удалить строку с упоминанием этого файла из {{prg|/etc/pam.d/sshd}}. | |||
Параметр {{prg|echo_verification_code}} включает отображение цифр пинкода при их вводе. Параметр {{prg|nullok}} разрешает вход без пинкода для тех пользователей, у которых не настроен Google Authenticator. | |||
== Включение двухфакторной аутентификации для логина через OpenVPN == | |||
Дописать этот раздел. | |||
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 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
Дописать этот раздел.