Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille

Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille
В yksi aiemmista artikkeleistamme puhuimme kaksivaiheisen todennuksen tärkeydestä yritysten yritysportaaleissa. Viime kerralla osoitimme kuinka suojattu todennus asetetaan IIS-verkkopalvelimelle.

Kommenteissa meitä pyydettiin kirjoittamaan ohjeet yleisimmille Linux-verkkopalvelimille - nginx ja Apache.

Sinä kysyit - me kirjoitimme.

Mitä tarvitset päästäksesi alkuun?

  • Mikä tahansa moderni Linux-jakelu. Tein testiasennuksen MX Linux 18.2_x64 -käyttöjärjestelmässä. Tämä ei tietenkään ole palvelinjakelu, mutta Debianissa ei todennäköisesti ole eroja. Muissa jakeluissa polut konfigurointikirjastoihin voivat vaihdella hieman.
  • Token. Jatkamme mallin käyttöä Rutoken EDS PKI, joka on nopeusominaisuuksiltaan ihanteellinen yrityskäyttöön.
  • Jotta voit työskennellä tunnuksen kanssa Linuxissa, sinun on asennettava seuraavat paketit:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille

Todistusten myöntäminen

Aiemmissa artikkeleissa luotimme siihen, että palvelin- ja asiakassertifikaatit myönnetään Microsoft CA:n avulla. Mutta koska määritämme kaiken Linuxissa, kerromme sinulle myös vaihtoehtoisesta tavasta myöntää nämä varmenteet - poistumatta Linuxista.
Käytämme XCA:ta CA:na (https://hohnstaedt.de/xca/), joka on saatavilla missä tahansa nykyaikaisessa Linux-jakelussa. Kaikki toiminnot, jotka suoritamme XCA:ssa, voidaan tehdä komentorivitilassa käyttämällä OpenSSL- ja pkcs11-työkalua, mutta yksinkertaisuuden ja selkeyden vuoksi emme esittele niitä tässä artikkelissa.

Aloittaminen

  1. Asentaa:
    $ apt-get install xca
  2. Ja juoksemme:
    $ xca
  3. Luomme tietokantamme CA:lle - /root/CA.xdb
    Suosittelemme varmentajan tietokannan tallentamista kansioon, johon vain järjestelmänvalvojalla on pääsy. Tämä on tärkeää juurivarmenteiden yksityisten avainten suojaamiseksi, joita käytetään kaikkien muiden varmenteiden allekirjoittamiseen.

Luo avaimet ja juuri CA -sertifikaatti

Julkisen avaimen infrastruktuuri (PKI) perustuu hierarkkiseen järjestelmään. Pääasia tässä järjestelmässä on juurivarmentaja tai juurivarmentaja. Sen sertifikaatti on ensin luotava.

  1. Luomme RSA-2048 yksityisen avaimen varmentajalle. Voit tehdä tämän välilehdellä Yksityiset avaimet työntää uusi avain ja valitse sopiva tyyppi.
  2. Aseta nimi uudelle avainparille. Kutsuin sitä CA-avaimeksi.
  3. Myönnämme itse CA-varmenteen käyttämällä luotua avainparia. Voit tehdä tämän siirtymällä välilehdelle Sertifikaatit ja napsauta Uusi sertifikaatti.
  4. Muista valita SHA-256, koska SHA-1:n käyttöä ei voida enää pitää turvallisena.
  5. Muista valita malliksi [oletus] CA. Älä unohda klikata Käytä kaikkia, muuten mallia ei käytetä.
  6. Välilehdessä Aihe valitse avainparimme. Siellä voit täyttää kaikki sertifikaatin pääkentät.

Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille

Luodaan avaimia ja https-palvelinvarmenne

  1. Samalla tavalla luomme palvelimelle yksityisen RSA-2048-avaimen, kutsuin sitä palvelinavaimeksi.
  2. Varmennetta luotaessa valitsemme, että palvelinvarmenne on allekirjoitettava CA-varmenteella.
  3. Älä unohda valita SHA-256.
  4. Valitsemme malliksi [oletus] HTTPS_palvelin. Klikkaa Käytä kaikkia.
  5. Sitten välilehdelle Aihe valitse avaimemme ja täytä vaaditut kentät.

Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille

Luo avaimet ja varmenne käyttäjälle

  1. Käyttäjän yksityinen avain tallennetaan tunnukseemme. Jotta voit työskennellä sen kanssa, sinun on asennettava PKCS#11-kirjasto verkkosivustoltamme. Suosituille jakeluille jaamme valmiita paketteja, jotka sijaitsevat täällä - https://www.rutoken.ru/support/download/pkcs/. Meillä on myös kokoonpanot arm64, armv7el, armv7hf, e2k, mipso32el, jotka voidaan ladata SDK:sta - https://www.rutoken.ru/developers/sdk/. Linux-kokoonpanojen lisäksi kokoonpanoja on myös macOS:lle, freebsd:lle ja Androidille.
  2. Uuden PKCS#11-palveluntarjoajan lisääminen XCA:han. Voit tehdä tämän siirtymällä valikkoon Vaihtoehdot välilehdelle PKCS#11-palveluntarjoaja.
  3. Painamme Lisää ja valitse polku PKCS#11-kirjastoon. Minun tapauksessani se on usrliblibrtpkcs11ecp.so.
  4. Tarvitsemme muotoillun Rutoken EDS PKI -tunnuksen. Lataa rtAdmin-apuohjelma - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Me toteutamme
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Valitsemme Rutoken EDS PKI:n avaintyypiksi RSA-2048-avaimen. Kutsuin tätä avainta asiakasavaimeksi.

    Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille

  7. Syötä PIN-koodi. Ja odotamme avainparin laitteiston luomisen valmistumista

    Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille

  8. Luomme käyttäjälle varmenteen analogisesti palvelinvarmenteen kanssa. Tällä kertaa valitsemme mallin [oletus] HTTPS_client ja älä unohda napsauttaa Käytä kaikkia.
  9. Välilehdessä Aihe syöttää tietoja käyttäjästä. Vastaamme myöntävästi pyyntöön tallentaa varmenne tunnukselle.

Tämän seurauksena välilehdellä Sertifikaatit XCA:ssa sinun pitäisi saada jotain tällaista.

Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille
Tämä avainten ja varmenteiden vähimmäisjoukko riittää aloittamaan palvelinten asennuksen.

Määrittämistä varten meidän on vietävä CA-varmenne, palvelinvarmenne ja palvelimen yksityinen avain.

Voit tehdä tämän valitsemalla haluamasi merkinnän vastaavalta välilehdeltä XCA:ssa ja napsauttamalla Vie.

nginx

En kirjoita kuinka asentaa ja käyttää nginx-palvelinta - Internetissä on tarpeeksi artikkeleita tästä aiheesta, puhumattakaan virallisesta dokumentaatiosta. Siirrytään suoraan HTTPS:n ja kaksivaiheisen todennuksen määrittämiseen tunnuksella.

Lisää seuraavat rivit nginx.conf-palvelimen osioon:

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

Yksityiskohtainen kuvaus kaikista parametreista, jotka liittyvät ssl:n konfigurointiin nginxissä, löytyy täältä - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Kuvailen vain lyhyesti niitä, joita kysyin itseltäni:

  • ssl_verify_client - määrittää, että varmenteen luottamusketju on tarkistettava.
  • ssl_verify_depth – Määrittää ketjun luotetun juurivarmenteen hakusyvyyden. Koska asiakassertifikaattimme allekirjoitetaan välittömästi juurivarmenteeseen, syvyydeksi asetetaan 1. Jos käyttäjävarmenne on allekirjoitettu välivarmenteella, tässä parametrissa on määritettävä 2 ja niin edelleen.
  • ssl_client_certificate - määrittää polun luotettuun juurivarmenteeseen, jota käytetään tarkistettaessa luottamusta käyttäjän varmenteeseen.
  • ssl_sertifikaatti/ssl_sertifikaattiavain - osoittavat polun palvelimen varmenteeseen/yksityiseen avaimeen.

Älä unohda suorittaa nginx -t tarkistaaksesi, että asetuksissa ei ole kirjoitusvirheitä ja että kaikki tiedostot ovat oikeissa paikoissa ja niin edelleen.

Ja siinä kaikki! Kuten näet, asennus on hyvin yksinkertainen.

Tarkistetaan, että se toimii Firefoxissa

Koska teemme kaiken kokonaan Linuxissa, oletamme, että käyttäjämme työskentelevät myös Linuxissa (jos heillä on Windows, niin katso edellisen artikkelin ohjeet selaimien määrittämiseen.

  1. Käynnistä Firefox.
  2. Yritetään ensin kirjautua sisään ilman tunnuksia. Saamme tämän kuvan:

    Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille

  3. Jatkamme Tietoja: mieltymykset # yksityisyys, ja mennään Turvalaitteet…
  4. Painamme Ladatalisätäksesi uuden PKCS#11-laiteohjaimen ja määrittääksesi polun osoitteeseen librtpkcs11ecp.so.
  5. Voit tarkistaa, että varmenne on näkyvissä, siirtymällä osoitteeseen Varmenteiden hallinta. Sinua pyydetään syöttämään PIN-koodisi. Oikean syötön jälkeen voit tarkistaa, mitä välilehdellä on Todistuksesi todistuksemme tokenista ilmestyi.
  6. Nyt mennään tokenilla. Firefox kehottaa sinua valitsemaan varmenteen, joka valitaan palvelimelle. Valitse sertifikaattimme.

    Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille

  7. VOITTO!

    Kaksivaiheinen todennus sivustolla USB-tunnisteella. Nyt myös Linuxille

Asennus tehdään kerran, ja kuten varmennepyyntöikkunasta näkyy, voimme tallentaa valintamme. Tämän jälkeen joka kerta kun kirjaudumme sisään portaaliin, meidän tarvitsee vain lisätä tunnus ja syöttää käyttäjän PIN-koodi, joka määritettiin alustuksen aikana. Tällaisen todennuksen jälkeen palvelin tietää jo kuka käyttäjä on kirjautunut sisään, etkä voi enää luoda lisäikkunoita vahvistusta varten, vaan päästää käyttäjä välittömästi henkilökohtaiseen tiliinsä.

Apache

Aivan kuten nginxissä, kenelläkään ei pitäisi olla ongelmia apachen asentamisessa. Jos et tiedä kuinka asentaa tämä verkkopalvelin, käytä virallista dokumentaatiota.

Ja aloitamme HTTPS:n ja kaksivaiheisen todennuksen määrittämisen:

  1. Ensin sinun on aktivoitava mod_ssl:
    $ a2enmod ssl
  2. Ota sitten käyttöön sivuston HTTPS-oletusasetukset:
    $ a2ensite default-ssl
  3. Nyt muokkaamme asetustiedostoa: /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

    Kuten näette, parametrien nimet ovat käytännössä samat kuin nginxin parametrien nimet, joten en selitä niitä. Jälleen kaikki yksityiskohdista kiinnostuneet ovat tervetulleita dokumentaatioon.
    Nyt käynnistämme palvelimemme uudelleen:

    $ service apache2 reload
    $ service apache2 restart

  4. Kuten näet, kaksivaiheisen todennuksen määrittäminen millä tahansa verkkopalvelimella, olipa kyseessä Windows tai Linux, kestää enintään tunnin. Ja selaimien käyttöönotto kestää noin 5 minuuttia. Monien mielestä kaksivaiheisen todennuksen määrittäminen ja käyttäminen on vaikeaa ja epäselvää. Toivon, että artikkelimme kumoaa tämän myytin, ainakin hieman.

Vain rekisteröityneet käyttäjät voivat osallistua kyselyyn. Kirjaudu sisään, ole kiltti.

Tarvitsetko ohjeita TLS:n määrittämiseen varmenteilla GOST 34.10-2012:

  • Kyllä, TLS-GOST on erittäin tarpeellinen

  • Ei, viritys GOST-algoritmeilla ei ole mielenkiintoista

44 käyttäjää äänesti. 9 käyttäjää pidättyi äänestämästä.

Lähde: will.com

Lisää kommentti