De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux

De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux
В youn nan atik anvan nou yo nou te pale sou enpòtans ki genyen de-faktè otantifikasyon sou portails antrepriz nan konpayi yo. Dènye fwa nou te demontre kijan pou mete kanpe otantifikasyon an sekirite nan sèvè entènèt IIS la.

Nan kòmantè yo, yo te mande nou ekri enstriksyon pou serveurs entènèt ki pi komen pou Linux - nginx ak Apache.

Ou te mande - nou te ekri.

Kisa ou bezwen pou kòmanse?

  • Nenpòt distribisyon Linux modèn. Mwen te fè yon konfigirasyon tès sou MX Linux 18.2_x64. Natirèlman, sa a se pa yon distribisyon sèvè, men pa gen anpil chans pou genyen okenn diferans pou Debian. Pou lòt distribisyon, chemen ki mennen nan bibliyotèk konfigirasyon yo ka varye yon ti kras.
  • Jeton. Nou kontinye sèvi ak modèl la Rutoken EDS PKI, ki se ideyal an tèm de karakteristik vitès pou itilizasyon antrepriz.
  • Pou travay ak yon siy nan Linux, ou bezwen enstale pakè sa yo:
    libccid libpcsclite1 pcscd pcsc-tools opensc

De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux

Bay sètifika

Nan atik anvan yo, nou te konte sou lefèt ke sèvè ak sètifika kliyan yo pral bay lè l sèvi avèk Microsoft CA. Men, depi n ap mete tout bagay nan Linux, nou pral di w tou sou yon fason altènatif pou bay sètifika sa yo - san yo pa kite Linux.
Nou pral itilize XCA kòm CA (https://hohnstaedt.de/xca/), ki disponib sou nenpòt distribisyon Linux modèn. Tout aksyon nou pral fè nan XCA ka fèt nan mòd liy kòmand lè l sèvi avèk OpenSSL ak pkcs11-zouti sèvis piblik, men pou pi senplisite ak klè, nou pa pral prezante yo nan atik sa a.

Pou kòmanse

  1. Enstale:
    $ apt-get install xca
  2. Epi nou kouri:
    $ xca
  3. Nou kreye baz done nou an pou CA - /root/CA.xdb
    Nou rekòmande pou estoke baz done Otorite Sètifika a nan yon katab kote sèlman administratè a gen aksè. Sa a enpòtan pou pwoteje kle prive sètifika rasin yo, ki itilize pou siyen tout lòt sètifika yo.

Kreye kle ak rasin sètifika CA

Yon enfrastrikti kle piblik (PKI) baze sou yon sistèm yerarchize. Bagay pwensipal lan nan sistèm sa a se otorite sètifikasyon rasin oswa rasin CA. Sètifika li yo dwe kreye an premye.

  1. Nou kreye yon kle prive RSA-2048 pou CA a. Pou fè sa, sou tab la Kle prive pouse Nouvo kle epi chwazi kalite ki apwopriye a.
  2. Mete yon non pou nouvo pè kle a. Mwen rele li CA Key.
  3. Nou bay sètifika CA a tèt li, lè l sèvi avèk pè kle kreye a. Pou fè sa, ale nan tab la sètifika epi klike sou Nouvo Sètifika.
  4. Asire w ke w chwazi SHA-256, paske itilize SHA-1 pa kapab konsidere kòm san danje ankò.
  5. Asire w ke w chwazi kòm yon modèl [default]CA. Pa bliye klike sou Aplike tout, sinon modèl la pa aplike.
  6. Nan tab la Sijè chwazi pè kle nou an. Gen ou ka ranpli tout jaden prensipal yo nan sètifika a.

De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux

Kreye kle ak yon sètifika sèvè https

  1. Nan yon fason menm jan an, nou kreye yon kle prive RSA-2048 pou sèvè a, mwen te rele li sèvè kle.
  2. Lè w ap kreye yon sètifika, nou chwazi sètifika sèvè a dwe siyen ak yon sètifika CA.
  3. Pa bliye chwazi SHA-256.
  4. Nou chwazi kòm yon modèl [default] HTTPS_server. Klike sou Aplike tout.
  5. Lè sa a, sou tab la Sijè chwazi kle nou an epi ranpli jaden yo mande yo.

De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux

Kreye kle ak sètifika pou itilizatè a

  1. Kle prive itilizatè a pral estoke sou siy nou an. Pou travay avèk li, ou bezwen enstale bibliyotèk PKCS#11 nan sit entènèt nou an. Pou distribisyon popilè, nou distribye pakè pare yo, ki sitiye isit la - https://www.rutoken.ru/support/download/pkcs/. Nou gen tou asanble pou arm64, armv7el, armv7hf, e2k, mipso32el, ki ka telechaje nan SDK nou an - https://www.rutoken.ru/developers/sdk/. Anplis asanble pou Linux, gen tou asanble pou macOS, freebsd ak android.
  2. Ajoute yon nouvo Founisè PKCS#11 nan XCA. Pou fè sa, ale nan meni an Opsyon nan tab la PKCS#11 Founisè.
  3. Nou peze Add epi chwazi chemen ki mennen nan bibliyotèk PKCS#11 la. Nan ka mwen an li se usrliblibrtpkcs11ecp.so.
  4. Nou pral bezwen yon siy Rutoken EDS PKI fòma. Telechaje sèvis piblik rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Nou pote soti
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Nou chwazi kle RSA-2048 pou Rutoken EDS PKI kòm kalite kle. Mwen rele kle Kliyan sa a.

    De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux

  7. Antre kòd PIN la. Epi nou tann pou fini an nan jenerasyon pyès ki nan konpitè nan pè a kle

    De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux

  8. Nou kreye yon sètifika pou itilizatè a pa analoji ak sètifika sèvè a. Fwa sa a, nou chwazi yon modèl [default] HTTPS_client epi pa bliye klike sou Aplike tout.
  9. Nan tab la Sijè antre enfòmasyon sou itilizatè a. Nou reponn afimatif nan demann pou sove sètifika a pou siy la.

Kòm yon rezilta, sou tab la Sètifikasyon nan XCA ou ta dwe jwenn yon bagay tankou sa a.

De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux
Sa a seri minimòm kle ak sètifika se ase yo kòmanse mete kanpe sèvè yo tèt yo.

Pou konfigirasyon, nou bezwen ekspòte sètifika CA, sètifika sèvè ak kle prive sèvè.

Pou fè sa, chwazi antre vle a sou tab ki koresponn lan nan XCA epi klike Ekspòte.

Nginx

Mwen pa pral ekri ki jan yo enstale ak kouri yon sèvè nginx - gen ase atik sou sijè sa a sou entènèt la, nou pa mansyone dokiman ofisyèl la. Ann jwenn tou dwat nan mete kanpe HTTPS ak de-faktè otantifikasyon lè l sèvi avèk yon siy.

Ajoute liy sa yo nan seksyon sèvè a nan 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;
}

Ou ka jwenn yon deskripsyon detaye sou tout paramèt ki gen rapò ak konfigirasyon ssl nan nginx isit la - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Mwen pral jis dekri yon ti tan ke mwen te mande tèt mwen:

  • ssl_verify_client - presize ke chèn konfyans pou sètifika a bezwen verifye.
  • ssl_verify_depth - Defini pwofondè rechèch la pou sètifika rasin ou fè konfyans nan chèn lan. Depi sètifika kliyan nou an imedyatman siyen sou sètifika rasin lan, pwofondè a mete sou 1. Si sètifika itilizatè a siyen sou yon CA entèmedyè, Lè sa a, 2 dwe espesifye nan paramèt sa a, ak sou sa.
  • ssl_client_certificate - presize chemen an nan sètifika rasin ou fè konfyans, ki itilize lè w tcheke konfyans nan sètifika itilizatè a.
  • ssl_certificate/ssl_certificate_key - endike chemen ki mennen nan sètifika sèvè a/kle prive.

Pa bliye kouri nginx -t pou tcheke ke pa gen okenn typo nan konfigirasyon an, e ke tout dosye yo nan bon plas, ak sou sa.

Epi se tout! Kòm ou ka wè, konfigirasyon an se trè senp.

Tcheke li ap travay nan Firefox

Depi nou fè tout bagay konplètman nan Linux, nou pral asime ke itilizatè nou yo travay tou nan Linux (si yo gen Windows, lè sa a gade enstriksyon pou konfigirasyon navigatè nan atik anvan an.

  1. Ann lanse Firefox.
  2. Ann eseye konekte san yon siy dabò. Nou jwenn foto sa a:

    De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux

  3. Nou ale sou sou: preferans # vi prive, epi nou ale nan Aparèy sekirite...
  4. Nou peze Chajpou ajoute yon nouvo Pilote Aparèy PKCS#11 epi presize chemen librtpkcs11ecp.so nou an.
  5. Pou tcheke si sètifika a vizib, ou ka ale nan Manadjè Sètifika. Y ap mande w pou w antre PIN w la. Apre opinyon kòrèk, ou ka tcheke sa ki sou tab la Sètifika ou yo sètifika nou an soti nan siy la parèt.
  6. Koulye a, ann ale ak siy la. Firefox mande w pou w chwazi yon sètifika ki pral chwazi pou sèvè a. Chwazi sètifika nou an.

    De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux

  7. PROFIT!

    De-faktè otantifikasyon sou sit la lè l sèvi avèk yon siy USB. Kounye a tou pou Linux

Se konfigirasyon an fè yon fwa, epi jan ou ka wè nan fenèt demann sètifika a, nou ka sove seleksyon nou an. Apre sa, chak fwa nou konekte nan pòtal la, nou pral sèlman bezwen mete yon siy epi antre kòd PIN itilizatè a ki te espesifye pandan fòma. Apre otantifikasyon sa a, sèvè a deja konnen ki itilizatè te konekte epi ou pa ka kreye okenn fenèt adisyonèl pou verifikasyon, men imedyatman kite itilizatè a antre nan kont pèsonèl li.

Apache

Menm jan ak nginx, pèsonn pa ta dwe gen okenn pwoblèm pou enstale apache. Si ou pa konnen ki jan yo enstale sèvè entènèt sa a, jis itilize dokiman ofisyèl la.

Epi nou kòmanse mete HTTPS nou an ak otantifikasyon de faktè:

  1. Premye ou bezwen aktive mod_ssl:
    $ a2enmod ssl
  2. Apre sa, pèmèt paramèt HTTPS default sit la:
    $ a2ensite default-ssl
  3. Koulye a, nou edite fichye konfigirasyon an: /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

    Kòm ou ka wè, non yo nan paramèt yo pratikman kowenside ak non yo nan paramèt yo nan nginx, kidonk mwen pa pral eksplike yo. Ankò, nenpòt moun ki enterese nan detay yo akeyi nan dokiman an.
    Koulye a, nou rekòmanse sèvè nou an:

    $ service apache2 reload
    $ service apache2 restart

  4. Kòm ou ka wè, mete kanpe otantifikasyon de-faktè sou nenpòt sèvè entènèt, kit sou Windows oswa Linux, pran yon èdtan maksimòm. Ak konfigirasyon navigatè yo pran apeprè 5 minit. Anpil moun panse ke mete kanpe ak travay ak de-faktè otantifikasyon se difisil ak klè. Mwen espere atik nou an debunks mit sa a, omwen yon ti kras.

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Ou bezwen enstriksyon pou mete TLS ak sètifika dapre GOST 34.10-2012:

  • Wi, TLS-GOST trè nesesè

  • Non, akor ak algoritm GOST pa enteresan

44 itilizatè yo te vote. 9 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè