Yubikey: erinevus redaktsioonide vahel

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti
 
(ei näidata sama kasutaja 46 vahepealset redaktsiooni)
57. rida: 57. rida:
 
====Tööpõhimõte====
 
====Tööpõhimõte====
   
  +
Väited
TODO
 
  +
  +
* 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
  +
  +
[[Fail:20250601-yubikey-otp-signup-01.png|900px]]
  +
  +
kus
  +
  +
* Yubikey OTP väärtus saadakse paigutades kursori kuhugi teksti asukohta ja pressides seadmel nuppu
  +
  +
Tulemusena väljastatakse
  +
  +
[[Fail:20250601-yubikey-otp-signup-02.png|900px]]
   
 
====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
99. rida: 121. rida:
   
 
[[Fail:202500525-yubico-otp-upload-02.png|950px]]
 
[[Fail:202500525-yubico-otp-upload-02.png|950px]]
  +
  +
Nüüd edasi on võimalik kasutada 'Yubico OTP' funktsionaalsust, nt seadistada käima Proxmox PVE sisselogimine 'Yubikey OTP' abil.
   
 
===Yubikey playground===
 
===Yubikey playground===
231. rida: 255. rida:
 
===Proxmox===
 
===Proxmox===
   
  +
Erinevate lahendustega kaasnevad natuke erinevad asjaolud
====Webauthn====
 
  +
  +
* 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 (nt 'Yubico OTP')
  +
  +
====WebAuthn====
  +
  +
Väited
  +
  +
* WebAuthn autentimisel osalevad kaks osapoolt - 1. kliendi brauser (ja yubikey seade samas arvutis) ja 2. teenuse server
   
 
Sündmuste voog
 
Sündmuste voog
241. rida: 277. rida:
 
* kasutaja seadistab oma konto juures webauthn 2FA kasutamise - muu hulgas paigaldab ta server-side'i oma avaliku võtme
 
* 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
 
* 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
  +
  +
[[Fail:20250601-yubikey-webauth-01.png|1000px]]
   
 
Kasulikud lisamaterjalid
 
Kasulikud lisamaterjalid
248. rida: 298. rida:
 
====Yubico OTP====
 
====Yubico OTP====
   
  +
Väited
TODO
 
  +
  +
* 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
  +
  +
<pre>
  +
yubicloud isand internetis
  +
  +
_____
  +
| |
  +
| |
  +
|_____|
  +
|
  +
brauser ____ |
  +
yubikey | | |
  +
|____| |
  +
| |
  +
----|-----------------|------------------------|--------------
  +
__|__
  +
| | pve server
  +
|_____|
  +
  +
  +
</pre>
  +
  +
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
  +
  +
[[Fail:20250601-yubikey-otp-02.png|800px]]
  +
  +
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
  +
  +
[[Fail:20250601-yubikey-otp-03.png|800px]]
  +
  +
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
  +
  +
[[Fail:20250601-yubikey-otp-01.png|800px]]
  +
  +
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
  +
  +
<pre>
  +
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
  +
...
  +
</pre>
  +
  +
kus
  +
  +
* on paista, et PVE node nö pöördub taustal oma isanda poole
   
 
====TOTP====
 
====TOTP====
   
  +
TOTP kui RFC-6238 rakendus puhul ei ole põhimõtteliselt vahet, millist klient-programmi kasutada, nt
TODO
 
  +
  +
* 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
  +
  +
[[Fail:20250601-totp-01.png|800px]]
  +
  +
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====
 
====Kasulikud lisamaterjalid====

Viimane redaktsioon: 1. juuni 2025, kell 21:23

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

20250601-yubikey-otp-signup-01.png

kus

  • Yubikey OTP väärtus saadakse paigutades kursori kuhugi teksti asukohta ja pressides seadmel nuppu

Tulemusena väljastatakse

20250601-yubikey-otp-signup-02.png

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

202500525-yubico-otp-upload-00.png

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/

202500525-yubico-otp-upload-01.png

kus

  • Yubico OTP teksti esimesed 12 sümbolit esitavad public id väärtuse

Tulemusena öeldakse õnnestumisel

202500525-yubico-otp-upload-02.png

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

202500525-yubikey-playground-01.png

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

20250519-chrome-virtual-webauthn-01.png

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

202500525-yubikey-ssh-fido2-01.png

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

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 (nt 'Yubico OTP')

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

20250601-yubikey-webauth-01.png

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

20250601-yubikey-otp-02.png

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

20250601-yubikey-otp-03.png

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

20250601-yubikey-otp-01.png

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

20250601-totp-01.png

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