To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux

To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux
В en af ​​vores tidligere artikler vi talte om vigtigheden af ​​to-faktor autentificering på virksomhedernes portaler. Sidste gang demonstrerede vi, hvordan man opsætter sikker godkendelse i IIS-webserveren.

I kommentarerne blev vi bedt om at skrive instruktioner til de mest almindelige webservere til Linux - nginx og Apache.

Du spurgte - vi skrev.

Hvad skal du bruge for at komme i gang?

  • Enhver moderne Linux-distribution. Jeg lavede en testopsætning på MX Linux 18.2_x64. Dette er naturligvis ikke en serverdistribution, men der er usandsynligt nogen forskelle for Debian. For andre distributioner kan stierne til konfigurationsbibliotekerne afvige lidt.
  • Polet. Vi fortsætter med at bruge modellen Rutoken EDS PKI, hvilket er ideelt med hensyn til hastighedsegenskaber til virksomhedsbrug.
  • For at arbejde med et token i Linux skal du installere følgende pakker:
    libccid libpcsclite1 pcscd pcsc-værktøjer åbner

To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux

Udstedelse af certifikater

I tidligere artikler stolede vi på, at server- og klientcertifikater vil blive udstedt ved hjælp af Microsoft CA. Men da vi opsætter alt i Linux, vil vi også fortælle dig om en alternativ måde at udstede disse certifikater på - uden at forlade Linux.
Vi vil bruge XCA som CA (https://hohnstaedt.de/xca/), som er tilgængelig på enhver moderne Linux-distribution. Alle de handlinger, vi udfører i XCA, kan udføres i kommandolinjetilstand ved hjælp af OpenSSL og pkcs11-værktøjsværktøjerne, men for større enkelhed og klarhed vil vi ikke præsentere dem i denne artikel.

Kom godt i gang

  1. Installere:
    $ apt-get install xca
  2. Og vi kører:
    $ xca
  3. Vi opretter vores database til CA - /root/CA.xdb
    Vi anbefaler at gemme Certificate Authority-databasen i en mappe, hvor kun administratoren har adgang. Dette er vigtigt for at beskytte de private nøgler til rodcertifikaterne, som bruges til at signere alle andre certifikater.

Opret nøgler og rod-CA-certifikat

En offentlig nøgleinfrastruktur (PKI) er baseret på et hierarkisk system. Det vigtigste i dette system er root-certificeringsmyndigheden eller root-CA. Dens certifikat skal oprettes først.

  1. Vi opretter en RSA-2048 privat nøgle til CA. For at gøre dette, på fanen Private nøgler skubbe Ny nøgle og vælg den passende type.
  2. Indstil et navn til det nye nøglepar. Jeg kaldte det CA Key.
  3. Vi udsteder selve CA-certifikatet ved hjælp af det oprettede nøglepar. For at gøre dette skal du gå til fanen Certifikater og klik Nyt certifikat.
  4. Sørg for at vælge SHA-256, fordi brug af SHA-1 ikke længere kan betragtes som sikkert.
  5. Sørg for at vælge som skabelon [standard] CA. Glem ikke at klikke videre Anvend alle, ellers anvendes skabelonen ikke.
  6. I fanen Emne vælg vores nøglepar. Der kan du udfylde alle certifikatets hovedfelter.

To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux

Oprettelse af nøgler og et https-servercertifikat

  1. På lignende måde opretter vi en RSA-2048 privat nøgle til serveren, jeg kaldte den servernøgle.
  2. Ved oprettelse af et certifikat vælger vi, at servercertifikatet skal signeres med et CA-certifikat.
  3. Glem ikke at vælge SHA-256.
  4. Vi vælger som skabelon [standard] HTTPS_server. Klik på Anvend alle.
  5. Så på fanen Emne vælg vores nøgle og udfyld de påkrævede felter.

To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux

Opret nøgler og certifikat til brugeren

  1. Brugerens private nøgle vil blive gemt på vores token. For at arbejde med det skal du installere PKCS#11-biblioteket fra vores hjemmeside. Til populære distributioner uddeler vi færdige pakker, som ligger her - https://www.rutoken.ru/support/download/pkcs/. Vi har også samlinger til arm64, armv7el, armv7hf, e2k, mipso32el, som kan downloades fra vores SDK - https://www.rutoken.ru/developers/sdk/. Udover assemblies til Linux findes der også assemblies til macOS, freebsd og android.
  2. Tilføjelse af en ny PKCS#11-udbyder til XCA. For at gøre dette skal du gå til menuen Indstillinger til fanen PKCS#11-udbyder.
  3. Klik Tilføj og vælg stien til PKCS#11-biblioteket. I mit tilfælde er det usrliblibrtpkcs11ecp.so.
  4. Vi skal bruge et formateret Rutoken EDS PKI-token. Download hjælpeprogrammet rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Vi udfører
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Vi vælger RSA-2048 nøglen til Rutoken EDS PKI som nøgletype. Jeg kaldte denne nøgle Client Key.

    To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux

  7. Indtast PIN-koden. Og vi venter på færdiggørelsen af ​​hardwaregenerering af nøgleparret

    To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux

  8. Vi opretter et certifikat til brugeren i analogi med servercertifikatet. Denne gang vælger vi en skabelon [standard] HTTPS_client og glem ikke at klikke Anvend alle.
  9. I fanen Emne indtaste oplysninger om brugeren. Vi svarer bekræftende på anmodningen om at gemme certifikatet til tokenet.

Som et resultat, på fanen Certificeringer i XCA bør du få noget som dette.

To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux
Dette minimumssæt af nøgler og certifikater er nok til at begynde at konfigurere selve serverne.

For at konfigurere skal vi eksportere CA-certifikatet, servercertifikatet og serverens private nøgle.

For at gøre dette skal du vælge den ønskede post på den tilsvarende fane i XCA og klikke eksport.

Nginx

Jeg vil ikke skrive, hvordan man installerer og kører en nginx-server - der er nok artikler om dette emne på internettet, for ikke at nævne den officielle dokumentation. Lad os gå direkte til opsætning af HTTPS og to-faktor-godkendelse ved hjælp af et token.

Tilføj følgende linjer til serversektionen 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 detaljeret beskrivelse af alle parametre relateret til konfiguration af ssl i nginx kan findes her - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Jeg vil bare kort beskrive dem, som jeg spurgte mig selv:

  • ssl_verify_client - angiver, at tillidskæden for certifikatet skal verificeres.
  • ssl_verify_depth - Definerer søgedybden for det betroede rodcertifikat i kæden. Da vores klientcertifikat straks signeres på rodcertifikatet, sættes dybden til 1. Hvis brugercertifikatet er signeret på en mellemliggende CA, skal 2 angives i denne parameter, og så videre.
  • ssl_client_certificate - angiver stien til det betroede rodcertifikat, som bruges ved kontrol af tillid til brugerens certifikat.
  • ssl_certificate/ssl_certificate_key - angiv stien til servercertifikatet/privat nøgle.

Glem ikke at køre nginx -t for at kontrollere, at der ikke er tastefejl i konfigurationen, og at alle filer er på det rigtige sted, og så videre.

Og det er alt! Som du kan se, er opsætningen meget enkel.

Tjek at det virker i Firefox

Da vi gør alt fuldstændigt i Linux, vil vi antage, at vores brugere også arbejder i Linux (hvis de har Windows, så se instruktioner til opsætning af browsere i den forrige artikel.

  1. Lad os starte Firefox.
  2. Lad os prøve at logge ind uden token først. Vi får dette billede:

    To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux

  3. Lad os gå til om: præferencer # privatlivets fred, og vi går til Sikkerhedsenheder...
  4. Klik Loadfor at tilføje en ny PKCS#11-enhedsdriver og angive stien til vores librtpkcs11ecp.so.
  5. For at kontrollere, at certifikatet er synligt, kan du gå til Certifikat manager. Du bliver bedt om at indtaste din PIN-kode. Efter korrekt input kan du tjekke, hvad der er på fanen Dine certifikater vores certifikat fra token dukkede op.
  6. Lad os nu gå med tokenet. Firefox beder dig om at vælge et certifikat, der vil blive valgt til serveren. Vælg vores certifikat.

    To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux

  7. PROFIT!

    To-faktor-godkendelse på webstedet ved hjælp af et USB-token. Nu også til Linux

Opsætningen udføres én gang, og som du kan se i certifikatanmodningsvinduet, kan vi gemme vores valg. Herefter skal vi, hver gang vi logger ind på portalen, kun indsætte et token og indtaste den bruger-PIN-kode, der blev angivet under formateringen. Efter en sådan godkendelse ved serveren allerede, hvilken bruger der er logget ind, og du kan ikke længere oprette yderligere vinduer til verifikation, men straks lade brugeren komme ind på sin personlige konto.

Apache

Ligesom med nginx bør ingen have problemer med at installere apache. Hvis du ikke ved, hvordan du installerer denne webserver, skal du blot bruge den officielle dokumentation.

Og vi begynder at konfigurere vores HTTPS og to-faktor-godkendelse:

  1. Først skal du aktivere mod_ssl:
    $ a2enmod ssl
  2. Og aktiver derefter webstedets standard HTTPS-indstillinger:
    $ a2ensite default-ssl
  3. Nu redigerer vi konfigurationsfilen: /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å parametrene praktisk talt sammenfaldende med navnene på parametrene i nginx, så jeg vil ikke forklare dem. Igen, alle interesserede i detaljerne er velkomne til dokumentationen.
    Nu genstarter vi vores server:

    $ service apache2 reload
    $ service apache2 restart

  4. Som du kan se, tager det maksimalt en time at konfigurere to-faktor-godkendelse på enhver webserver, uanset om det er på Windows eller Linux. Og opsætning af browsere tager omkring 5 minutter. Mange mennesker tror, ​​at det er svært og uklart at opsætte og arbejde med to-faktor-autentificering. Jeg håber, at vores artikel afkræfter denne myte, i det mindste en smule.

Kun registrerede brugere kan deltage i undersøgelsen. Log ind, Vær venlig.

Har du brug for instruktioner til opsætning af TLS med certifikater i henhold til GOST 34.10-2012:

  • Ja, TLS-GOST er meget nødvendigt

  • Nej, tuning med GOST-algoritmer er ikke interessant

44 brugere stemte. 9 brugere undlod at stemme.

Kilde: www.habr.com

Tilføj en kommentar