En ĉi tiu afiŝo, ni disvolvos proceduron por kriza aliro al SSH-gastigantoj uzante aparatajn sekurecajn ŝlosilojn eksterrete. Ĉi tio estas nur unu aliro, kaj vi povas adapti ĝin laŭ viaj bezonoj. Ni stokos la atestilon SSH por niaj gastigantoj sur la aparatara sekurecŝlosilo. Ĉi tiu skemo funkcios ĉe preskaŭ ajna OpenSSH, inkluzive de SSH kun ununura ensaluto.
Por kio ĉi tio ĉio? Nu, ĉi tio estas lasta rimeda elekto. Ĉi tio estas malantaŭa pordo, kiu permesos vin akiri aliron al via servilo kiam ial nenio alia funkcias.
Kial uzi atestilojn anstataŭ publikaj/privataj ŝlosiloj por kriza aliro?
- Male al publikaj ŝlosiloj, atestiloj povas havi tre mallongan vivdaŭron. Vi povas generi atestilon, kiu validas dum 1 minuto aŭ eĉ 5 sekundoj. Post ĉi tiu periodo, la atestilo fariĝos neuzebla por novaj rilatoj. Ĉi tio estas ideala por kriza aliro.
- Vi povas krei atestilon por iu ajn konto en viaj gastigantoj kaj, se necese, sendi tiajn "unufojajn" atestojn al kolegoj.
Kion vi bezonas
- Aparataj sekurecŝlosiloj kiuj subtenas loĝantajn ŝlosilojn.
Loĝantaj ŝlosiloj estas ĉifrikaj ŝlosiloj, kiuj estas konservitaj tute ene de la sekurecŝlosilo. Kelkfoje ili estas protektitaj per alfanombra PIN. La publika parto de la loĝanta ŝlosilo povas esti eksportita de la sekurecŝlosilo, laŭvole kune kun la privata ŝlosilo tenilo. Ekzemple, USB-ŝlosiloj Yubikey 5-serio subtenas loĝantajn ŝlosilojn.Estas konsilinde, ke ili estas destinitaj nur por kriza aliro al la gastiganto. Por ĉi tiu afiŝo mi uzos nur unu ŝlosilon, sed vi devus havi plian por sekurkopio. - Sekura loko por konservi tiujn ŝlosilojn.
- OpenSSH-versio 8.2 aŭ pli alta en via loka komputilo kaj en la serviloj al kiuj vi volas havi krizan aliron. Ubuntu 20.04 sendas kun OpenSSH 8.2.
- (laŭvola, sed rekomendita) CLI-ilo por kontroli atestojn.
Trejnado
Unue, vi devas krei atestan aŭtoritaton, kiu troviĝos sur la aparatara sekurecŝlosilo. Enigu la ŝlosilon kaj rulu:
$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]
Kiel komenton (-C) mi indikis [retpoŝte protektita]do vi ne forgesu, al kiu sekureca ŝlosilo apartenas ĉi tiu atestila aŭtoritato.
Krom aldoni la ŝlosilon al la Yubikey, du dosieroj estos generitaj loke:
- sk-user-ca, ŝlosila tenilo kiu rilatas al la privata ŝlosilo stokita en la sekurecŝlosilo,
- sk-user-ca.pub, kiu estos la publika ŝlosilo por via atestila aŭtoritato.
Sed ne maltrankviliĝu, la Yubikey konservas alian privatan ŝlosilon, kiu ne povas esti prenita. Tial ĉio estas fidinda ĉi tie.
Ĉe gastigantoj, kiel radiko, aldonu (se vi ne jam) jenon al via SSHD-agordo (/etc/ssh/sshd_config):
TrustedUserCAKeys /etc/ssh/ca.pub
Tiam sur la gastiganto, aldonu la publikan ŝlosilon (sk-user-ca.pub) al /etc/ssh/ca.pub
Rekomencu la demonon:
# /etc/init.d/ssh restart
Nun ni povas provi aliri la gastiganton. Sed unue ni bezonas atestilon. Kreu ŝlosilparon kiu estos asociita kun la atestilo:
$ ssh-keygen -t ecdsa -f emergency
Atestiloj kaj SSH-paroj
Kelkfoje estas tente uzi atestilon kiel anstataŭaĵon de publika/privata ŝlosilparo. Sed atestilo sole ne sufiĉas por aŭtentikigi uzanton. Ĉiu atestilo ankaŭ havas privatan ŝlosilon asociitan kun ĝi. Jen kial ni devas generi ĉi tiun "kriz" ŝlosilparon antaŭ ol ni eldonas al ni mem atestilon. La grava afero estas, ke ni montras la subskribitan atestilon al la servilo, indikante la ŝlosilparon por kiu ni havas privatan ŝlosilon.Do publika ŝlosilo interŝanĝo ankoraŭ vivas kaj bone. Ĉi tio funkcias eĉ kun atestiloj. Atestiloj simple forigas la bezonon de la servilo stoki publikajn ŝlosilojn.
Poste, kreu la atestilon mem. Mi bezonas rajtigon de ubuntu-uzanto en intervalo de 10 minutoj. Vi povas fari ĝin laŭ via maniero.
$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency
Oni petos vin subskribi la atestilon per via fingrospuro. Vi povas aldoni pliajn uzantnomojn apartigitajn per komoj, ekzemple -n ubuntu,carl,ec2-user
Jen, nun vi havas atestilon! Poste vi devas specifi la ĝustajn permesojn:
$ chmod 600 emergency-cert.pub
Post ĉi tio, vi povas vidi la enhavon de via atestilo:
$ step ssh inspect emergency-cert.pub
Jen kiel aspektas la mia:
emergency-cert.pub
Type: [email protected] user certificate
Public key: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
Signing CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
Key ID: "test-key"
Serial: 0
Valid: from 2020-06-24T16:53:03 to 2020-06-24T17:03:03
Principals:
ubuntu
Critical Options: (none)
Extensions:
permit-X11-forwarding
permit-agent-forwarding
permit-port-forwarding
permit-pty
permit-user-rc
Ĉi tie la publika ŝlosilo estas la krizŝlosilo, kiun ni kreis, kaj sk-user-ca estas asociita kun la atestadaŭtoritato.
Fine ni pretas ruli la komandon SSH:
$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$
- Vi nun povas krei atestilojn por iu ajn uzanto en gastiganto, kiu fidas vian atestan aŭtoritaton.
- Vi povas forigi krizon. Vi povas konservi sk-user-ca, sed vi ne bezonas, ĉar ĝi ankaŭ estas sur la sekureca ŝlosilo. Vi eble ankaŭ volas forigi la originan publikan ŝlosilon PEM de viaj gastigantoj (ekzemple en ~/.ssh/authorized_keys por la ubuntu-uzanto) se vi uzis ĝin por kriza aliro.
Urĝa Aliro: Agadplano
Algluu la sekurecan ŝlosilon kaj rulu la komandon:
$ ssh-add -K
Ĉi tio aldonos la publikan ŝlosilon kaj ŝlosilan priskribilon de la atestila aŭtoritato al la SSH-agento.
Nun eksportu la publikan ŝlosilon por fari atestilon:
$ ssh-add -L | tail -1 > sk-user-ca.pub
Kreu atestilon kun limdato de, ekzemple, ne pli ol unu horo:
$ ssh-keygen -t ecdsa -f emergency
$ ssh-keygen -Us sk-user-ca.pub -I test-key -n [username] -V -5m:+60m emergency
$ chmod 600 emergency-cert.pub
Kaj nun SSH denove:
$ ssh -i emergency username@host
Se via .ssh/config dosiero kaŭzas kelkajn problemojn dum la konekto, vi povas ruli ssh kun la opcio -F none por preteriri ĝin. Se vi bezonas sendi atestilon al kolego, la plej facila kaj sekura opcio estas
Kion mi ŝatas pri ĉi tiu aliro estas la aparatara subteno. Vi povas meti viajn sekurecajn ŝlosilojn en monŝrankon kaj ili ne iros ien.
Pri la Rajtoj de Reklamado
Epopeaj serviloj Estas
fonto: www.habr.com