Yubikey: erinevus redaktsioonide vahel
83. rida: | 83. rida: | ||
====Yubico OTP key upload==== |
====Yubico OTP key upload==== |
||
− | Uue OTP materjali tekitamiseks sobib kasutada programmi Yubico Authenticator |
+ | Uue Yubico OTP materjali tekitamiseks sobib kasutada programmi Yubico Authenticator (st mingil põhjusel kasutajale ei sobib tehases eelpaigaldatud ja YubiCloud'is juba publitseeritud materjal) |
* lülitada sisse OTP Application |
* lülitada sisse OTP Application |
Redaktsioon: 1. juuni 2025, kell 21:11
Sissejuhatus
Mõisted
- TOTP
- HOTP
- PIV
- MFA
- 2FA
- CTAP
- CTAP2
- FIDO (Fast Identity Online)
- FIDO2
- U2F
- OAUTH (Open Authorization)
- OAUTH2
- USB-A
- USB-C
- NFC
- Yubico Authenticator
- YubiCloud
Tööpõhimõte
Tundub, et Yubikey seadmel on mitu erinevat nö töörežiimi
- lihtne TOTP/HOTP parool - kasutuskoht ja yubikey teavad ühist saladust, lisaks kasutatakse kas aja või kasutuskordade põhist ühist parooli/pin'i (sellisel kasutusel mingit suuremat avaliku võtme põhist krüptot ei toimu) - põhimõtteliselt sama loogika, millel põhineb nt Google Authenticator või FortiToken mobile token
- FIDO2 - tundub, et see on kõige naturaalsem ja kaasaegsem yubikey kasutus (nn passwordless lahendus toetub sellele) - asjasse puutub avaliku võtme krüpto
- PIV - yubikey töötab teatud mõttes sarnaselt id kaardile
Väited
- mitmes režiimis paistab yubikey käitumine tavalise füüsilise klaviatuuri käitumisena - yubikey seadme nupu peale vajutamisel tekib kursori asukohta tekst (nt otp parool on iseloomulikul kujuga 'vvlijleuurvtirfckkehdineubgktiijkivnkcncnjet', static password on literally see mis on väärtuseks salvestatud ja ei muutu)
- millises režiimis parasjagu yubikey slot on saabki ehk hõlpsasti hinnata selle alusel, mis kursori asukohta tekib
Riistvara
Tundub, et Yubikey ei ole ainus sarnase lahenduse tootja, aga samuti tundub, et ta on üks tublimaid (riistvara saadavud, riistvara tugi jms), võimalikud alternatiivid on
- Onlykey
- Nitrokey
- Solokey
- Thetis
Yubikey kasutamine VNC põhisel remote desktop arvutil
Väited
- Yubikey saab Proxmox PVE virtuaalsele arvutile ühendada külge Hardware -> USB -> ... abil
- Yubikey kui klaviatuuri sisestused paistavad mitte vnc ekraanil, aga PVE webgui konsoolil
- konsoolile ilmunud sisestused (nt otp kood) saab kopeerida virtuaalse arvuti peal programmiga screendump
Yubico OTP
TODO
Tööpõhimõte
Väited
- tundub, et Yubikey OTP on üsna kitsalt skaleeruv - tavaliselt on seadmel kaks nö Slot'i ja kummagagi saab seostada ühe nö saladuse (erinevalt passkey'ide hulgast (nt 100 tükki))
- ühe Yubikey OTP saladusega saab siduda mitu erinevat api-key artifakti
Yubico API key signup
Yubico OTP key signup on asjakohane juhtumil kui seadmel on juba saladus olemas (nt tegu on vastse ostetud seadmega) ja järgmisena soovitakse seda kasutama asuda (nt Proxmox PVE sisselogimise server-side poole korraldamiseks). signup tulemusena saab kasutaja teada
- client id: 112266
- secret key: KfM3kr3oFgcDNMd7k9z9TmgT35U=
Ekraani pildid paistavad sellised, registreerimise dialoog
kus
- Yubikey OTP väärtus saadakse paigutades kursori kuhugi teksti asukohta ja pressides seadmel nuppu
Tulemusena väljastatakse
Yubico OTP key upload
Uue Yubico OTP materjali tekitamiseks sobib kasutada programmi Yubico Authenticator (st mingil põhjusel kasutajale ei sobib tehases eelpaigaldatud ja YubiCloud'is juba publitseeritud materjal)
- lülitada sisse OTP Application
- valida Slot
- pressida Yubico OTP
ning paistab sellin vorm
Kui vaikimisi pakutud Public ID väärtus ei sobi, saab ise konstrueerida nt sellise Python skriptiga
imre@moraal:~$ cat otp-pi.py import secrets MODHEX = 'cbdefghijklnrtuv' public_id = ''.join(MODHEX[secrets.randbelow(16)] for _ in range(12)) print(public_id) imre@moraal:~$ python3 otp-pi.py hkcgjvtfhnbk imre@moraal:~$ python3 otp-pi.py jfiiigjgchgt
Uue nö OTP materjali yubicloud süsteemi üleslaadimiseks sobib kasutada sellist vormi, aadressil https://upload.yubico.com/
kus
- Yubico OTP teksti esimesed 12 sümbolit esitavad public id väärtuse
Tulemusena öeldakse õnnestumisel
Nüüd edasi on võimalik kasutada 'Yubico OTP' funktsionaalsust, nt seadistada käima Proxmox PVE sisselogimine 'Yubikey OTP' abil.
Yubikey playground
Yubikey playground kasutamiseks tuleb tekitada sinna kasutaja, edasi paistab sisselogimine nt selline
kus sisselogimisel on neli võimalust
- Yubico OTP - käesoleval juhul kasutatakse seda
WebAuthn
Chrome brauseris on nö virtuaalne webauthn authenticator environment, avada nt veebikoht https://webauthn.io/ ning samas brauseri aknas
Dev tools -> More tools -> WebAuthen
Seejärel pressida veebikohas register jne, peaks paistama sarnane pilt
kus
- TODO
Sarnaseid webauthn testimise veebikohti on teisigi, nt
SSH - FIDO2
Käesolevas punktis kirjeldatakse kasutajakogemust kahe operatsioonisüsteemiga
- Ubuntu + XFCE4 desktop
- OpenBSD + XFCE4 desktop
Ubuntu
Väited
- FIDO2 osakonnas krüptomaterjali salvestamine on üks võimalik viis yubikey ja ssh tarkvara koostööks
- töötab ssh-agent
- töötab ssh-agent forwarding
Krüptomaterjali tekitamine
# ssh-keygen -t ed25519-sk -O resident -O application=ssh:11 -C "ssh kasutamine nr 11" # ssh-keygen -t ed25519-sk -O resident -O application=ssh:12 -C "ssh kasutamine nr 12" # ssh-keygen -t ed25519-sk -O resident -O application=ssh:13 -C "ssh kasutamine nr 13" # ssh-keygen -t ed25519-sk -O resident -O application=ssh:14 -C "ssh kasutamine nr 14"
Krüptomaterjali vaatlemine Yubico Authenticator rakenduse abil
kus
- kui krüptomaterjali tekitamisel mitte näidata '-O application=ssh:...' väärtust, kirjutatakse eelmine sissekanne üle
- '-O resident' tähistab asjaolu, et krüptomaterjal salvestatase yubikey seadmes (non-resident ehk non-discoverably alternatiiv tähendab, et krüptomaterjal ise asub väljaspool yubikey seadet ning on krüptitud fido2 osakonnas oleva salajase võtmega - mingit arvestust yubikey enda peal sellise seotud välise materjali kohta ei peeta)
Järgmises arvutis krüptomaterjali kasutamine, kui eelnevalt ei oleks kasutatud '-O resident' suvandit, siis ei saaks sellist nö eksporti teha
# ssh-add -K Enter PIN for authenticator: Resident identity added: ED25519-SK SHA256:RlJ0IzrO/cqzYrV0AqPYyYnZsfSWsqC2nvW4Tfeu3eA Resident identity added: ED25519-SK SHA256:f/EyfUSv/z37ONcSv7PzvXyYoIuPckHzUWCDvmv3aVk Resident identity added: ED25519-SK SHA256:L+bGluZJcrJ50j+Gwni1Tuc/JfCEey77nH39FmYkgGQ Resident identity added: ED25519-SK SHA256:XCxEb2X/nhOGsZ8MZJA/0w7aYWe5UAmrgg8nf5eQDLY # ls -ld id_ed25519_sk_rk* -rw------- 1 root root 444 May 25 22:25 id_ed25519_sk_rk_11 -rw-r--r-- 1 root root 139 May 25 22:25 id_ed25519_sk_rk_11.pub -rw------- 1 root root 444 May 25 22:25 id_ed25519_sk_rk_12 -rw-r--r-- 1 root root 139 May 25 22:25 id_ed25519_sk_rk_12.pub -rw------- 1 root root 444 May 25 22:25 id_ed25519_sk_rk_13 -rw-r--r-- 1 root root 139 May 25 22:25 id_ed25519_sk_rk_13.pub -rw------- 1 root root 444 May 25 22:25 id_ed25519_sk_rk_14 -rw-r--r-- 1 root root 139 May 25 22:25 id_ed25519_sk_rk_14.pub
kus
- näiliselt salvestatakse ka privaatne materjal, kuid sisuliselt on tegu nö sangadega (ingl. k. handle), mis viitavad reaalselt yubikey seadmes olevale saladusele endale
# ssh-add -l 256 SHA256:RlJ0IzrO/cqzYrV0AqPYyYnZsfSWsqC2nvW4Tfeu3eA (ED25519-SK) 256 SHA256:f/EyfUSv/z37ONcSv7PzvXyYoIuPckHzUWCDvmv3aVk (ED25519-SK) 256 SHA256:L+bGluZJcrJ50j+Gwni1Tuc/JfCEey77nH39FmYkgGQ (ED25519-SK) 256 SHA256:XCxEb2X/nhOGsZ8MZJA/0w7aYWe5UAmrgg8nf5eQDLY (ED25519-SK) # ssh-add -L sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAINJEpXFLOqiKBc4LTqP9vHEJv0EJhWxk1v7lDifp/KQZAAAABnNzaDoxMQ== sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIDKfibpwkf9UCEtSM/bk5V1bZa+TRqNj/a2hLiTvnLTDAAAABnNzaDoxMg== sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIHkCP0bc82uMMMkKMDDLdRA8UXy5TAKKxGc3B8EZiRL3AAAABnNzaDoxMw== sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIAoM5TRQjg6PRuWGHTwwRx52bWxmejBm2MHr0XAf7DGxAAAABnNzaDoxNA==
Võtmete kustutamine ssh-agent juurest
# ssh-add -D
OpenBSD
Väited
- praktiliselt toimub kasutamine sarnaselt Ubuntu juhtumile
- FIDO2 puhul ei ole vaja mitte mingit spetsiaalselt nö yubikey tarkvara paigaldada - tavaline OpenBSD põhiosa sisaldab üldiselt fido draiverit ning ssh tarkvara toetab selle kasutamist
OpenBSD login
TODO
FortiAuthenticator
- https://community.fortinet.com/t5/FortiAuthenticator/Technical-Tip-How-to-import-YubiKey-to-FortiAuthenticator/ta-p/192277
- https://www.fortinet.com/solutions/enterprise-midsize-business/identity-access-management
Dovecot
Proxmox
Erinevate lahendustega kaasnevad natuke erinevad asjaolud
- kõik on 2FA lahendused
- mõni lahendus eeldab, et serveri haldaja sätib lahenduse käima
- mõni lahendus võimaldab kasutajal iseisvalt oma kasutaja jaoks 2FA sisse lülitada (ja välja lülitada)
- mõni lahendus kasutab rohkem krüptot (nt public-key lahendus) ja mõni kasutab vähem (nt TOTP on shared secret põhine)
- mõni lahendus eeldab kolmandat osapoolt ja et server-side on kontaktis avaliku internetiga
Webauthn
Väited
- webauthn autentimisel osalevad kaks osapoolt - 1. kliendi brauser (ja yubikey seade samas arvutis) ja 2. teenuse server
Sündmuste voog
- server-side süsteem on webauthn võimeline
- client-side süsteem on webauthn võimeline
- server-side poolel on kirjeldatud kasutaja, kasutaja saab ligi kasutajanime ja parooli abil
- client side poolelt logib kasutaja sisse süsteemi kasutajanime ja parooli abil brauseriga
- kasutaja seadistab oma konto juures webauthn 2FA kasutamise - muu hulgas paigaldab ta server-side'i oma avaliku võtme
- kasutaja logib välja ja uuesti sisse - nüüd küsitakse temalt webauthn saladust - antud juhul Yubikey FIDO2
Praktilised sammud
- Lülitada PVE webgui liideses sisse webauthen - Datacenter -> Options -> WebAuthn Settings -> Auto-fill (täidetakse kaks lahtrit, 'Name:' ja 'ID:' väärtusega 'pve-vr.auul.pri.ee')
- veenduda, et pve realmiga ei ole seotud TFA lahendust - Datacenter -> Permissions -> Realms -> pve -> Edit -> TFA -> none
- tekitada pve realm kasutaja 'imre' - Datacenter -> Permissions -> Users -> Add
- määrata kasutajale privileegid, nt - Datacenter -> Permissions -> Add ...
- lisada kasutajale 2FA - Datacenter -> Permissions -> Two Factor -> Add -> WebAuthn -> ... -> palutakse pressida Yubikey nuppu
- logida välja
- logida tagasi sisse, peale kasutajanime ja parooli sisestamist palutakse pressida Yubikey nuppu
Kasutamine paistab välja nii
Kasulikud lisamaterjalid
Yubico OTP
Väited
- Yubico OTP autentimisel osalevad kolm osapoolt - 1. kliendi brauser (ja yubikey seade samas arvutis), 2. teenuse server ja 3. YubiCloud isand internetis
- Uutel Yubico seadmetel on vaikimisi Yubico OTP saladused juba YubiCloud peale publitseeritud (nn 'cc...' algusega sõned)
- kasutamisel põhimõtteliselt ei pea yubikey olema samas seadmes, kus on brauser (oluline on, et võtme poolt väljastatud saladus st sõne ehk tekst jõuab autentimise dialoogi lahtrisse)
Tööpõhimõte
yubicloud isand internetis _____ | | | | |_____| | brauser ____ | yubikey | | | |____| | | | ----|-----------------|------------------------|-------------- __|__ | | pve server |_____|
kus
- brauser pöördub serverisse ja server küsib brauserilt tava kasutajanime ja parooli
- lisaks küsib server brauserilt OTP saladust
- server saab saladuse teada ja läheb küsib yubicloud isandalt kas brauserilt saadud vastus on ok
- kui kõik klapib siis logitakse kasutaja serverisse pve webgui peale sisse
- loogiliselt on yubikey pulk seotud brauseri arvutiga, aga tehniliselt ei ole see oluline (st mingeid nö elektrilisi signaale antud kasutusjuhu puhul brauseri ja yubikey pulga vahel ei toimu (nt võib yubikey otp saladust kopeerida hiirega kuskilt järgmisest arvutist kuhu on pulk kinnitatud)
PVE ettevalmistamiseks tuleb valida, üks kord
Datacenter -> Permissions -> Realm -> pve
ning paistab selline pilt
kus
- yubico-api-key saamiseks tuleb minna aadressile https://upgrade.yubico.com/getapikey/
- yubico-api-key saamiseks on vaja tõendada, et kasutada on yubikey seade, aga api-key ise ei ole otseselt personaalne - selle alusel toimub kõigi kasutajate autentimine (kontakt yubicloud'iga)
- tundub, et yubico omadel on nö väärkasutusi jms ära hoida kui sisemiselt on neil arve millise yubikey omanik on kui palju api-key'sid registreerinud
Seejärel iga kasutaja jaoks üks kord
Datacenter -> Permissions -> Users -> Add -> ... Key ID - public-12-kohaline-väärtus
ning paistab selline pilt
kus
- kasutaja key id väärtuse saab kasutaja küsida oma töökohaarvutis pannes kursori kuhugi kuhu saab kirjutada, nt terminali aknas avatud teksti editori sisse, ja pressida yubikey nuppu - tulemusena kirjutatakse igal korral uus sõne, aga esimesed 12 positsiooni jäävad samaks - see on nn public-id
- kasutaja key id on unikaalne ja selle serverisse kopeerimine on põhimõtteliselt sarnane ssh pub võtme serverisse paigutamisega
- tuleb arvetada, et tehtniliselt yubico-otp kasutamine ei ole public-key krüpto kasutamine (tegu on sümeetrilise krüptoga)
Kasutaja autentimisel paistab selline diagloog PVE webgui liideses
kus
- 'Please enter your Yubico OTP code' lahtrisse on kursor kohale viidud ja samal ajal pressitakse seadme peal nuppu
Kasutaja autentimisel paistab PVE node peal selline võrguliiklus
15:36:18.591264 IP 80.235.106.152.57580 > 8.8.8.8.53: 39061+ A? api2.yubico.com. (33) 15:36:18.591301 IP 80.235.106.152.57580 > 8.8.8.8.53: 17566+ AAAA? api2.yubico.com. (33) 15:36:18.662541 IP 8.8.8.8.53 > 80.235.106.152.57580: 39061 6/0/0 CNAME api2.yubicloud-r53.yubico.com., CNAME api.yubicloud-r53.yubico.com., A 3.174.113.38, A 3.174.113.92, A 3.174.113.39, A 3.174.113.120 (148) 15:36:18.685940 IP 8.8.8.8.53 > 80.235.106.152.57580: 17566 10/0/0 CNAME api2.yubicloud-r53.yubico.com., CNAME api.yubicloud-r53.yubico.com., AAAA 2600:9000:28f7:8c00:6:9867:fbc0:93a1, AAAA 2600:9000:28f7:b400:6:9867:fbc0:93a1, AAAA 2600:9000:28f7:2e00:6:9867:fbc0:93a1, AAAA 2600:9000:28f7:200:6:9867:fbc0:93a1, AAAA 2600:9000:28f7:e00:6:9867:fbc0:93a1, AAAA 2600:9000:28f7:8600:6:9867:fbc0:93a1, AAAA 2600:9000:28f7:7e00:6:9867:fbc0:93a1, AAAA 2600:9000:28f7:5c00:6:9867:fbc0:93a1 (308) 15:36:18.686639 IP6 2001:7d0:7009:b680:d4ba:97ff:feee:df4a.58540 > 2600:9000:28f7:8c00:6:9867:fbc0:93a1.443: Flags [S], seq 3556792832, win 64800, options [mss 1440,sackOK,TS val 3286838812 ecr 0,nop,wscale 7], length 0 15:36:18.694889 IP6 2600:9000:28f7:8c00:6:9867:fbc0:93a1.443 > 2001:7d0:7009:b680:d4ba:97ff:feee:df4a.58540: Flags [S.], seq 2803989303, ack 3556792833, win 65535, options [mss 1220,sackOK,TS val 2286624858 ecr 3286838812,nop,wscale 9], length 0 15:36:18.695000 IP6 2001:7d0:7009:b680:d4ba:97ff:feee:df4a.58540 > 2600:9000:28f7:8c00:6:9867:fbc0:93a1.443: Flags [.], ack 1, win 507, options [nop,nop,TS val 3286838821 ecr 2286624858], length 0 15:36:18.695755 IP6 2001:7d0:7009:b680:d4ba:97ff:feee:df4a.58540 > 2600:9000:28f7:8c00:6:9867:fbc0:93a1.443: Flags [P.], seq 1:518, ack 1, win 507, options [nop,nop,TS val 3286838821 ecr 2286624858], length 517 15:36:18.703381 IP6 2600:9000:28f7:8c00:6:9867:fbc0:93a1.443 > 2001:7d0:7009:b680:d4ba:97ff:feee:df4a.58540: Flags [.], ack 518, win 131, options [nop,nop,TS val 2286624867 ecr 3286838821], length 0 15:36:18.704984 IP6 2600:9000:28f7:8c00:6:9867:fbc0:93a1.443 > 2001:7d0:7009:b680:d4ba:97ff:feee:df4a.58540: Flags [P.], seq 1:3625, ack 518, win 131, options [nop,nop,TS val 2286624869 ecr 3286838821], length 3624 15:36:18.705023 IP6 2001:7d0:7009:b680:d4ba:97ff:feee:df4a.58540 > 2600:9000:28f7:8c00:6:9867:fbc0:93a1.443: Flags [.], ack 3625, win 501, options [nop,nop,TS val 3286838831 ecr 2286624869], length 0 15:36:18.706517 IP6 2600:9000:28f7:8c00:6:9867:fbc0:93a1.443 > 2001:7d0:7009:b680:d4ba:97ff:feee:df4a.58540: Flags [P.], seq 3625:4422, ack 518, win 131, options [nop,nop,TS val 2286624870 ecr 3286838821], length 797 ...
kus
- on paista, et PVE node nö pöördub taustal oma isanda poole
TOTP
TOTP kui RFC-6238 rakendus puhul ei ole põhimõtteliselt vahet, millist klient-programmi kasutada, nt
- Google Authenticator
- Microsoft Authenticator
- Yubico Authenticator
- Authy
- FreeOTP
- KeepassXC
Tööpõhimõte
- mõlemad asjaosalised st server-side ja klient-side teavad sama saladust
- mõlemal asjaosalisel on kellaaeg sama
- mõlemad asjaosalised kasutavad sama protokolli (RFC-6238)
- server oskab pin väärtust oodata ja klient oskab pin väärtust esitada
- kolmandat nö isand-osapoolt ei kasutata
- avaliku võtme krüptimist ei kasutata
- kasutamise ajal ei pruugi füüsiliselt olla Yubico Authenticator rakendus ega Yubico seade samas arvutis brauseriga
Sisselülitamiseks ei ole serveri poolel tingimata üldse midagi teha. Kasutaja logib sisse ning oma privileegides tegutsedes saab ise enda jaoks TOTP sisse lülitada valides
my account -> TFA -> Add -> TOTP
kusjuures paistab selline pilt
kus
- oma kasutajale 2FA sisselülitamise käigus tuleb Yubikey Accounts osakonnas öelda 'Add account'
- sisestada issuer, account name ja secret key ('Secret' lahter)
- seejärel lugeda Yubico authenticator ekraanilt 6 kohaline kood ja sisestada Verify Code lahtrisse
- kinnitada oma parooli teadmist sisetades Verify Password lahtrisse
Tulemusena peale PVE webgui liidesest välja logimist küsitakse kasutajanimi-parooli ning TOTP pin väärtust.
Yubico Authenticator asemel sobib kasutada nt KeepassXC programmi valides
Entries -> TOTP -> Set up TOTP
Kasulikud lisamaterjalid
QEMU
YubiHSM 2
IAM
TODO
Kasulikud lisamaterjalid
- https://cryptsus.com/blog/how-to-configure-openssh-with-yubikey-security-keys-u2f-otp-authentication-ed25519-sk-ecdsa-sk-on-ubuntu-18.04.html
- https://functionallyparanoid.com/yubikey-all-the-things/
- https://www.youtube.com/watch?v=EREi8u6Ci5I
- https://developers.yubico.com/WebAuthn/
- https://medium.com/web-security/understanding-oauth2-a50f29f0fbf7
- https://www.yubico.com/works-with-yubikey/catalog/?sort=popular
- https://github.com/descope/virtualwebauthn
- https://www.yubico.com/ee/store/compare/?srsltid=AfmBOorJPMsFUlQ9XpOIItt8VmOwDM0bKvFRvpSHw1GHR3MkgLFsu7u5
- https://fidoalliance.org/