USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün

USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün
В əvvəlki məqalələrimizdən biri şirkətlərin korporativ portallarında iki faktorlu autentifikasiyanın əhəmiyyətindən danışdıq. Keçən dəfə biz IIS veb serverində təhlükəsiz autentifikasiyanın necə qurulacağını nümayiş etdirdik.

Şərhlərdə bizdən Linux üçün ən çox yayılmış veb-serverlər - nginx və Apache üçün təlimatlar yazmağı tələb etdilər.

Soruşdunuz - yazdıq.

Başlamaq üçün nə lazımdır?

  • İstənilən müasir Linux paylanması. MX Linux 18.2_x64-də sınaq quraşdırma etdim. Bu, əlbəttə ki, bir server paylanması deyil, lakin Debian üçün hər hansı fərqlərin olması ehtimalı azdır. Digər paylanmalar üçün konfiqurasiya kitabxanalarına gedən yollar bir qədər fərqli ola bilər.
  • Token. Modeldən istifadə etməyə davam edirik Rutoken EDS PKI, bu, korporativ istifadə üçün sürət xüsusiyyətləri baxımından idealdır.
  • Linux-da token ilə işləmək üçün aşağıdakı paketləri quraşdırmalısınız:
    libccid libpcsclite1 pcscd pcsc-tools opensc

USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün

Sertifikatların verilməsi

Əvvəlki məqalələrdə biz server və müştəri sertifikatlarının Microsoft CA-dan istifadə etməklə veriləcəyinə əsaslanmışdıq. Lakin biz hər şeyi Linux-da qurduğumuz üçün sizə bu sertifikatları vermək üçün alternativ yol haqqında da danışacağıq - Linux-dan çıxmadan.
XCA-dan CA kimi istifadə edəcəyik (https://hohnstaedt.de/xca/), istənilən müasir Linux paylamasında mövcuddur. XCA-da yerinə yetirəcəyimiz bütün hərəkətlər OpenSSL və pkcs11-alət yardım proqramlarından istifadə edərək əmr satırı rejimində edilə bilər, lakin daha çox sadəlik və aydınlıq üçün onları bu məqalədə təqdim etməyəcəyik.

Başlarken

  1. Yüklemek:
    $ apt-get install xca
  2. Və qaçırıq:
    $ xca
  3. CA - /root/CA.xdb üçün verilənlər bazamızı yaradırıq
    Biz Sertifikat Təşkilatı məlumat bazasını yalnız administratorun girişi olan qovluqda saxlamağı tövsiyə edirik. Bu, bütün digər sertifikatları imzalamaq üçün istifadə edilən kök sertifikatların şəxsi açarlarını qorumaq üçün vacibdir.

Açarlar və kök CA sertifikatı yaradın

Açıq açar infrastrukturu (PKI) iyerarxik sistemə əsaslanır. Bu sistemdə əsas şey kök sertifikatlaşdırma orqanı və ya kök CA-dır. Əvvəlcə onun sertifikatı yaradılmalıdır.

  1. CA üçün RSA-2048 şəxsi açarı yaradırıq. Bunu etmək üçün, nişanda Şəxsi Açarlar itələmək Yeni açar və uyğun növü seçin.
  2. Yeni açar cütü üçün ad təyin edin. Mən onu CA Key adlandırdım.
  3. Yaradılmış açar cütündən istifadə edərək CA sertifikatının özünü veririk. Bunu etmək üçün nişana keçin Sertifikatlar və vurun Yeni Sertifikat.
  4. Seçdiyinizə əmin olun SHA-256, çünki SHA-1-dən istifadə artıq təhlükəsiz sayıla bilməz.
  5. Şablon kimi seçdiyinizə əmin olun [standart]CA. Tıklamağı unutmayın Hamısına müraciət edin, əks halda şablon tətbiq edilməyəcək.
  6. Nişanda mövzu açar cütümüzü seçin. Orada sertifikatın bütün əsas sahələrini doldura bilərsiniz.

USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün

Açarların və https server sertifikatının yaradılması

  1. Eyni şəkildə, biz server üçün RSA-2048 şəxsi açarı yaradırıq, mən onu Server Açarı adlandırdım.
  2. Sertifikat yaratarkən biz seçirik ki, server sertifikatı CA sertifikatı ilə imzalanmalıdır.
  3. Seçməyi unutmayın SHA-256.
  4. Şablon kimi seçirik [standart] HTTPS_server. Basın Hamısına müraciət edin.
  5. Sonra tabda mövzu açarımızı seçin və tələb olunan sahələri doldurun.

USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün

İstifadəçi üçün açarlar və sertifikat yaradın

  1. İstifadəçinin şəxsi açarı tokenimizdə saxlanacaq. Bununla işləmək üçün veb saytımızdan PKCS#11 kitabxanasını quraşdırmalısınız. Məşhur paylamalar üçün biz burada yerləşən hazır paketləri paylayırıq - https://www.rutoken.ru/support/download/pkcs/. SDK-dan endirilə bilən arm64, armv7el, armv7hf, e2k, mipso32el üçün montajlarımız da var - https://www.rutoken.ru/developers/sdk/. Linux üçün məclislərə əlavə olaraq, macOS, freebsd və android üçün də montajlar var.
  2. XCA-ya yeni PKCS#11 Provayderinin əlavə edilməsi. Bunu etmək üçün menyuya keçin Nizamlamalar nişana PKCS#11 Provayderi.
  3. basırıq əlavə etmək və PKCS#11 kitabxanasına gedən yolu seçin. Mənim vəziyyətimdə bu usrliblibrtpkcs11ecp.so-dur.
  4. Formatlaşdırılmış Rutoken EDS PKI tokeninə ehtiyacımız olacaq. rtAdmin yardım proqramını yükləyin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Həyata keçiririk
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Açar növü olaraq Rutoken EDS PKI üçün RSA-2048 açarını seçirik. Mən bu açarı Müştəri Açarı adlandırdım.

    USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün

  7. PİN kodu daxil edin. Və açar cütünün aparat generasiyasının tamamlanmasını gözləyirik

    USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün

  8. Biz istifadəçi üçün server sertifikatına bənzətməklə sertifikat yaradırıq. Bu dəfə bir şablon seçirik [standart] HTTPS_client və tıklamağı unutmayın Hamısına müraciət edin.
  9. Nişanda mövzu istifadəçi haqqında məlumat daxil edin. Sertifikatı token üçün saxlamaq sorğusuna müsbət cavab veririk.

Nəticədə, nişanda Sertifikat XCA-da belə bir şey almalısınız.

USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün
Bu minimum açarlar və sertifikatlar dəsti serverlərin özlərini qurmağa başlamaq üçün kifayətdir.

Konfiqurasiya etmək üçün CA sertifikatını, server sertifikatını və server şəxsi açarını ixrac etməliyik.

Bunu etmək üçün XCA-da müvafiq nişanda istədiyiniz girişi seçin və üzərinə klikləyin Ixrac.

Nginx

Nginx serverini necə quraşdırmağı və işə salmağı yazmayacağam - İnternetdə bu mövzuda kifayət qədər məqalə var, rəsmi sənədləri qeyd etməmək. Gəlin birbaşa işarədən istifadə edərək HTTPS və iki faktorlu autentifikasiyanın qurulmasına keçək.

Nginx.conf-da server bölməsinə aşağıdakı sətirləri əlavə edin:

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-də ssl konfiqurasiyası ilə bağlı bütün parametrlərin ətraflı təsvirini burada tapa bilərsiniz - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Özümə verdiyim sualları qısaca təsvir edəcəyəm:

  • ssl_verify_client - sertifikat üçün etibar zəncirinin yoxlanılmalı olduğunu göstərir.
  • ssl_verify_depth - Zəncirdə etibarlı kök sertifikatı üçün axtarış dərinliyini müəyyən edir. Müştəri sertifikatımız dərhal kök sertifikatında imzalandığı üçün dərinlik 1-ə təyin edilir. Əgər istifadəçi sertifikatı aralıq CA-da imzalanıbsa, bu parametrdə 2 göstərilməlidir və s.
  • ssl_client_certificate - istifadəçi sertifikatına etibar yoxlanarkən istifadə olunan etibarlı kök sertifikatına gedən yolu müəyyən edir.
  • ssl_certificate/ssl_certificate_key - server sertifikatına/özəl açarına gedən yolu göstərin.

Konfiqurasiyada heç bir yazı səhvinin olmadığını və bütün faylların düzgün yerdə olduğunu və s. yoxlamaq üçün nginx -t-ni işə salmağı unutmayın.

Və hamısı budur! Gördüyünüz kimi, quraşdırma çox sadədir.

Onun Firefox-da işləməsi yoxlanılır

Hər şeyi tamamilə Linux-da etdiyimiz üçün istifadəçilərimizin də Linux-da işlədiyini güman edəcəyik (əgər onlar Windows-a sahibdirlərsə, onda əvvəlki məqalədə brauzerlərin qurulması üçün təlimatlara baxın.

  1. Firefox-u işə salaq.
  2. Əvvəlcə işarəsiz daxil olmağa çalışaq. Bu şəkli alırıq:

    USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün

  3. Gedin haqqında: üstünlüklər # məxfilik, və biz gedirik Təhlükəsizlik Cihazları...
  4. basırıq Yükyeni PKCS#11 Cihaz Sürücüsü əlavə etmək və librtpkcs11ecp.so-ya gedən yolu müəyyən etmək üçün.
  5. Sertifikatın göründüyünü yoxlamaq üçün bura daxil ola bilərsiniz Sertifikat meneceri. Sizdən PİN kodunuzu daxil etməyiniz xahiş olunacaq. Düzgün daxil etdikdən sonra tabda nə olduğunu yoxlaya bilərsiniz Sertifikatlarınız tokendən sertifikatımız çıxdı.
  6. İndi işarə ilə gedək. Firefox server üçün seçiləcək sertifikatı seçməyi təklif edir. Sertifikatımızı seçin.

    USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün

  7. PROFIT!

    USB tokenindən istifadə edərək saytda iki faktorlu autentifikasiya. İndi də Linux üçün

Quraşdırma bir dəfə edilir və sertifikat sorğusu pəncərəsində gördüyünüz kimi seçimimizi saxlaya bilərik. Bundan sonra, biz portala hər dəfə daxil olduqda, yalnız bir işarə daxil etməli və formatlaşdırma zamanı göstərilən istifadəçi PİN kodunu daxil etməli olacağıq. Belə autentifikasiyadan sonra server hansı istifadəçinin daxil olduğunu artıq bilir və siz artıq yoxlama üçün heç bir əlavə pəncərə yarada bilməzsiniz, ancaq dərhal istifadəçini şəxsi hesabına daxil etməyə icazə verin.

Apache

Nginx-də olduğu kimi, apache-nin quraşdırılmasında heç kimin problemi olmamalıdır. Bu veb serveri necə quraşdıracağınızı bilmirsinizsə, sadəcə olaraq rəsmi sənədlərdən istifadə edin.

Və HTTPS və iki faktorlu autentifikasiyamızı qurmağa başlayırıq:

  1. Əvvəlcə mod_ssl-i aktivləşdirməlisiniz:
    $ a2enmod ssl
  2. Və sonra saytın standart HTTPS parametrlərini aktivləşdirin:
    $ a2ensite default-ssl
  3. İndi konfiqurasiya faylını redaktə edirik: /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

    Gördüyünüz kimi, parametrlərin adları praktiki olaraq nginx-dəki parametrlərin adları ilə üst-üstə düşür, ona görə də onları izah etməyəcəm. Yenə də detallarla maraqlanan hər kəs sənədlərə xoş gəlmisiniz.
    İndi serverimizi yenidən işə salırıq:

    $ service apache2 reload
    $ service apache2 restart

  4. Gördüyünüz kimi, istər Windows, istərsə də Linux-da istənilən veb serverdə iki faktorlu autentifikasiyanın qurulması maksimum bir saat çəkir. Brauzerlərin qurulması isə təxminən 5 dəqiqə çəkir. Bir çox insanlar iki faktorlu autentifikasiyanın qurulmasının və işləməyin çətin və anlaşılmaz olduğunu düşünür. Ümid edirəm ki, məqaləmiz bu mifi bir az da olsa çürüdür.

Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər. Daxil olunxahiş edirəm.

GOST 34.10-2012-yə uyğun olaraq sertifikatlarla TLS qurmaq üçün təlimatlara ehtiyacınız varmı:

  • Bəli, TLS-GOST çox lazımdır

  • Xeyr, GOST alqoritmləri ilə tuning maraqlı deyil

44 istifadəçi səs verib. 9 istifadəçi bitərəf qalıb.

Mənbə: www.habr.com

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