Введение:
Фактор аутентификации - это единая информация, используемая для доказательства того, что у вас есть права на выполнение какого-либо действия, например, вход в систему.
Канал аутентификации - это способ, которым система аутентификации доставляет пользователю фактор или требует от пользователя ответа.
Пароли и токены безопасности являются примерами факторов аутентификации; Компьютеры и телефоны - примеры каналов аутентификации.
Google's PAM:
Установка:
# apt update && apt install libpam-google-authenticator
Конфигурация:
# google-authenticator
- Вы хотите, чтобы токены аутентификации были основаны на времени? - y
- Сохряняем секретный ключ, проверочный код и коды восстановления;
- Вы хотите запретить многократное использование одной и той же аутентификации токена? - y
- Делаем код устаревшим сразу после использования;
- По умолчанию, токены действуют в течении 30 сек, мы хотим увеличить это время? - n
- 3 последних кода действуют в течении 1м 30сек;
- По умалчанию, модуль аутентификации, ограничивает количество попыток входа и дает 3 попытки каждые 30 сек;
- Если ранее не ограничивалось количество попыток в самом SSH;
Настройка OpenSSH:
Открываем файл конфигурации sshd:
# nano /etc/pam.d/sshd
- и включаем OATH-TOTP токен,
# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so
Настраиваем ssh:
# nano /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
- Рестартуем демон ssh,
# /etc/init.d/ssh restart
Проверяем! Если ранее, для входа в сеанс ssh использовался ключ, то не будет предложено ввести код верификации, т.к. ssh.key по умолчанию переопределяет все остальные методы аутентификации.
Two(Three)-Factor:
Используем ключ SSH для первого фактора и код верификации для второго фактора.
# /etc/ssh/sshd_config
UsePAM yes
AuthenticationMethods publickey,password publickey,keyboard-interactive
* publickey - ключ SSH
* password publickey - пароль
* keyboard-interactive - код подтверждения
Отключаем вход по паролю:
# nano /etc/pam.d/sshd
- Комментируем,
# Standard Un*x authentication.
#@include common-auth
- Перезапускаем демон,
# /etc/init.d/ssh restart
Использование 3-его фактора:
# nano /etc/pam.d/sshd
- Убираем комментарий с,
@include common-auth
Потеря доступа к приложению TOTP:
Если нет возможности получить код верификации, то можно восспользоваться кодами восстановления.
Важно! Эти коды одноразового использования. По умалчанию создаются 5 шт.
Изменение настроек аутентификации MFA:
Настраиваем.
# nano ~/.google_authenticator
- Файл имеет вид,
<secret key>
<options>
<recovery codes>
- Чтобы включить последовательные коды вместо временных,
Меняем " TOTP_AUTH на " HOTP_COUNTER 1
- Чтобы разрешить многократное использование одного кода, удаляем,
" DISALLOW_REUSE
- Чтобы продлить окно истечения срока действия кода до 4 минут, добавляем,
" WINDOW_SIZE 17
- Чтобы отключить несколько неудачных входов удаляем,
" RATE_LIMIT 3 30
- Настраиваем количество попыток входа и время на эти попытки,
" RATE_LIMIT 3 30 / 3=попытки, 30=время в сек;
- Чтобы отключить использование кодов восстановления, просто удаляем 5 8-значных кодов;
Источники:
| DigitalOcean | Linux-Notes |