En hårdvarunyckel som ökar din säkerhet
Det är riktigt bra med Yubikeys. Samlar lite kommandon här som är bra att komma ihåg. Denna guide ska funka for de flesta Yubikeys. Dock så kan vissa kommandon vara lite olika om man har vissa funktioner som NFC. Jag utgår med hjälpmedel som Alpine Linux eftersom jag är van med den distributionen. Sedan Windows 11 med WSL.
Förberedande
- Börja med att besöka Alpine Linux för att göra ett installationsmedia med Rufus.
- Starta Alpine Linux från usb och kör setup-alpine. Välj att inte installera något på disk och lägg till community repository. Skapa inte någon användare iom att vi ska vara root här.
- Installera nödvändiga verktyg som gpg och yubikey-manager för att kunna konfigurera en Yubikey. libu2f-host är bra för udev regler och pcsc-lite för kortläsaren.
apk add gpg gnupg-scdaemon libu2f-host pcsc-lite yubikey-manager
- Starta pcscd
/etc/init.d/pcscd start
- Kör gpg och ykman för att kolla om den hittar en Yubikey
gpg --card-status; ykman list
Konfiguration
- Om du vill ha ett statisk lösenord i slot 2 för din nyckel så ska du göra så här. Jag har valt att använda DE som keymap eftersom det liknar SE ganska mycket.
ykman otp static -k DE 2
- Att sätta en lock code för konfiguration på din Yubikey är att rekommendera
ykman config set-lock-code
- Nu ska vi fixa kortläsaren med din privata gpg nyckel. Denna används som privat nyckel i din kortläsare. Börja med att ta bort gammal data om det råkar finnas i din hemkatalog.
rm -r .gnupg
Importera din privata gpg nyckel, här behöver du ditt lösenord som du krypterade nyckeln med. Om du inte har någon nyckel så kan du kolla under länkar och YubiKey-Guide för att skapa en. Jag fortsätter efter avsnitt Configure Smartcard.
gpg --import keys.gpg
Nu kan du kolla om allt ser rätt ut och att din privata nyckel importerades. Här kan du se hela keyid och funkar självklart med privata med -K. <keyid> är det som visas på raden med sec rsa4096/<keyid> om du har en 4096 bit nyckel.
gpg --keyid-format LONG -k
Nu behöver vi bara editera nyckeln som vi importerat och sätta trust. Kör kommandot nedan och när du är vid gpg prompten så skriver du trust och sedan väljer du 5 samt y. Sedan skriver du save vid gpg prompten för att avsluta. När du sedan kör kommandot gpg --keyid-format LONG -k igen ska det stå ultimate som vi valde.
gpg --edit-key <keyid>
gpg> trust (välj 5)
gpg> save
Nu ska vi flytta nycklarna som heter ssb till en Yubikey. Observera att när vi gör detta så kommer nycklarna ej ligga kvar på datorn längre samt gpg --keyid-format LONG -k kommer via ssb> istället för ssb.
Man skickar över en i taget genom att först välja den med key 1-3. Du ser vilken som är vald genom att den blir markerad med *.
Du kommer bli frågad om keys.gpg lösenordet samt Yubikeys admin lösen som är 12345678 som standard.
gpg --edit-key <keyid>
gpg> key 1
gpg> keytocard (välj 1 Signature key)
gpg> key 1
gpg> key 2
gpg> keytocard (välj 2 Encryption key)
gpg> key 2
gpg> key 3
gpg> keytocard (välj 3 Authentication key)
gpg> save
Nu ska vi konfigurera lite information i kortläsaren som pinkod som är 123456 som standard och admin pinkod som är 12345678 som standard. Vi gör lite andra inställningar med som du kan se nedan. Det viktiga här är att byta vanlig pin och admin pin.
gpg --card-edit
gpg> admin (aktivera admin kommandon)
gpg> passwd (välj 1 change PIN) sedan (välj 3 change Admin PIN) Sedan Q för Quit
Du kan nu ändra name och url m.m men det är inget måste. Använd list för att se vad som kan ändras.
Kommandon
Hämta en public nyckel från en keyserver som tex http://www.sks-keyservers.net:11371/. Glöm inte att köra trust på nyckeln när du editerar den sedan. Man kan köra gpg --recv för att hämta public key. Dock måste man ha dirmngr.
apk add dirmngr
gpg --recv <keyid>
gpg --armor --export <keyid> (exportera den publika pgp nyckeln)
Exportera till en public ssh-nyckel som du sedan lägger in på servrar för att ansluta mot. Kommentaren i slutet på nyckeln kan du byta ut utan problem så att man lättare vet var nyckel kommer ifrån.
gpg --export-ssh-key <keyid>
SSH
För att använda den privata nyckeln med ssh i Alpine Linux så behöver man inte installera lika mycket saker.
apk add gpg gnupg-scdaemon
libu2f-host (innehåller udev regler för yubikey)
pcsc-lite
yubikey-manager (behövs ej för att det skall funka)
- Lägg in din användare i grupperna gnupg, pcscd och plugdev (om ej denna finns kör addgroup -S plugdev)
- Lägg till pcscd i default runlevel och stara den.
Kolla om du hittar Yubikeyn med gpg --card-status och om det funkar kan man köra skriptet nedanför varje gång du ska aktivera Yubikeyn. Det är viktigt att GPG_TTY och SSH_AUTH_SOCK är satta rätt i skalet.
Script
Ett script för att aktivera Yubikey.
yubikey.sh
#!/bin/sh
killall gpg-agent
sleep 2
gpg-agent --daemon --enable-ssh-support > /dev/null
printf "\nrun: export GPG_TTY=\"$(tty)\" SSH_AUTH_SOCK=\"$(gpgconf --list-dirs agent-ssh-socket)\"\n\n"
Övrigt
Appar
Länkar