YubiKey головного мозга. Как подружить Ubuntu 22.04.1 LTS c аппаратным ключем безопасности?

Итак вы решили переехать на новенькую свежую ибунту и у вас на столе лежит Юбик 5ой серии без которого вы не можете жить в современном мире.

И как у любого нормального технаря перед Вами сразу встают ровным строем несколько вопросов:

  1. Возникнут ли проблемы установкой софта и нужных либ для поддержки необходимого функционала любимого ключика? (спойлер, естественно ^_^)

  2. Исходя из первого вопроса, с точки зрения временных затрат стоит ли вообще переезжать ради новых обоев и крутой плавной анимации..?

  3. На все это мероприятие сколько нужно будет купить ништяков и запастись ли кофе?)

На второй вопрос отвечу сразу, конечно! Ведь я за вас уже постарался и проинвестировал свое время в это дело и теперь вы с этим справитесь за считанные минуты.

На третий вопрос уж как нибудь сами, а вот в первый немного углубимся.

На старт, внимание, let’s deep dive

Итак, определим задачи:

1. Двухфакторная авторизация по паролю и вставленному в usb-порт ключу.

2. Привилегированные права (root в простонародье) только при наличии ключика в usb-порте.

3. Доступ по ssh на сервера только при наличии все того-же ключика.

p.s. понятно что это далеко не все что может дать нам Yubikey, но мы тут не возможности обозреваем, а проблему решаем!)

По заветам Кодекса Авторов Хабра декомпозируем наши задачи:
  • Подключаем репозитории устанавливаем софт и нужные библиотеки.

  • Подключаем модуль PKCS для нашего юбика.

  • Инициализируем устройство (пункт опциональный, если уже настроили все pin,puk,managment-key… — ничего менять не нужно).

  • Настраиваем двухфакторку в системе через 2FA.

  • Правим конфиги sudo,gdm,login (тут максимум внимательности, советую приготовить root терминал на всякий пожарный или если вы рисковый парень (как я),то можете сразу сделать себе загрузочную флешку с лайв режимом чтобы когда у вас все слетит, загрузиться с нее, примонтировать диск и исправить то что вы там наворотили ^_^).

  • Настраиваем конфигурацию ssh-клиента, генерируем PUB-ключ (доступ на удаленные сервера только с юбиком).

  • Наслаждаемся результатом)

Установка утилит и библиотек

Проверяем репозитории, должны быть дефолтные, если меняли, верните.

Репозитории оставлю на всякий случай
sudo nano /etc/apt/sources.list deb http://ru.archive.ubuntu.com/ubuntu/ jammy universe deb http://ru.archive.ubuntu.com/ubuntu/ jammy multiverse deb http://security.ubuntu.com/ubuntu jammy-security universe deb http://ru.archive.ubuntu.com/ubuntu/ jammy main restricted deb http://security.ubuntu.com/ubuntu jammy-security multiverse deb http://ru.archive.ubuntu.com/ubuntu/ jammy-updates universe deb http://ru.archive.ubuntu.com/ubuntu/ jammy-updates multiverse deb http://security.ubuntu.com/ubuntu jammy-security main restricted deb http://ru.archive.ubuntu.com/ubuntu/ jammy-updates main restricted deb http://ru.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse sudo apt update

 #Устанавливаем библиотеки и софт для работы  sudo apt install -y ykcs11 yubico-piv-tool yubikey-manager scdaemon yubikey-personalization opensc libnss3-tools

Отдельная утилита заслуживает особого внимания pamu2fcfg. Входит в состав libpam-u2f. Нужна версия 1.0.8-1.

#Проверяем версию sudo apt-cache policy pamu2fcfg

Если таковой не наблюдается, скачиваем архивом или подключаем репозиторий ubuntu 20.04 и скачиваем ее от туда.

Репозитории так-же оставлю тут..
sudo nano /etc/apt/sources.list deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse deb http://archive.canonical.com/ubuntu focal partner deb-src http://archive.canonical.com/ubuntu focal partner sudo apt update

sudo apt install -y pamu2fcfg=1.0.8-1 #Не забываем вернуть репозитории!)

Подключаем модуль PKCS для нашего юбика.

Для начала, вставляем ключик в usb-разьем.

#Включаем демон pcscd который координирует связь приложений со смарт картами и криптографическими токенами  sudo systemctl start  pcscd.service sudo systemctl enable  pcscd.service  #затем подключаем модуль cd .pki/nssdb/  #проверяем что модуля нет modutil -list -dbdir .  modutil -dbdir . -add "Yubikey" -libfile /usr/lib/x86_64-linux-gnu/libykcs11.so  #проверяем что модуль есть) modutil -list -dbdir . 

Инициализация ключика.

На официальном сайте есть мануал подробный, но для уважаемых хабровчан оставлю это тут
# default PIN - 123456 ykman piv change-pin  # default PUK - 12345678 ykman piv change-puk  # generate MGM key stored on device and protected by PIN ykman piv change-management-key   # Generate Slot 9a PIV Authentication (authenticate the card and the cardholder) yubico-piv-tool -s 9a -a generate --touch-policy=always --pin-policy=never -o public.pem -k yubico-piv-tool -s 9a -a request-certificate --touch-policy=always --pin-policy=never -i public.pem -o cert.csr -k -S "/CN=InsertNewName/" # подписать на CA ноуте yubico-piv-tool -a import-certificate --touch-policy=always --pin-policy=never -s 9a -i ~/Documents/NewName.crt -k yubico-piv-tool -a status

Настраиваем двухфакторку в системе через 2FA.

Выполняется всё от непривилегированного пользователя.Yubikey должен быть подключен.

mkdir -p ~/.config/Yubico pamu2fcfg > ~/.config/Yubico/u2f_keys sudo mv ~/.config/Yubico /etc/Yubico sudo chown root:root /etc/Yubico/u2f_keys

Правим конфиги sudo,gdm,login.

sudo sed -i -e '/^@include common-auth.*/a auth       required   pam_u2f.so authfile=/etc/Yubico/u2f_keys ' /etc/pam.d/sudo sudo sed -i -e '/^@include common-auth.*/a auth       required   pam_u2f.so authfile=/etc/Yubico/u2f_keys ' /etc/pam.d/gdm-password sudo sed -i -e '/^@include common-auth.*/a auth       required   pam_u2f.so authfile=/etc/Yubico/u2f_keys ' /etc/pam.d/login

Настраиваем конфигурацию ssh-клиента, генерируем PUB-ключ.

cat <<EOF > ~/.ssh/config Host *  PKCS11Provider /usr/lib/x86_64-linux-gnu/libykcs11.so  GSSAPIAuthentication no  HashKnownHosts yes # ControlMaster auto # ControlPath ~/.ssh/cm_socket/%r@%h:%p EOF  ssh-keygen -D /usr/lib/x86_64-linux-gnu/libykcs11.so -e

На этом все 🙂


ссылка на оригинал статьи https://habr.com/ru/post/689916/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *