Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար

Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար
В մեր նախորդ հոդվածներից մեկը մենք խոսեցինք ընկերությունների կորպորատիվ պորտալներում երկգործոն նույնականացման կարևորության մասին: Վերջին անգամ մենք ցույց տվեցինք, թե ինչպես կարելի է անվտանգ նույնականացում ստեղծել IIS վեբ սերվերում:

Մեկնաբանություններում մեզ խնդրել են հրահանգներ գրել Linux-ի համար ամենատարածված վեբ սերվերների համար՝ nginx և Apache:

Դուք հարցրեցիք, - գրել ենք:

Ինչ է ձեզ հարկավոր սկսելու համար:

  • Ցանկացած ժամանակակից Linux բաշխում: Ես փորձնական կարգավորում արեցի MX Linux 18.2_x64-ի վրա: Սա, իհարկե, սերվերի բաշխում չէ, բայց Debian-ի համար դժվար թե որևէ տարբերություն լինի: Այլ բաշխումների դեպքում դեպի կազմաձևերի գրադարաններ տանող ուղիները կարող են մի փոքր տարբերվել:
  • Նշան. Մենք շարունակում ենք օգտագործել մոդելը Rutoken EDS PKI, որը իդեալական է կորպորատիվ օգտագործման համար արագության բնութագրերի առումով:
  • Linux-ում թոքենի հետ աշխատելու համար անհրաժեշտ է տեղադրել հետևյալ փաթեթները.
    libccid libpcsclite1 pcscd pcsc-tools opensc

Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար

Վկայականների տրամադրում

Նախորդ հոդվածներում մենք հիմնվել ենք այն փաստի վրա, որ սերվերի և հաճախորդի վկայականները կտրամադրվեն Microsoft CA-ի միջոցով: Բայց քանի որ մենք ամեն ինչ կարգավորում ենք Linux-ում, մենք ձեզ կպատմենք նաև այս վկայագրերը տրամադրելու այլընտրանքային եղանակի մասին՝ առանց Linux-ից դուրս գալու:
Մենք կօգտագործենք XCA որպես CA (https://hohnstaedt.de/xca/), որը հասանելի է ցանկացած ժամանակակից Linux բաշխման վրա: Բոլոր գործողությունները, որոնք մենք կկատարենք XCA-ում, կարող են կատարվել հրամանի տողի ռեժիմում՝ օգտագործելով OpenSSL և pkcs11-գործիքները, սակայն ավելի մեծ պարզության և պարզության համար մենք դրանք չենք ներկայացնի այս հոդվածում:

Ինչից սկսել

  1. Տեղադրել:
    $ apt-get install xca
  2. Եվ մենք վազում ենք.
    $ xca
  3. Մենք ստեղծում ենք մեր տվյալների բազան CA-ի համար - /root/CA.xdb
    Խորհուրդ ենք տալիս սերտիֆիկատների մարմնի տվյալների բազան պահել մի պանակում, որտեղ մուտք ունի միայն ադմինիստրատորը: Սա կարևոր է արմատային վկայագրերի մասնավոր բանալիները պաշտպանելու համար, որոնք օգտագործվում են բոլոր մյուս վկայագրերը ստորագրելու համար:

Ստեղծեք բանալիներ և արմատային CA վկայագիր

Հանրային բանալիների ենթակառուցվածքը (PKI) հիմնված է հիերարխիկ համակարգի վրա: Այս համակարգում հիմնականը արմատային սերտիֆիկացման մարմինն է կամ արմատային CA: Նախ պետք է ստեղծվի դրա վկայականը:

  1. Մենք ստեղծում ենք RSA-2048 մասնավոր բանալի CA-ի համար: Դա անելու համար ներդիրում Մասնավոր բանալիներ հրել Նոր բանալի և ընտրեք համապատասխան տեսակը:
  2. Սահմանեք անուն նոր բանալիների զույգի համար: Ես այն անվանեցի CA Key:
  3. Մենք ինքնին թողարկում ենք CA վկայագիրը՝ օգտագործելով ստեղծված բանալիների զույգը: Դա անելու համար անցեք ներդիր Հավաստագրեր և կտտացրեք Նոր վկայական.
  4. Համոզվեք, որ ընտրեք ՊԱԳ - 256, քանի որ SHA-1-ի օգտագործումն այլևս չի կարող անվտանգ համարվել:
  5. Համոզվեք, որ ընտրեք որպես ձևանմուշ [լռելյայն] CA. Մի մոռացեք սեղմել Կիրառել բոլորը, հակառակ դեպքում կաղապարը չի կիրառվում։
  6. Ներդիրում Առարկա ընտրեք մեր բանալիների զույգը: Այնտեղ կարող եք լրացնել վկայագրի բոլոր հիմնական դաշտերը։

Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար

Բանալների և https սերվերի վկայագրի ստեղծում

  1. Նմանապես մենք ստեղծում ենք RSA-2048 մասնավոր բանալի սերվերի համար, ես այն անվանել եմ Server Key:
  2. Վկայագիր ստեղծելիս մենք ընտրում ենք, որ սերվերի վկայականը պետք է ստորագրված լինի CA վկայականով:
  3. Մի մոռացեք ընտրել ՊԱԳ - 256.
  4. Մենք ընտրում ենք որպես ձևանմուշ [կանխադրված] HTTPS_server. Սեղմեք Կիրառել բոլորը.
  5. Այնուհետև ներդիրում Առարկա ընտրեք մեր բանալին և լրացրեք անհրաժեշտ դաշտերը:

Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար

Ստեղծեք բանալիներ և վկայականներ օգտագործողի համար

  1. Օգտագործողի անձնական բանալին կպահվի մեր նշանում: Դրա հետ աշխատելու համար անհրաժեշտ է տեղադրել PKCS#11 գրադարանը մեր կայքից: Հանրաճանաչ բաշխումների համար մենք բաժանում ենք պատրաստի փաթեթներ, որոնք գտնվում են այստեղ՝ https://www.rutoken.ru/support/download/pkcs/. Մենք ունենք նաև հավաքներ arm64, armv7el, armv7hf, e2k, mipso32el-ի համար, որոնք կարելի է ներբեռնել մեր SDK-ից. https://www.rutoken.ru/developers/sdk/. Բացի Linux-ի համար նախատեսված հավաքներից, կան նաև հավաքներ macOS-ի, freebsd-ի և android-ի համար:
  2. XCA-ին նոր PKCS#11 մատակարարի ավելացում: Դա անելու համար անցեք մենյու Ընտրանքներ դեպի ներդիր PKCS#11 Մատակարար.
  3. Մենք սեղմում ենք Ավելացնել և ընտրեք դեպի PKCS#11 գրադարան տանող ուղին: Իմ դեպքում դա usrliblibrtpkcs11ecp.so է։
  4. Մեզ անհրաժեշտ կլինի ֆորմատավորված Rutoken EDS PKI նշան: Ներբեռնեք rtAdmin կոմունալ ծրագիրը - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Մենք իրականացնում ենք
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Մենք ընտրում ենք RSA-2048 բանալին Rutoken EDS PKI-ի համար որպես բանալի տեսակ: Ես այս բանալին անվանեցի Client Key:

    Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար

  7. Մուտքագրեք PIN կոդը: Եվ մենք սպասում ենք բանալիների զույգի ապարատային ստեղծման ավարտին

    Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար

  8. Մենք օգտատիրոջ համար վկայագիր ենք ստեղծում սերվերի վկայագրի անալոգիայով: Այս անգամ մենք ընտրում ենք ձևանմուշ [կանխադրված] HTTPS_client և մի մոռացեք սեղմել Կիրառել բոլորը.
  9. Ներդիրում Առարկա մուտքագրեք տեղեկություններ օգտագործողի մասին. Մենք դրական ենք պատասխանում վկայականը նշանի համար պահելու խնդրանքին:

Արդյունքում, ներդիրի վրա Վկայագրեր XCA-ում դուք պետք է ստանաք նման բան:

Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար
Բանալիների և վկայագրերի այս նվազագույն փաթեթը բավական է, որպեսզի սկսեն ինքնուրույն կարգավորել սերվերները:

Կարգավորելու համար մենք պետք է արտահանենք CA վկայականը, սերվերի վկայականը և սերվերի մասնավոր բանալին:

Դա անելու համար XCA-ի համապատասխան ներդիրում ընտրեք ցանկալի մուտքը և սեղմեք Արտահանում.

Nginx

Ես չեմ գրի, թե ինչպես տեղադրել և գործարկել nginx սերվերը, այս թեմայի վերաբերյալ բավականաչափ հոդվածներ կան ինտերնետում, չխոսելով պաշտոնական փաստաթղթերի մասին: Եկեք անմիջապես անցնենք HTTPS-ի և երկգործոն նույնականացման կարգավորումներին՝ օգտագործելով նշան:

nginx.conf-ում սերվերի բաժնում ավելացրեք հետևյալ տողերը.

server {
	listen 443 ssl;
	ssl_verify_depth 1;
	ssl_certificate /etc/nginx/Server.crt;
	ssl_certificate_key /etc/nginx/ServerKey.pem;
	ssl_client_certificate /etc/nginx/CA.crt;
	ssl_verify_client on;
}

Nginx-ում ssl-ի կազմաձևման հետ կապված բոլոր պարամետրերի մանրամասն նկարագրությունը կարելի է գտնել այստեղ. https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Ես պարզապես հակիրճ նկարագրեմ նրանց, որոնք ես ինքս ինձ հարցրի.

  • ssl_verify_client - նշում է, որ հավաստագրի վստահության շղթան պետք է ստուգվի:
  • ssl_verify_depth - Սահմանում է շղթայում վստահելի արմատային վկայագրի որոնման խորությունը: Քանի որ մեր հաճախորդի վկայականը անմիջապես ստորագրվում է արմատային վկայագրի վրա, խորությունը սահմանվում է 1: Եթե օգտագործողի վկայականը ստորագրված է միջանկյալ CA-ի վրա, ապա այս պարամետրում պետք է նշվի 2 և այլն:
  • ssl_client_certificate - նշում է վստահելի արմատային վկայագրի ուղին, որն օգտագործվում է օգտվողի վկայականի նկատմամբ վստահությունը ստուգելիս:
  • ssl_certificate/ssl_certificate_key - նշեք սերվերի վկայագրի/մասնավոր բանալի տանող ուղին:

Մի մոռացեք գործարկել nginx -t-ը՝ ստուգելու համար, որ կոնֆիգուրայում տառասխալներ չկան, և որ բոլոր ֆայլերը ճիշտ տեղում են և այլն:

Եվ այսքանը: Ինչպես տեսնում եք, կարգավորումը շատ պարզ է:

Ստուգելով, որ այն աշխատում է Firefox-ում

Քանի որ մենք ամեն ինչ ամբողջությամբ անում ենք Linux-ով, մենք կենթադրենք, որ մեր օգտվողները նույնպես աշխատում են Linux-ով (եթե նրանք ունեն Windows, ապա տես բրաուզերների տեղադրման հրահանգները նախորդ հոդվածում.

  1. Եկեք գործարկենք Firefox-ը:
  2. Եկեք նախ փորձենք մուտք գործել առանց նշանի: Մենք ստանում ենք այս նկարը.

    Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար

  3. Եկեք գնանք մասին ՝ նախընտրություններ # գաղտնիություն, և մենք գնում ենք Անվտանգության սարքեր…
  4. Մենք սեղմում ենք Բեռավելացնել նոր PKCS#11 Սարքի վարորդ և նշել դեպի մեր librtpkcs11ecp.so ուղին:
  5. Ստուգելու համար, որ վկայագիրը տեսանելի է, կարող եք գնալ Վկայագրերի կառավարիչ. Ձեզ կառաջարկվի մուտքագրել ձեր PIN կոդը: Ճիշտ մուտքագրումից հետո կարող եք ստուգել, ​​թե ինչ կա ներդիրում Ձեր վկայականները հայտնվեց մեր վկայականը նշանից:
  6. Հիմա եկեք գնանք նշանով: Firefox-ը ձեզ հուշում է ընտրել սերտիֆիկատ, որը կընտրվի սերվերի համար: Ընտրեք մեր վկայականը:

    Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար

  7. ՇԱՀՈՒՅԹ

    Երկու գործոնով նույնականացում կայքում՝ օգտագործելով USB նշան: Այժմ նաև Linux-ի համար

Կարգավորումը կատարվում է մեկ անգամ, և ինչպես տեսնում եք վկայագրի հարցման պատուհանում, մենք կարող ենք պահպանել մեր ընտրությունը: Դրանից հետո, ամեն անգամ, երբ մենք մուտք ենք գործում պորտալ, մեզ միայն անհրաժեշտ կլինի տեղադրել նշան և մուտքագրել օգտվողի PIN կոդը, որը նշված է ձևաչափման ժամանակ: Նման նույնականացումից հետո սերվերն արդեն գիտի, թե որ օգտատերն է մուտք գործել, և դուք այլևս չեք կարող ստեղծել լրացուցիչ պատուհաններ ստուգման համար, այլ անմիջապես թույլ տվեք օգտվողին մտնել իր անձնական հաշիվ:

Apache

Ինչպես nginx-ի դեպքում, ոչ ոք չպետք է խնդիրներ ունենա apache-ի տեղադրման հետ: Եթե ​​չգիտեք, թե ինչպես տեղադրել այս վեբ սերվերը, պարզապես օգտագործեք պաշտոնական փաստաթղթերը:

Եվ մենք սկսում ենք կարգավորել մեր HTTPS-ը և երկգործոն նույնականացումը.

  1. Նախ անհրաժեշտ է ակտիվացնել mod_ssl.
    $ a2enmod ssl
  2. Այնուհետև միացրեք կայքի լռելյայն HTTPS կարգավորումները.
    $ a2ensite default-ssl
  3. Այժմ մենք խմբագրում ենք կազմաձևման ֆայլը՝ /etc/apache2/sites-enabled/default-ssl.conf:
        SSLEngine on
        SSLProtocol all -SSLv2
    
        SSLCertificateFile	/etc/apache2/sites-enabled/Server.crt
        SSLCertificateKeyFile /etc/apache2/sites-enabled/ServerKey.pem
    
        SSLCACertificateFile /etc/apache2/sites-enabled/CA.crt
    
        SSLVerifyClient require
        SSLVerifyDepth  10

    Ինչպես տեսնում եք, պարամետրերի անվանումները գործնականում համընկնում են nginx-ի պարամետրերի անունների հետ, ուստի ես դրանք չեմ բացատրի: Կրկին, բոլորը, ովքեր հետաքրքրված են մանրամասներով, ողջունում են փաստաթղթերին:
    Այժմ մենք վերագործարկում ենք մեր սերվերը.

    $ service apache2 reload
    $ service apache2 restart

  4. Ինչպես տեսնում եք, ցանկացած վեբ սերվերի վրա, լինի դա Windows-ի, թե Linux-ի վրա, երկու գործոն նույնականացման կարգավորումը տևում է առավելագույնը մեկ ժամ: Իսկ բրաուզերների տեղադրումը տևում է մոտ 5 րոպե: Շատերը կարծում են, որ երկգործոն նույնականացման հետ կարգավորելը և աշխատելը դժվար է և անհասկանալի: Հուսով եմ, որ մեր հոդվածը գոնե մի փոքր կհերքի այս առասպելը:

Հարցմանը կարող են մասնակցել միայն գրանցված օգտվողները։ Մուտք գործել, խնդրում եմ:

ԳՕՍՏ 34.10-2012-ի համաձայն վկայագրերով TLS կարգավորելու հրահանգներ ձեզ անհրաժեշտ են.

  • Այո, TLS-GOST-ը շատ անհրաժեշտ է

  • Ոչ, ԳՕՍՏ ալգորիթմներով թյունինգը հետաքրքիր չէ

Քվեարկել է 44 օգտատեր։ 9 օգտատեր ձեռնպահ է մնացել։

Source: www.habr.com

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