Այս գրառման մեջ մենք կմշակենք SSH հյուրընկալողներին շտապ մուտք գործելու ընթացակարգ՝ օգտագործելով ապարատային անվտանգության բանալիներն անցանց: Սա ընդամենը մեկ մոտեցում է, և դուք կարող եք այն հարմարեցնել ձեր կարիքներին համապատասխան: Մենք կպահենք SSH վկայականի լիազորությունը մեր հոսթների համար ապարատային անվտանգության բանալու վրա: Այս սխեման կաշխատի գրեթե ցանկացած OpenSSH-ի վրա, ներառյալ SSH-ը միայնակ մուտքով:
Ինչի՞ համար է այս ամենը: Դե, սա վերջին միջոցի տարբերակն է: Սա հետին դուռ է, որը թույլ կտա մուտք գործել ձեր սերվեր, երբ ինչ-ինչ պատճառներով ուրիշ ոչինչ չի աշխատում:
Ինչու՞ օգտագործել վկայագրերը հանրային/մասնավոր բանալիների փոխարեն արտակարգ իրավիճակների համար:
- Ի տարբերություն հանրային բանալիների, վկայականները կարող են ունենալ շատ կարճ ժամկետ: Դուք կարող եք ստեղծել վկայագիր, որն ուժի մեջ է 1 րոպե կամ նույնիսկ 5 վայրկյան: Այս ժամկետից հետո վկայականը կդառնա անօգտագործելի նոր միացումների համար: Սա իդեալական է արտակարգ իրավիճակների մուտքի համար:
- Դուք կարող եք սերտիֆիկատ ստեղծել ձեր հոսթների ցանկացած հաշվի համար և, անհրաժեշտության դեպքում, ուղարկել նման «մեկանգամյա» վկայականներ գործընկերներին:
Ինչ եք ուզում
- Սարքավորումների անվտանգության բանալիներ, որոնք աջակցում են ռեզիդենտ բանալիներին:
Մշտական բանալիները ծածկագրային բանալիներ են, որոնք ամբողջությամբ պահվում են անվտանգության բանալիում: Երբեմն դրանք պաշտպանված են ալֆանա-թվային PIN-ով: Մշտական բանալիի հանրային մասը կարող է արտահանվել անվտանգության բանալիից, կամայականորեն մասնավոր բանալու բռնակի հետ միասին: Օրինակ, Yubikey 5 սերիայի USB ստեղները աջակցում են ռեզիդենտ ստեղներին: Ցանկալի է, որ դրանք նախատեսված են միայն հոսթին շտապ մուտք գործելու համար: Այս գրառման համար ես կօգտագործեմ միայն մեկ բանալի, բայց դուք պետք է ունենաք լրացուցիչ մեկը՝ կրկնօրինակման համար: - Ապահով վայր՝ այդ բանալիները պահելու համար:
- OpenSSH 8.2 կամ ավելի նոր տարբերակ ձեր տեղական համակարգչում և այն սերվերներում, որոնցից ցանկանում եք մուտք գործել արտակարգ իրավիճակներ: Ubuntu 20.04-ը մատակարարվում է OpenSSH 8.2-ով:
- (ըստ ցանկության, բայց խորհուրդ է տրվում) CLI գործիք վկայականները ստուգելու համար:
Ուսուցում
Նախ, դուք պետք է ստեղծեք սերտիֆիկացման մարմին, որը տեղակայված կլինի ապարատային անվտանգության բանալու վրա: Տեղադրեք բանալին և գործարկեք.
$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]
Որպես մեկնաբանություն (-C) նշել եմ [էլեկտրոնային փոստով պաշտպանված]այնպես որ դուք չեք մոռանում, թե անվտանգության որ բանալիին է պատկանում այս վկայականի լիազորությունը:
Ի լրումն Yubikey-ի բանալին ավելացնելուց, տեղական կստեղծվի երկու ֆայլ.
- sk-user-ca, բանալու բռնակ, որը վերաբերում է անվտանգության բանալիում պահվող մասնավոր բանալիին,
- sk-user-ca.pub, որը կլինի ձեր վկայականի մարմնի հանրային բանալին:
Բայց մի անհանգստացեք, Yubikey-ը պահպանում է ևս մեկ մասնավոր բանալի, որը հնարավոր չէ առբերել: Հետեւաբար, այստեղ ամեն ինչ հուսալի է:
Հոսթերների վրա, որպես root, ավելացրեք (եթե դեռ չեք արել) հետևյալը ձեր SSHD կազմաձևում (/etc/ssh/sshd_config).
TrustedUserCAKeys /etc/ssh/ca.pub
Այնուհետև հոսթի վրա ավելացրեք հանրային բանալին (sk-user-ca.pub) /etc/ssh/ca.pub-ին:
Վերագործարկեք դեյմոնը.
# /etc/init.d/ssh restart
Այժմ մենք կարող ենք փորձել մուտք գործել հոսթ: Բայց նախ մեզ անհրաժեշտ է վկայագիր: Ստեղծեք բանալիների զույգ, որը կապված կլինի վկայագրի հետ.
$ ssh-keygen -t ecdsa -f emergency
Վկայականներ և SSH զույգեր
Երբեմն գայթակղիչ է վկայագիր օգտագործել որպես հանրային/մասնավոր բանալիների զույգի փոխարինում: Բայց միայն վկայականը բավարար չէ օգտատիրոջ իսկությունը հաստատելու համար: Յուրաքանչյուր վկայագիր ունի նաև իր հետ կապված անձնական բանալի: Ահա թե ինչու մենք պետք է գեներացնենք այս «արտակարգ» բանալիների զույգը՝ նախքան ինքներս մեզ վկայական տրամադրելը: Կարևորն այն է, որ մենք սերվերին ցույց ենք տալիս ստորագրված վկայականը՝ նշելով այն բանալիների զույգը, որի համար ունենք անձնական բանալի։Այսպիսով, հանրային բանալիների փոխանակումը դեռ կենդանի և լավ է: Սա աշխատում է նույնիսկ վկայականների դեպքում: Վկայականները պարզապես վերացնում են սերվերի կողմից հանրային բանալիները պահելու անհրաժեշտությունը:
Հաջորդը, ինքնին ստեղծեք վկայագիրը: Ինձ պետք է ubuntu օգտվողի թույլտվություն 10 րոպե ընդմիջումով: Դուք կարող եք դա անել ձեր ձևով:
$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency
Ձեզանից կպահանջվի ստորագրել վկայագիրը՝ օգտագործելով ձեր մատնահետքը: Դուք կարող եք ավելացնել լրացուցիչ օգտանուններ՝ բաժանված ստորակետերով, օրինակ՝ -n ubuntu,carl,ec2-user
Վերջ, հիմա դուք վկայական ունեք: Հաջորդը դուք պետք է նշեք ճիշտ թույլտվությունները.
$ chmod 600 emergency-cert.pub
Դրանից հետո դուք կարող եք դիտել ձեր վկայագրի բովանդակությունը.
$ step ssh inspect emergency-cert.pub
Ահա թե ինչ տեսք ունի իմը.
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
Այստեղ հանրային բանալին մեր ստեղծած արտակարգ իրավիճակների բանալին է, և sk-user-ca-ն կապված է սերտիֆիկացման մարմնի հետ:
Վերջապես մենք պատրաստ ենք գործարկել SSH հրամանը.
$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$
- Այժմ դուք կարող եք վկայագրեր ստեղծել ցանկացած օգտատիրոջ համար, որը վստահում է ձեր վկայականի մարմնին:
- Դուք կարող եք հեռացնել արտակարգ իրավիճակները: Դուք կարող եք պահպանել sk-user-ca-ն, բայց դա ձեզ հարկավոր չէ, քանի որ այն նաև անվտանգության բանալու վրա է: Կարող եք նաև հեռացնել բնօրինակ PEM հանրային բանալին ձեր հոսթներից (օրինակ՝ ~/.ssh/authorized_keys-ում ubuntu օգտագործողի համար), եթե այն օգտագործել եք արտակարգ իրավիճակների մուտքի համար:
Արտակարգ իրավիճակների հասանելիություն. Գործողությունների ծրագիր
Տեղադրեք անվտանգության բանալին և գործարկեք հրամանը.
$ ssh-add -K
Սա կավելացնի վկայականի մարմնի հանրային բանալին և բանալիների նկարագրիչը SSH գործակալին:
Այժմ արտահանեք հանրային բանալին՝ վկայագիր ստեղծելու համար.
$ ssh-add -L | tail -1 > sk-user-ca.pub
Ստեղծեք վկայագիր, որի ժամկետը լրանում է, օրինակ, ոչ ավելի, քան մեկ ժամ.
$ 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
Եվ հիմա կրկին SSH:
$ ssh -i emergency username@host
Եթե ձեր .ssh/config ֆայլը միանալու ժամանակ որոշ խնդիրներ է առաջացնում, կարող եք գործարկել ssh-ը -F none տարբերակով՝ այն շրջանցելու համար: Եթե Ձեզ անհրաժեշտ է վկայագիր ուղարկել գործընկերոջը, ապա ամենահեշտ և ապահով տարբերակն է
Այն, ինչ ինձ դուր է գալիս այս մոտեցման մեջ, ապարատային աջակցությունն է: Դուք կարող եք տեղադրել ձեր անվտանգության բանալիները պահարանում, և դրանք ոչ մի տեղ չեն գնա:
Գովազդի իրավունքների մասին
Epic սերվերներ - Ից
Source: www.habr.com