Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux

Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux
В en av våre tidligere artikler vi snakket om viktigheten av tofaktorautentisering på bedriftsportaler til bedrifter. Forrige gang demonstrerte vi hvordan du setter opp sikker autentisering i IIS-nettserveren.

I kommentarfeltet ble vi bedt om å skrive instruksjoner for de vanligste webserverne for Linux - nginx og Apache.

Du spurte - vi skrev.

Hva trenger du for å komme i gang?

  • Enhver moderne Linux-distribusjon. Jeg gjorde et testoppsett på MX Linux 18.2_x64. Dette er selvfølgelig ikke en serverdistribusjon, men det er neppe noen forskjeller for Debian. For andre distribusjoner kan banene til konfigurasjonsbibliotekene variere litt.
  • Token. Vi fortsetter å bruke modellen Rutoken EDS PKI, som er ideell når det gjelder hastighetsegenskaper for bedriftsbruk.
  • For å jobbe med et token i Linux, må du installere følgende pakker:
    libccid libpcsclite1 pcscd pcsc-verktøy åpnes

Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux

Utstedelse av sertifikater

I tidligere artikler stolte vi på det faktum at server- og klientsertifikater vil bli utstedt ved hjelp av Microsoft CA. Men siden vi setter opp alt i Linux, vil vi også fortelle deg om en alternativ måte å utstede disse sertifikatene på - uten å forlate Linux.
Vi vil bruke XCA som CA (https://hohnstaedt.de/xca/), som er tilgjengelig på enhver moderne Linux-distribusjon. Alle handlingene vi vil utføre i XCA kan gjøres i kommandolinjemodus ved å bruke verktøyene OpenSSL og pkcs11, men for større enkelhet og klarhet vil vi ikke presentere dem i denne artikkelen.

Komme i gang

  1. Installere:
    $ apt-get install xca
  2. Og vi kjører:
    $ xca
  3. Vi lager vår database for CA - /root/CA.xdb
    Vi anbefaler å lagre Certificate Authority-databasen i en mappe hvor kun administratoren har tilgang. Dette er viktig for å beskytte de private nøklene til rotsertifikatene, som brukes til å signere alle andre sertifikater.

Opprett nøkler og rot-CA-sertifikat

En offentlig nøkkelinfrastruktur (PKI) er basert på et hierarkisk system. Hovedsaken i dette systemet er rotsertifiseringsmyndigheten eller rot-CA. Sertifikatet må opprettes først.

  1. Vi oppretter en RSA-2048 privat nøkkel for CA. For å gjøre dette, på fanen Private nøkler trykk Ny nøkkel og velg riktig type.
  2. Angi et navn for det nye nøkkelparet. Jeg kalte det CA Key.
  3. Vi utsteder selve CA-sertifikatet ved å bruke det opprettede nøkkelparet. For å gjøre dette, gå til fanen sertifikater og klikk Nytt sertifikat.
  4. Pass på å velge SHA-256, fordi bruk av SHA-1 ikke lenger kan anses som trygt.
  5. Pass på å velge som mal [standard] CA. Ikke glem å klikke videre Bruk alle, ellers brukes ikke malen.
  6. I fanen Emne velg vårt nøkkelpar. Der kan du fylle ut alle hovedfeltene i sertifikatet.

Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux

Oppretter nøkler og et https-serversertifikat

  1. På lignende måte lager vi en RSA-2048 privat nøkkel for serveren, jeg kalte den Server Key.
  2. Ved oppretting av sertifikat velger vi at serversertifikatet skal signeres med CA-sertifikat.
  3. Ikke glem å velge SHA-256.
  4. Vi velger som mal [standard] HTTPS_server. Klikk på Bruk alle.
  5. Så på fanen Emne velg nøkkelen vår og fyll ut de nødvendige feltene.

Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux

Opprett nøkler og sertifikat for brukeren

  1. Brukerens private nøkkel vil bli lagret på vårt token. For å jobbe med det, må du installere PKCS#11-biblioteket fra nettstedet vårt. For populære distribusjoner deler vi ut ferdige pakker, som ligger her - https://www.rutoken.ru/support/download/pkcs/. Vi har også sammenstillinger for arm64, armv7el, armv7hf, e2k, mipso32el, som kan lastes ned fra vår SDK - https://www.rutoken.ru/developers/sdk/. I tillegg til sammenstillinger for Linux, finnes det også sammenstillinger for macOS, freebsd og android.
  2. Legger til en ny PKCS#11-leverandør til XCA. For å gjøre dette, gå til menyen alternativer til fanen PKCS#11-leverandør.
  3. Vi trykker Legg til og velg banen til PKCS#11-biblioteket. I mitt tilfelle er det usrliblibrtpkcs11ecp.so.
  4. Vi trenger et formatert Rutoken EDS PKI-token. Last ned rtAdmin-verktøyet - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Vi gjennomfører
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Vi velger RSA-2048-nøkkelen for Rutoken EDS PKI som nøkkeltype. Jeg kalte denne nøkkelen Client Key.

    Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux

  7. Tast inn PIN-koden. Og vi venter på fullføringen av maskinvaregenerering av nøkkelparet

    Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux

  8. Vi lager et sertifikat for brukeren i analogi med serversertifikatet. Denne gangen velger vi en mal [standard] HTTPS_klient og ikke glem å klikke Bruk alle.
  9. I fanen Emne angi informasjon om brukeren. Vi svarer bekreftende på forespørselen om å lagre sertifikatet for token.

Som et resultat, på fanen Sertifikater i XCA bør du få noe sånt som dette.

Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux
Dette minimumssettet med nøkler og sertifikater er nok til å begynne å sette opp serverne selv.

For å konfigurere, må vi eksportere CA-sertifikatet, serversertifikatet og serverens private nøkkel.

For å gjøre dette, velg ønsket oppføring på den tilsvarende fanen i XCA og klikk Eksport.

Nginx

Jeg vil ikke skrive hvordan jeg installerer og kjører en nginx-server - det er nok artikler om dette emnet på Internett, for ikke å nevne den offisielle dokumentasjonen. La oss gå rett til å sette opp HTTPS og tofaktorautentisering ved hjelp av et token.

Legg til følgende linjer til serverdelen i 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;
}

En detaljert beskrivelse av alle parametere relatert til å konfigurere ssl i nginx finner du her - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Jeg vil bare kort beskrive de jeg spurte meg selv:

  • ssl_verify_client - spesifiserer at tillitskjeden for sertifikatet må verifiseres.
  • ssl_verify_depth - Definerer søkedybden for det klarerte rotsertifikatet i kjeden. Siden vårt klientsertifikat umiddelbart signeres på rotsertifikatet, settes dybden til 1. Hvis brukersertifikatet er signert på en mellomliggende CA, må 2 spesifiseres i denne parameteren, og så videre.
  • ssl_client_certificate - spesifiserer banen til det klarerte rotsertifikatet, som brukes når du sjekker tillit til brukerens sertifikat.
  • ssl_certificate/ssl_certificate_key - angi banen til serversertifikatet/privatnøkkelen.

Ikke glem å kjøre nginx -t for å sjekke at det ikke er skrivefeil i konfigurasjonen, og at alle filene er på rett plass, og så videre.

Og det er alt! Som du kan se, er oppsettet veldig enkelt.

Sjekker at det fungerer i Firefox

Siden vi gjør alt fullstendig i Linux, vil vi anta at våre brukere også jobber i Linux (hvis de har Windows, da se instruksjoner for oppsett av nettlesere i forrige artikkel.

  1. La oss starte Firefox.
  2. La oss prøve å logge på uten token først. Vi får dette bildet:

    Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux

  3. Vi fortsetter om: preferanser # personvern, og vi går til Sikkerhetsenheter...
  4. Vi trykker Lastefor å legge til en ny PKCS#11 enhetsdriver og spesifisere banen til vår librtpkcs11ecp.so.
  5. For å sjekke at sertifikatet er synlig kan du gå til Sertifikatadministrator. Du vil bli bedt om å angi PIN-koden din. Etter riktig inntasting kan du sjekke hva som står på fanen Dine sertifikater sertifikatet vårt fra tokenet dukket opp.
  6. La oss nå gå med tokenet. Firefox ber deg velge et sertifikat som skal velges for serveren. Velg vårt sertifikat.

    Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux

  7. PROFITT!

    Tofaktorautentisering på nettstedet ved hjelp av et USB-token. Nå også for Linux

Oppsettet gjøres én gang, og som du kan se i sertifikatforespørselsvinduet, kan vi lagre utvalget vårt. Etter dette, hver gang vi logger inn på portalen, trenger vi bare å sette inn et token og taste inn bruker-PIN-koden som ble spesifisert under formateringen. Etter slik autentisering vet serveren allerede hvilken bruker som har logget på og du kan ikke lenger opprette noen ekstra vinduer for verifisering, men umiddelbart slippe brukeren inn på sin personlige konto.

Apache

Akkurat som med nginx, bør ingen ha noen problemer med å installere apache. Hvis du ikke vet hvordan du installerer denne webserveren, bruk bare den offisielle dokumentasjonen.

Og vi begynner å sette opp vår HTTPS og tofaktorautentisering:

  1. Først må du aktivere mod_ssl:
    $ a2enmod ssl
  2. Og aktiver deretter nettstedets standard HTTPS-innstillinger:
    $ a2ensite default-ssl
  3. Nå redigerer vi konfigurasjonsfilen: /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

    Som du kan se, er navnene på parameterne praktisk talt sammenfallende med navnene på parameterne i nginx, så jeg vil ikke forklare dem. Igjen, alle som er interessert i detaljene er velkommen til dokumentasjonen.
    Nå starter vi serveren vår på nytt:

    $ service apache2 reload
    $ service apache2 restart

  4. Som du kan se, tar det maksimalt én time å sette opp tofaktorautentisering på hvilken som helst webserver, enten på Windows eller Linux. Og å sette opp nettlesere tar omtrent 5 minutter. Mange synes det er vanskelig og uklart å sette opp og jobbe med tofaktorautentisering. Jeg håper artikkelen vår avkrefter denne myten, i det minste litt.

Kun registrerte brukere kan delta i undersøkelsen. Logg inn, vær så snill.

Trenger du instruksjoner for å sette opp TLS med sertifikater i henhold til GOST 34.10-2012:

  • Ja, TLS-GOST er veldig nødvendig

  • Nei, tuning med GOST-algoritmer er ikke interessant

44 brukere stemte. 9 brukere avsto.

Kilde: www.habr.com

Legg til en kommentar