Итак вы решили переехать на новенькую свежую убунту и у вас на столе лежит Юбик 5ой серии без которого вы не можете жить в современном мире.
И как у любого нормального технаря перед Вами сразу встают ровным строем несколько вопросов:
-
Возникнут ли проблемы установкой софта и нужных либ для поддержки необходимого функционала любимого ключика? (спойлер, естественно ^_^)
-
Исходя из первого вопроса, с точки зрения временных затрат стоит ли вообще переезжать ради новых обоев и крутой плавной анимации..?
-
На все это мероприятие сколько нужно будет купить ништяков и запастись ли кофе?)
На второй вопрос отвечу сразу, конечно! Ведь я за вас уже постарался и проинвестировал свое время в это дело и теперь вы с этим справитесь за считанные минуты.
На третий вопрос уж как нибудь сами, а вот в первый немного углубимся.
На старт, внимание, 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
На этом все :-)
Автор: Павел