OTP расшифровывается как One Time Password, ну и если кто-то нуждается в переводе на русский язык: одноразовый пароль.

Одноразовый пароль действителен только лишь для одного сеанса аутентификации, т.е. после того как вы его использовали, например, для входа в систему он уже становится неактуальным. Также актуальность временного пароля может ограничиваться временем активности пароля.

Основным преимуществом одноразового пароля по сравнению с обычными является то что его нельзя использовать повторно. Т.е. даже если такой пароль будет перехвачен злоумышленником, то он не сможет использовать его повторно, например, выполняя команды, требующие повторного ввода пароля.

Yubico OTP

О том, что такое Yubico я уже писал ранее, можно ознакомиться тут.

Yubico OTP - это простой, но безопасный механизм аутентификации, который поддерживается всеми выпускаемыми версиями YubiKey. Yubico OTP может использоваться как второй фактор в схеме двухфакторной аутентификации или сам по себе, обеспечивая однофакторную аутентификацию, т.е. как основное средство аутентификации, как и дополнительное.

YubiCloud

YubiCloud - это веб-служба от компании Yubico для проверки одноразовых паролей. Перед использованием YubiCloud вам необходимо получить API ключ. Также для людей, которые не доверяют серверам в интернете, которые обслуживают не они есть возможность развернуть свои сервера YubiCloud, подробнее по ссылке.

Способы применения

Есть возможность применить OTP используя 2 способа:

  1. Плагины интеграции для Windows login, FreeRADIUS, Wordpress, phpBB и PAM.

  2. Библиотеки для языков программирования, используемые для создания собственной интеграции.

Получаем API

Переходим сюда и заполняем поля. Для того чтобы заполнить YubiKey OTP нужно активировать YubiKey, чтобы он вставил значение. В итоге мы должны получить наши Client ID и Secret key.

Применение

1.Первым делом поставим пакет pam_yubico:

sudo dnf install epel-release -y
sudo dnf install pam_yubico -y

sudo apt update
sudo apt install libpam-yubico -y


2.Создаём файл /etc/yubico-mapping и добавляем в него тех пользователей, которые должны иметь возможность логиниться при помощи yubico в формате пользователь:yubikey токен (только первые 12 символов). Для того чтобы получить токен просто нажимаем на сканер yubikey. Также вы можете добавить пользователю несколько ключей, просто используя строку типа пользователь:yubikey токен:yubikey токен2:yubikey токен3

Если не поняли как получить токен советую к прочтению статью.

sudo vim /etc/yubico-mapping
admin:crtyccjflici
test:crtyccjflici


3.Редактируем /etc/pam.d/sshd, id мы получили когда регистрировались на сайте.

sudo vi /etc/pam.d/sshd
auth required pam_yubico.so id=1624 debug authfile=/etc/yubico-mapping
sudo systemctl restart sshd


4.Если хотите логиниться только используя yubikey

sudo vi /etc/pam.d/sshd
#@include common-auth  если UBUNTU
#auth substack password-auth
auth required pam_yubico.so id=1624 debug authfile=/etc/yubico-mapping
sudo systemctl restart sshd


5.Настраиваем SELINUX

sudo setsebool -P authlogin_yubikey on


6.Пробуем залогиниться

ssh  test@192.168.0.132
Password:
YubiKey for `test':

Permission denied, please try again.

Может сложится так что у вас не будет запроса YubiKey при попытке залогиниться на конечный хост, а будет только запрос пароля, после ввода которого вы просто получите ошибку Permission denied, please try again.

Для решения этой проблемы выполняем следующее:

sudo vim /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
sudo systemctl restart sshd

Видео