Selles postituses töötame välja protseduuri, mis võimaldab hädaolukorras juurdepääsu SSH-hostidele, kasutades võrguühenduseta riistvara turvavõtmeid. See on vaid üks lähenemisviis ja saate seda kohandada vastavalt oma vajadustele. Salvestame oma hostide SSH-sertifikaadi volituse riistvaralisele turvavõtmele. See skeem töötab peaaegu kõigi OpenSSH-ga, sealhulgas ühekordse sisselogimisega SSH-ga.
Mille jaoks see kõik on? Noh, see on viimane võimalus. See on tagauks, mis võimaldab teil pääseda oma serverile juurde, kui mingil põhjusel miski muu ei tööta.
Miks kasutada hädaabipääsuks avalike/privaatvõtmete asemel sertifikaate?
- Erinevalt avalikest võtmetest võib sertifikaatidel olla väga lühike eluiga. Saate luua sertifikaadi, mis kehtib 1 minuti või isegi 5 sekundit. Pärast seda perioodi muutub sertifikaat uute ühenduste jaoks kasutuskõlbmatuks. See on ideaalne hädaabipääsuks.
- Saate luua sertifikaadi mis tahes konto jaoks oma hostides ja vajadusel saata selliseid "ühekordseid" sertifikaate kolleegidele.
Mida sa vajad
- Riistvaralised turvavõtmed, mis toetavad püsivõtmeid.
Residentvõtmed on krüptograafilised võtmed, mis on täielikult salvestatud turvavõtmesse. Mõnikord on need kaitstud tähtnumbrilise PIN-koodiga. Residendivõtme avaliku osa saab eksportida turvavõtmest, valikuliselt koos privaatvõtme käepidemega. Näiteks Yubikey 5-seeria USB-võtmed toetavad resident-võtmeid.Soovitav on, et need oleksid mõeldud ainult hädaolukorras juurdepääsuks hostile. Selle postituse jaoks kasutan ainult ühte võtit, kuid varundamiseks peaks teil olema veel üks. - Turvaline koht nende võtmete hoidmiseks.
- OpenSSH versioon 8.2 või uuem teie kohalikus arvutis ja serverites, millele soovite hädaolukorras juurdepääsu saada. Ubuntu 20.04 tarnitakse koos OpenSSH 8.2-ga.
- (valikuline, kuid soovitatav) CLI tööriist sertifikaatide kontrollimiseks.
Koolitus
Esiteks peate looma sertifitseerimisasutuse, mis asub riistvara turvavõtmel. Sisestage võti ja käivitage:
$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]
Kommentaariks (-C) märkisin [meiliga kaitstud]nii et te ei unustaks, millisele turvavõtmele see sertifikaadi asutus kuulub.
Lisaks Yubikey-le võtme lisamisele luuakse kaks faili kohapeal:
- sk-user-ca, võtmekäepide, mis viitab turvavõtmes salvestatud privaatvõtmele,
- sk-user-ca.pub, mis on teie sertifitseerimisasutuse avalik võti.
Kuid ärge muretsege, Yubikey salvestab teise privaatvõtme, mida ei saa hankida. Seetõttu on siin kõik usaldusväärne.
Hostides lisage administraatorina (kui te pole seda veel teinud) oma SSHD konfiguratsiooni (/etc/ssh/sshd_config):
TrustedUserCAKeys /etc/ssh/ca.pub
Seejärel lisage hostis avalik võti (sk-user-ca.pub) faili /etc/ssh/ca.pub
Taaskäivitage deemon:
# /etc/init.d/ssh restart
Nüüd saame proovida hostile juurde pääseda. Kuid kõigepealt vajame sertifikaati. Looge võtmepaar, mis seotakse sertifikaadiga:
$ ssh-keygen -t ecdsa -f emergency
Sertifikaadid ja SSH paarid
Mõnikord on ahvatlev kasutada sertifikaati avaliku/privaatse võtmepaari asendajana. Kuid sertifikaadist üksi kasutaja autentimiseks ei piisa. Igal sertifikaadil on ka sellega seotud privaatvõti. Seetõttu peame genereerima selle "hädaolukorra" võtmepaari, enne kui väljastame endale sertifikaadi. Oluline on see, et me näitame serverile allkirjastatud sertifikaati, näidates ära võtmepaari, mille jaoks meil on privaatvõti.Nii et avaliku võtme vahetus on endiselt elus ja terve. See töötab isegi sertifikaatidega. Sertifikaadid välistavad lihtsalt vajaduse, et server salvestaks avalikke võtmeid.
Järgmisena looge sertifikaat ise. Vajan ubuntu kasutaja autoriseerimist 10-minutilise intervalliga. Saate seda teha omal moel.
$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency
Teil palutakse sertifikaat oma sõrmejälje abil allkirjastada. Saate lisada täiendavaid kasutajanimesid, eraldades need komadega, näiteks -n ubuntu,carl,ec2-user
See on kõik, nüüd on teil sertifikaat! Järgmisena peate määrama õiged load:
$ chmod 600 emergency-cert.pub
Pärast seda saate oma sertifikaadi sisu vaadata:
$ step ssh inspect emergency-cert.pub
Minu oma näeb välja selline:
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
Siin on avalik võti meie loodud hädaabivõti ja sk-user-ca on seotud sertifitseerimisasutusega.
Lõpuks oleme valmis SSH-käsku käivitama:
$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$
- Nüüd saate luua sertifikaate iga kasutaja jaoks teie sertifitseerimisasutust usaldavas hostis.
- Saate hädaolukorra eemaldada. Saate salvestada faili sk-user-ca, kuid te ei pea seda tegema, kuna see on ka turvavõtmel. Samuti võite soovida eemaldada oma hostidelt algse PEM-i avaliku võtme (näiteks ubuntu kasutaja jaoks failis ~/.ssh/authorized_keys), kui kasutasite seda hädaabipääsuks.
Hädaabi juurdepääs: tegevuskava
Kleepige turvavõti ja käivitage käsk:
$ ssh-add -K
See lisab SSH-agendile sertifitseerimisasutuse avaliku võtme ja võtmekirjelduse.
Nüüd eksportige sertifikaadi loomiseks avalik võti:
$ ssh-add -L | tail -1 > sk-user-ca.pub
Looge sertifikaat, mille aegumiskuupäev on näiteks kuni tund:
$ 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
Ja nüüd jälle SSH:
$ ssh -i emergency username@host
Kui teie .ssh/config-fail põhjustab ühenduse loomisel probleeme, võite käivitada ssh-i valikuga -F none, et sellest mööda minna. Kui teil on vaja kolleegile sertifikaat saata, on kõige lihtsam ja turvalisem variant
Mis mulle selle lähenemisviisi juures meeldib, on riistvaratugi. Võite panna oma turvavõtmed seifi ja need ei kao kuhugi.
Reklaamide õiguste kohta
Eepilised serverid - Kas
Allikas: www.habr.com