Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux

Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux
В yek ji gotarên me yên berê me li ser girîngiya rastkirina du-faktorî li ser portalên pargîdanî yên pargîdaniyan axivî. Cara paşîn me destnîşan kir ka meriv çawa di servera webê ya IIS de pejirandina ewledar saz dike.

Di şîroveyan de, ji me hate xwestin ku em rêwerzên ji bo serverên webê yên herî gelemperî yên Linux - nginx û Apache binivîsin.

We pirsî - me nivîsand.

Hûn çi hewce ne ku hûn dest pê bikin?

  • Her belavkirina Linux ya nûjen. Min li MX Linux 18.2_x64 sazkirinek ceribandinê kir. Ev bê guman ne belavkirinek serverê ye, lê ne mimkûn e ku ji bo Debian cûdahî hebin. Ji bo belavkirinên din, rêyên pirtûkxaneyên mîhengê dibe ku hinekî cûda bibin.
  • Token. Em berdewam dikin ku modela bikar bînin Rutoken EDS PKI, ku di warê taybetmendiyên bilez de ji bo karanîna pargîdanî îdeal e.
  • Ji bo ku hûn bi tokenek li Linux-ê bixebitin, hûn hewce ne ku pakêtên jêrîn saz bikin:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux

Belavkirina sertîfîkayan

Di gotarên berê de, me pişta xwe da vê yekê ku sertîfîkayên server û xerîdar dê bi karanîna Microsoft CA-ê werin derxistin. Lê ji ber ku em her tiştî li Linux-ê saz dikin, em ê di heman demê de ji we re rêyek alternatîf a weşandina van sertîfîkayan jî - bêyî ku ji Linux-ê derbikevin- vebêjin.
Em ê XCA wekî CA bikar bînin (https://hohnstaedt.de/xca/), ku li ser her belavkirina Linux ya nûjen heye. Hemî kiryarên ku em ê di XCA de pêk bînin dikarin di moda rêzika fermanê de bi karanîna amûrên OpenSSL û pkcs11-ê bêne kirin, lê ji bo sadebûn û zelaliyek mezintir, em ê wan di vê gotarê de pêşkêş nekin.

Destpêkirin

  1. Lêkirin:
    $ apt-get install xca
  2. Û em direvin:
    $ xca
  3. Em databasa xwe ji bo CA - /root/CA.xdb diafirînin
    Em pêşniyar dikin ku databasa Desthilatdariya Sertîfîkayê di peldankek ku tenê rêveber tê de heye were hilanîn. Ev girîng e ji bo parastina mifteyên taybet ên sertîfîkayên root, ku ji bo îmzekirina hemî sertîfîkayên din têne bikar anîn.

Bişkojk û sertîfîkaya CA ya root biafirînin

Binesaziya mifteya gelemperî (PKI) li ser pergala hiyerarşîk ava dibe. Di vê pergalê de tiştê sereke desthilatdariya pejirandina root an CA-ya root e. Divê pêşî sertîfîkaya wê were afirandin.

  1. Em ji bo CA mifteyek taybet a RSA-2048 diafirînin. Ji bo vê yekê, li ser tabê Keysên Taybet lêqellibînî Key New û celebê guncan hilbijêrin.
  2. Ji bo cotê mifteya nû navek saz bikin. Min jê re got CA Key.
  3. Em sertîfîkaya CA bixwe, bi karanîna cotê mifteyê çêkirî, derdixin. Ji bo vê yekê, biçin tabê sertîfîkayên û bikirtînin Sertîfîkaya Nû.
  4. Bê guman hilbijêrin SHA-256, ji ber ku karanîna SHA-1 nema dikare ewle were hesibandin.
  5. Bawer bikin ku wekî şablonê hilbijêrin [default] CA. Ji bîr nekin ku li ser bitikînin Hemî bicîh bikin, wekî din şablon nayê sepandin.
  6. Di tabê de Mijar cotê key me hilbijêrin. Li wir hûn dikarin hemî qadên sereke yên sertîfîkayê dagirin.

Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux

Afirandina keys û sertîfîkaya servera https

  1. Bi vî rengî, em ji bo serverê mifteyek taybet a RSA-2048 diafirînin, min jê re got Key Server.
  2. Dema ku sertîfîkayekê diafirînin, em hildibijêrin ku sertîfîkaya serverê divê bi sertîfîkayek CA re were îmze kirin.
  3. Ji bîr nekin ku hilbijêrin SHA-256.
  4. Em wekî şablonê hilbijêrin [default] HTTPS_server. Kılik lı ser Hemî bicîh bikin.
  5. Piştre li ser tabê Mijar mifteya me hilbijêrin û qadên pêwîst dagirin.

Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux

Ji bo bikarhêner mift û sertîfîkayê biafirînin

  1. Mifteya taybet a bikarhêner dê li ser tokena me were hilanîn. Ji bo ku hûn pê re bixebitin, hûn hewce ne ku pirtûkxaneya PKCS#11 ji malpera me saz bikin. Ji bo belavkirinên populer, em pakêtên amadekirî yên ku li vir in belav dikin - https://www.rutoken.ru/support/download/pkcs/. Ji bo arm64, armv7el, armv7hf, e2k, mipso32el jî meclîsên me hene, ku dikarin ji SDK-ya me werin dakêşandin - https://www.rutoken.ru/developers/sdk/. Ji bilî meclîsên ji bo Linux, meclîsên ji bo macOS, freebsd û android jî hene.
  2. Zêdekirina Pêşkêşkarek nû ya PKCS#11 li XCA. Ji bo vê yekê, biçin menuê Vebijêrkên ber tabê PKCS # 11 Pêşkêşkar.
  3. Em çap dikin Lêzêdekirin û riya pirtûkxaneya PKCS # 11 hilbijêrin. Di doza min de ew usrliblibrtpkcs11ecp.so ye.
  4. Em ê hewceyê tokenek Rutoken EDS PKI-ya formatkirî hewce bikin. Alîkariya rtAdmin dakêşin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Em pêk tînin
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Em mifteya RSA-2048 ji bo Rutoken EDS PKI wekî celebê mifteyê hilbijêrin. Min navê vê mifteyê kir Client Key.

    Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux

  7. PIN-kodê binivîse. Û em li benda qedandina hilberîna hardware ya cotê mifteyê ne

    Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux

  8. Em ji bo bikarhêner bi sertîfîkaya serverê re bi analogî sertîfîkayek diafirînin. Vê carê em şablonek hilbijêrin [default] HTTPS_client û ji bîr nekin ku bikirtînin Hemî bicîh bikin.
  9. Di tabê de Mijar agahdariya li ser bikarhênerê binivîse. Em bi erênî bersivê didin daxwaza tomarkirina sertîfîkayê ji bo tokenê.

Di encamê de, li ser tabê Taybetmendî di XCA de divê hûn tiştek weha bistînin.

Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux
Ev mînîmal komek keys û sertîfîkayan bes e ku meriv bixwe dest bi sazkirina serveran bike.

Ji bo veavakirinê, divê em sertîfîkaya CA, sertîfîkaya serverê û mifteya taybet a serverê derxînin.

Ji bo vê yekê, navnîşa xwestinê li ser tabloya têkildar a XCA-yê hilbijêrin û bikirtînin Eksport.

nginx

Ez ê nenivîsim ka meriv çawa serverek nginx saz dike û dimeşîne - li ser Înternetê li ser vê mijarê bes gotar hene, ne ku behsa belgeyên fermî bikin. Werin em rasterast dest bi sazkirina HTTPS û pejirandina du-faktorî bi karanîna tokenek bikin.

Di nginx.conf de rêzikên jêrîn li beşa serverê zêde bikin:

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

Danasînek hûrgulî ya hemî pîvanên ku bi veavakirina ssl-ê li nginx-ê ve girêdayî ne li vir têne dîtin - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Ez ê bi kurtasî behsa wan kesan bikim ku min ji xwe pirsî:

  • ssl_verify_client - diyar dike ku zincîra pêbaweriyê ji bo sertîfîkayê pêdivî ye ku were verast kirin.
  • ssl_verify_depth - Ji bo sertîfîkaya root pêbawer a di zincîrê de kûrahiya lêgerînê diyar dike. Ji ber ku sertîfîkaya muwekîlê me tavilê li ser sertîfîkaya root tê îmza kirin, kûrahî li ser 1 tête danîn. Heke sertîfîkaya bikarhêner li ser CA-ya navîn hatî îmzekirin, wê hingê divê 2 di vê parametreyê de were destnîşan kirin, û hwd.
  • ssl_client_certificate - riya sertîfîkaya root ya pêbawer diyar dike, ku dema ku pêbaweriya sertîfîkaya bikarhêner tê kontrol kirin tê bikar anîn.
  • ssl_certificate/ssl_certificate_key - rêya sertîfîkaya serverê/mifteya taybet nîşan bide.

Ji bîr nekin ku hûn nginx -t bimeşînin da ku kontrol bikin ku di vesazkirinê de xeletiyên tîpan tune ne, û hemî pel li cîhê rast in, û hwd.

Û ev hemû! Wekî ku hûn dikarin bibînin, sazkirinê pir hêsan e.

Kontrolkirina ku ew di Firefox de dixebite

Ji ber ku em her tiştî bi tevahî li Linux-ê dikin, em ê texmîn bikin ku bikarhênerên me di Linux de jî dixebitin (heke Windows-ê wan hebe, wê hingê talîmatên ji bo sazkirina gerokan di gotara berê de bibînin.

  1. Werin em Firefox-ê bidin destpêkirin.
  2. Werin em pêşî hewl bidin ku bêyî nîşanek têkevinê. Em vê wêneyê digirin:

    Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux

  3. Biçe li ser: preferences # nepenîtiyê, û em diçin Amûrên Ewlekariyê…
  4. Em çap dikin Gazînameji bo ku ajokarek cîhaza PKCS#11 ya nû lê zêde bike û riya librtpkcs11ecp.so me diyar bike.
  5. Ji bo kontrol bikin ku sertîfîka xuya ye, hûn dikarin biçin Gerînendeyê Belgeyê. Ji we tê xwestin ku hûn PIN-a xwe binivîsin. Piştî têketina rast, hûn dikarin kontrol bikin ka li ser tabê çi ye Sertîfîkayên we sertîfîkaya me ji token xuya bû.
  6. Niha em bi tokenê re biçin. Firefox ji we daxwaz dike ku hûn sertîfîkayek ku dê ji bo serverê were hilbijartin hilbijêrin. Sertîfîkaya me hilbijêrin.

    Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux

  7. PROFIT!

    Nasnameya du-faktorî li ser malperê bi karanîna tokenek USB-ê. Niha jî ji bo Linux

Sazkirin carekê tê kirin, û wekî ku hûn di pencereya daxwaza sertîfîkayê de dibînin, em dikarin hilbijartina xwe hilînin. Piştî vê yekê, her gava ku em têkevin portalê, em ê tenê hewce ne ku nîşanek têxin û koda PIN-a bikarhêner a ku di dema formatkirinê de hatî destnîşan kirin têkevin. Piştî verastkirinek wusa, server jixwe dizane ku kîjan bikarhêner têketî ye û hûn êdî nekarin ji bo verastkirinê pencereyên din biafirînin, lê tavilê bikarhêner bihêlin nav hesabê xweya kesane.

Apache

Mîna nginx-ê, divê tu kes di sazkirina apache-yê de pirsgirêk tune be. Heke hûn nizanin ka meriv çawa vê servera malperê saz bike, tenê belgeya fermî bikar bînin.

Û em dest bi sazkirina HTTPS û rastkirina du-faktorê xwe dikin:

  1. Pêşî hûn hewce ne ku mod_ssl çalak bikin:
    $ a2enmod ssl
  2. Û dûv re mîhengên xwerû yên HTTPS-ê yên malperê çalak bikin:
    $ a2ensite default-ssl
  3. Naha em pelê veavakirinê biguherînin: /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

    Wekî ku hûn dikarin bibînin, navên pîvanan bi pratîkî bi navên parametreyên di nginx re hevaheng in, ji ber vê yekê ez ê wan rave nekim. Dîsa, her kesê ku bi hûrguliyan re eleqedar e bi xêr hatî belgeyê.
    Naha em servera xwe ji nû ve dest pê dikin:

    $ service apache2 reload
    $ service apache2 restart

  4. Wekî ku hûn dikarin bibînin, sazkirina pejirandina du-faktorî li ser her serverek malperê, çi li ser Windows an Linux, herî zêde yek saetê digire. Û sazkirina gerokan bi qasî 5 hûrdem digire. Pir kes difikirin ku sazkirin û xebata bi rastkirina du-faktorî dijwar û ne diyar e. Ez hêvî dikim ku gotara me bi kêmanî piçek vê efsaneyê hilweşîne.

Tenê bikarhênerên qeydkirî dikarin beşdarî anketê bibin. Têketinji kerema xwe.

Ma hûn ji bo sazkirina TLS bi sertîfîkayan li gorî GOST 34.10-2012 rêwerzan hewce dikin:

  • Erê, TLS-GOST pir pêwîst e

  • Na, ahengkirina bi algorîtmayên GOST ne balkêş e

44 bikarhêneran deng dan. 9 bikarhêner jî betal bûn.

Source: www.habr.com

Add a comment