Մենք նախատեսում ենք ապարատային բանալիներով «SSH» հոսթներին շտապ մուտք գործելու կարգ

Մենք նախատեսում ենք ապարատային բանալիներով «SSH» հոսթներին շտապ մուտք գործելու կարգ

Այս գրառման մեջ մենք կմշակենք 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-ի բանալին ավելացնելուց, տեղական կստեղծվի երկու ֆայլ.

  1. sk-user-ca, բանալու բռնակ, որը վերաբերում է անվտանգության բանալիում պահվող մասնավոր բանալիին,
  2. 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:~$

  1. Այժմ դուք կարող եք վկայագրեր ստեղծել ցանկացած օգտատիրոջ համար, որը վստահում է ձեր վկայականի մարմնին:
  2. Դուք կարող եք հեռացնել արտակարգ իրավիճակները: Դուք կարող եք պահպանել 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 տարբերակով՝ այն շրջանցելու համար: Եթե ​​Ձեզ անհրաժեշտ է վկայագիր ուղարկել գործընկերոջը, ապա ամենահեշտ և ապահով տարբերակն է Magic Wormhole. Դա անելու համար ձեզ հարկավոր է ընդամենը երկու ֆայլ՝ մեր դեպքում՝ արտակարգ և արտակարգ-cert.pub:

Այն, ինչ ինձ դուր է գալիս այս մոտեցման մեջ, ապարատային աջակցությունն է: Դուք կարող եք տեղադրել ձեր անվտանգության բանալիները պահարանում, և դրանք ոչ մի տեղ չեն գնա:

Գովազդի իրավունքների մասին

Epic սերվերներ - Ից էժան VPS դրամից հզոր պրոցեսորներով, պրոցեսորի միջուկային հաճախականությամբ մինչև 3.4 ԳՀց: Առավելագույն կոնֆիգուրացիան թույլ է տալիս լուծել գրեթե ցանկացած խնդիր՝ 128 պրոցեսորի միջուկ, 512 ԳԲ օպերատիվ հիշողություն, 4000 ԳԲ NVMe: Միացեք մեզ!

Մենք նախատեսում ենք ապարատային բանալիներով «SSH» հոսթներին շտապ մուտք գործելու կարգ

Source: www.habr.com

Добавить комментарий