Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux

Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux
В vienas iš mūsų ankstesnių straipsnių kalbėjome apie dviejų veiksnių autentifikavimo svarbą įmonių korporatyviniuose portaluose. Praėjusį kartą demonstravome, kaip nustatyti saugų autentifikavimą IIS žiniatinklio serveryje.

Komentaruose mūsų buvo paprašyta parašyti instrukcijas labiausiai paplitusiems Linux serveriams – nginx ir Apache.

Jūs paklausėte – rašėme.

Ko reikia norint pradėti?

  • Bet koks modernus Linux platinimas. Atlikau bandomąją sąranką MX Linux 18.2_x64. Žinoma, tai nėra serverio paskirstymas, tačiau vargu ar Debian skirtumų. Kitų platinimų keliai į konfigūravimo bibliotekas gali šiek tiek skirtis.
  • Žetonas. Mes ir toliau naudojame modelį Rutoken EDS PKI, kuris pagal greičio charakteristikas idealiai tinka verslo reikmėms.
  • Norėdami dirbti su prieigos raktu Linux sistemoje, turite įdiegti šiuos paketus:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux

Sertifikatų išdavimas

Ankstesniuose straipsniuose rėmėmės tuo, kad serverio ir kliento sertifikatai bus išduoti naudojant Microsoft CA. Tačiau kadangi viską nustatome sistemoje „Linux“, taip pat papasakosime apie alternatyvų šių sertifikatų išdavimo būdą – nepaliekant „Linux“.
XCA naudosime kaip CA (https://hohnstaedt.de/xca/), kuris yra prieinamas bet kuriame šiuolaikiniame „Linux“ paskirstyme. Visus veiksmus, kuriuos atliksime XCA, galima atlikti komandinės eilutės režimu, naudojant OpenSSL ir pkcs11-tool priemones, tačiau dėl didesnio paprastumo ir aiškumo šiame straipsnyje jų nepateiksime.

Darbo pradžia

  1. Diegti:
    $ apt-get install xca
  2. Ir mes bėgame:
    $ xca
  3. Sukuriame CA duomenų bazę - /root/CA.xdb
    Sertifikatų tarnybos duomenų bazę rekomenduojame saugoti aplanke, kur prieigą turi tik administratorius. Tai svarbu norint apsaugoti privačius šakninių sertifikatų raktus, kurie naudojami visiems kitiems sertifikatams pasirašyti.

Sukurkite raktus ir šakninį CA sertifikatą

Viešojo rakto infrastruktūra (PKI) yra pagrįsta hierarchine sistema. Pagrindinis dalykas šioje sistemoje yra šakninė sertifikavimo institucija arba šakninė CA. Pirmiausia reikia sukurti jo sertifikatą.

  1. Sukuriame CA privatųjį raktą RSA-2048. Norėdami tai padaryti, skirtuke Privatūs raktai stumti Naujas raktas ir pasirinkite tinkamą tipą.
  2. Nustatykite naujos raktų poros pavadinimą. Aš jį pavadinau CA raktu.
  3. Išduodame patį CA sertifikatą, naudodami sukurtą raktų porą. Norėdami tai padaryti, eikite į skirtuką sertifikatai ir paspauskite Naujas sertifikatas.
  4. Būtinai rinkitės SHA-256, nes SHA-1 naudojimas nebegali būti laikomas saugiu.
  5. Būtinai pasirinkite kaip šabloną [numatytasis] CA. Nepamirškite paspausti Taikyti viską, kitu atveju šablonas netaikomas.
  6. Skirtuke Tema pasirinkite mūsų raktų porą. Ten galite užpildyti visus pagrindinius sertifikato laukus.

Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux

Raktų ir https serverio sertifikato kūrimas

  1. Panašiai sukuriame serveriui RSA-2048 privatų raktą, aš jį pavadinau serverio raktu.
  2. Kurdami sertifikatą pasirenkame, kad serverio sertifikatas turi būti pasirašytas CA sertifikatu.
  3. Nepamirškite pasirinkti SHA-256.
  4. Mes pasirenkame kaip šabloną [numatytasis] HTTPS_serveris. Spustelėkite Taikyti viską.
  5. Tada skirtuke Tema pasirinkite mūsų raktą ir užpildykite reikiamus laukus.

Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux

Sukurkite vartotojui raktus ir sertifikatą

  1. Vartotojo privatus raktas bus saugomas mūsų prieigos rakte. Norėdami su ja dirbti, turite įdiegti PKCS#11 biblioteką iš mūsų svetainės. Populiariems platinimams platiname paruoštus paketus, kurie yra čia - https://www.rutoken.ru/support/download/pkcs/. Taip pat turime arm64, armv7el, armv7hf, e2k, mipso32el rinkinius, kuriuos galima atsisiųsti iš mūsų SDK - https://www.rutoken.ru/developers/sdk/. Be „Linux“ skirtų rinkinių, taip pat yra „macOS“, „freebsd“ ir „Android“ rinkinių.
  2. Naujo PKCS#11 teikėjo pridėjimas prie XCA. Norėdami tai padaryti, eikite į meniu Nustatymai į skirtuką PKCS#11 teikėjas.
  3. Paspaudžiame papildyti ir pasirinkite kelią į PKCS#11 biblioteką. Mano atveju tai yra usrliblibrtpkcs11ecp.so.
  4. Mums reikės suformatuoto Rutoken EDS PKI prieigos rakto. Atsisiųskite „rtAdmin“ įrankį - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Mes vykdome
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Kaip rakto tipą pasirenkame Rutoken EDS PKI raktą RSA-2048. Šį raktą pavadinau kliento raktu.

    Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux

  7. Įveskite PIN kodą. Ir laukiame, kol bus baigtas raktų poros aparatinės įrangos generavimas

    Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux

  8. Mes sukuriame sertifikatą vartotojui pagal analogiją su serverio sertifikatu. Šį kartą pasirenkame šabloną [numatytasis] HTTPS_client ir nepamirškite paspausti Taikyti viską.
  9. Skirtuke Tema įveskite informaciją apie vartotoją. Į prašymą išsaugoti žetono sertifikatą atsakome teigiamai.

Dėl to skirtuke Sertifikatai XCA turėtumėte gauti kažką panašaus.

Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux
Šio minimalaus raktų ir sertifikatų rinkinio pakanka, kad būtų galima pradėti konfigūruoti pačius serverius.

Norėdami sukonfigūruoti, turime eksportuoti CA sertifikatą, serverio sertifikatą ir serverio privatųjį raktą.

Norėdami tai padaryti, atitinkamame XCA skirtuke pasirinkite norimą įrašą ir spustelėkite Eksportuoti.

nginx

Nerašysiu, kaip įdiegti ir paleisti nginx serverį - internete yra pakankamai straipsnių šia tema, jau nekalbant apie oficialią dokumentaciją. Pereikime tiesiai prie HTTPS nustatymo ir dviejų veiksnių autentifikavimo naudojant prieigos raktą.

Į nginx.conf serverio skyrių pridėkite šias eilutes:

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;
}

Išsamų visų parametrų, susijusių su ssl konfigūravimu nginx, aprašymą galite rasti čia - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Aš tik trumpai apibūdinsiu tuos, kurių paklausiau savęs:

  • ssl_verify_client – ​​nurodo, kad reikia patikrinti sertifikato patikimumo grandinę.
  • ssl_verify_depth – apibrėžia patikimo šakninio sertifikato grandinėje paieškos gylį. Kadangi mūsų kliento sertifikatas iš karto pasirašomas ant šakninio sertifikato, gylis nustatomas į 1. Jei vartotojo sertifikatas pasirašytas tarpinėje CA, tai šiame parametre reikia nurodyti 2 ir pan.
  • ssl_client_certificate – nurodo kelią į patikimą šakninį sertifikatą, kuris naudojamas tikrinant pasitikėjimą vartotojo sertifikatu.
  • ssl_certificate/ssl_certificate_key – nurodykite kelią į serverio sertifikatą/privatų raktą.

Nepamirškite paleisti nginx -t, kad patikrintumėte, ar konfigūracijoje nėra rašybos klaidų, ar visi failai yra tinkamoje vietoje ir pan.

Ir viskas! Kaip matote, sąranka yra labai paprasta.

Tikrinama, ar jis veikia Firefox

Kadangi viską darome visiškai „Linux“, manysime, kad mūsų vartotojai taip pat dirba „Linux“ (jei jie turi „Windows“, tada žr. ankstesniame straipsnyje pateiktus nurodymus, kaip nustatyti naršykles.

  1. Paleiskime Firefox.
  2. Pirmiausia pabandykime prisijungti be žetono. Gauname šį paveikslėlį:

    Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux

  3. Mes einame toliau apie: nuostatos # privatumas, ir einame į Apsaugos įrenginiai…
  4. Paspaudžiame Įkeltipridėti naują PKCS#11 įrenginio tvarkyklę ir nurodyti kelią į mūsų librtpkcs11ecp.so.
  5. Norėdami patikrinti, ar sertifikatas matomas, galite eiti į Sertifikatų tvarkyklė. Būsite paraginti įvesti PIN kodą. Teisingai įvedę galite patikrinti, kas yra skirtuke Jūsų sertifikatai pasirodė mūsų pažymėjimas iš žetono.
  6. Dabar eikime su žetonu. „Firefox“ paragins pasirinkti sertifikatą, kuris bus pasirinktas serveriui. Pasirinkite mūsų sertifikatą.

    Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux

  7. Pelnas!

    Dviejų veiksnių autentifikavimas svetainėje naudojant USB prieigos raktą. Dabar ir Linux

Sąranka atliekama vieną kartą ir, kaip matote sertifikato užklausos lange, galime išsaugoti pasirinkimą. Po to kiekvieną kartą prisijungus prie portalo mums tereikės įterpti žetoną ir įvesti vartotojo PIN kodą, kuris buvo nurodytas formatuojant. Po tokio autentifikavimo serveris jau žino, kuris vartotojas yra prisijungęs ir nebegalite kurti jokių papildomų langų patvirtinimui, o iškart įleisti vartotoją į savo asmeninę paskyrą.

apache

Kaip ir nginx, niekam neturėtų kilti problemų diegiant apache. Jei nežinote, kaip įdiegti šį žiniatinklio serverį, tiesiog naudokite oficialią dokumentaciją.

Pradedame nustatyti HTTPS ir dviejų veiksnių autentifikavimą:

  1. Pirmiausia turite suaktyvinti mod_ssl:
    $ a2enmod ssl
  2. Tada įgalinkite numatytuosius svetainės HTTPS nustatymus:
    $ a2ensite default-ssl
  3. Dabar mes redaguojame konfigūracijos failą: /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

    Kaip matote, parametrų pavadinimai praktiškai sutampa su parametrų pavadinimais nginx, todėl jų neaiškinsiu. Vėlgi, visi, kurie domisi detalėmis, kviečiami susipažinti su dokumentacija.
    Dabar iš naujo paleidžiame serverį:

    $ service apache2 reload
    $ service apache2 restart

  4. Kaip matote, dviejų veiksnių autentifikavimo nustatymas bet kuriame žiniatinklio serveryje, nesvarbu, ar naudojate „Windows“, ar „Linux“, užtrunka daugiausia vieną valandą. O naršyklių nustatymas užtrunka apie 5 minutes. Daugelis žmonių mano, kad dviejų veiksnių autentifikavimo nustatymas ir darbas su juo yra sudėtingas ir neaiškus. Tikiuosi, kad mūsų straipsnis bent šiek tiek paneigia šį mitą.

Apklausoje gali dalyvauti tik registruoti vartotojai. Prisijungti, Prašau.

Ar jums reikia instrukcijų, kaip nustatyti TLS su sertifikatais pagal GOST 34.10-2012:

  • Taip, TLS-GOST yra labai reikalingas

  • Ne, derinimas su GOST algoritmais nėra įdomus

Balsavo 44 vartotojai. 9 vartotojų susilaikė.

Šaltinis: www.habr.com

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