TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux

TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux
I i en av vÄra tidigare artiklar berÀttade vi om vikten av tvÄfaktorsautentisering pÄ företagsportaler. I förra artikeln visade vi hur man stÀller in sÀker autentisering pÄ webservern IIS.

I kommentarsfĂ€ltet bad vĂ„ra lĂ€sare oss att skriva en handledning för de mest populĂ€ra webservrarna under Linux – nginx och Apache.

Ni bad – vi hörde.

Vad behövs för att komma igÄng?

  • Vilken modern Linux-distribution som helst. Jag utförde en testinstĂ€llning i MX Linux 18.2_x64. Det Ă€r visserligen ingen serverdistribution, men för Debian lĂ€r det inte vara nĂ„gra större skillnader. För andra distributioner kan sökvĂ€gar till bibliotek och konfigurationsfiler variera nĂ„got.
  • Token. Vi fortsĂ€tter att anvĂ€nda modellen Rudtoken EDS PKI, som Ă€r perfekt anpassad för prestandan krav för företagsanvĂ€ndning.
  • För att arbeta med token i Linux mĂ„ste följande paket installeras:
    libccid libpcsclite1 pcscd pcsc-tools opensc

TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux

UtfÀrdande av certifikat

I tidigare artiklar har vi utgĂ„tt ifrĂ„n att server- och klientcertifikat utfĂ€rdas med Microsoft CA. Men eftersom vi stĂ€ller in allt i Linux, sĂ„ kommer vi Ă€ven att berĂ€tta om ett alternativt sĂ€tt att utfĂ€rda dessa certifikat – utan att lĂ€mna Linux.
Som CA kommer vi att anvÀnda XCA (https://hohnstaedt.de/xca/), som Àr tillgÀnglig i alla moderna Linux-distributioner. Alla ÄtgÀrder som vi utför i XCA kan ocksÄ göras i kommandoradslÀge med hjÀlp av verktyg som OpenSSL och pkcs11-tool, men för större enkelhet och tydlighet kommer vi inte att ta med dem i denna artikel.

Komma igÄng

  1. Installera:
    $ apt-get install xca
  2. Och starta:
    $ xca
  3. Skapa vĂ„r databas för CA – /root/CA.xdb
    Vi rekommenderar att du lagrar databasen för Certificate Authority i en mapp som endast administratören har tillgÄng till. Detta Àr viktigt för att skydda de privata nycklarna för rotcertifikaten, som anvÀnds för att signera alla andra certifikat.

Skapa nycklar och certifikat för root CA

I grunden för infrastrukturer för öppna nycklar (PKI) ligger ett hierarkiskt system. Det centrala i detta system Àr rotcertifikatscentret eller root CA. Dess certifikat mÄste skapas först.

  1. Skapa en privat nyckel RSA-2048 för CA. För detta gör vi det pÄ fliken Privata nycklar klicka pÄ Ny nyckel och vÀlj motsvarande typ.
  2. Ange ett namn för det nya nyckelparet. Jag kallade det — CA Key.
  3. Vi skriver ut sjÀlva CA-certifikatet med den skapade nyckelparet. För att göra det gÄr vi till fliken Certificates och klickar pÄ New Certificate.
  4. Viktigt att vi vÀljer SHA-256, eftersom anvÀndning av SHA-1 inte lÀngre kan anses sÀkert.
  5. Som mall vÀljer vi absolut [default] CA. Glöm inte att klicka pÄ Apply all, annars tillÀmpas inte mallen.
  6. PÄ fliken Subject vÀljer vi vÄrt nyckelpar. DÀr kan du ocksÄ fylla i alla viktiga fÀlt för certifikatet.

TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux

Vi skapar nycklar och certifikat för HTTPS-servern

  1. PĂ„ liknande sĂ€tt skapar vi en privat nyckel RSA-2048 för servern, jag kallade den — Server Key.
  2. Vid skapandet av certifikatet vÀljer vi att servercertifikatet behöver signeras av CA-certifikatet.
  3. Kom ihÄg att vÀlja SHA-256.
  4. Som mall vÀljer vi [default] HTTPS_server. Klicka pÄ Apply all.
  5. DÀrefter gÄr vi till fliken Subject vÀljer vÄr nyckel och fyller i nödvÀndiga fÀlt.

TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux

Vi skapar nycklar och certifikat för anvÀndaren

  1. Den privata nyckeln för anvĂ€ndaren kommer att lagras pĂ„ vĂ„r token. För att arbeta med den mĂ„ste vi installera PKCS#11-biblioteket frĂ„n vĂ„r webbplats. För populĂ€ra distributioner tillhandahĂ„ller vi fĂ€rdiga paket som finns hĂ€r — https://www.rutoken.ru/support/download/pkcs/. Vi har ocksĂ„ byggnader för arm64, armv7el, armv7hf, e2k, mipso32el, som kan hĂ€mtas i vĂ„rt SDK — https://www.rutoken.ru/developers/sdk/. Förutom byggnader för Linux finns det Ă€ven byggnader för macOS, freebsd och android.
  2. LÀgg till en ny PKCS#11-leverantör i XCA. För detta gÄr vi till menyn Options till fliken PKCS#11 Provider.
  3. Klicka pÄ Add och vÀlj sökvÀgen till PKCS#11-biblioteket. I mitt fall Àr det usrliblibrtpkcs11ecp.so.
  4. Vi behöver en formaterad Rootoken PKI-digital signaturtoken. Ladda ner verktyget rtAdmin — https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Kör
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u
  6. Som nyckeltyp vĂ€ljer vi — RSA-2048-nyckel pĂ„ Rootoken PKI. Jag kallade denna nyckel Client Key.

    TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux

  7. Ange PIN-koden. Och vÀnta pÄ att den hÄrdvarugenererade nyckelparet ska slutföras.

    TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux

  8. Certifikatet för anvÀndaren skapas pÄ samma sÀtt som servercertifikatet. Denna gÄng vÀljer vi mallen [default] HTTPS_client och glöm inte att klicka pÄ Apply all.
  9. PÄ fliken Subject ange informationen om anvÀndaren. NÀr du ombeds att spara certifikatet pÄ token, svara bejakande.

Som resultat ska fliken Certificates i XCA se ut som bilden nedan.

TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux
Detta minimala set av nycklar och certifikat Àr tillrÀckligt för att börja konfigurera servrarna.

För att konfigurera behöver vi exportera certifikatet frÄn CA, servercertifikatet och serverns privata nyckel.

För detta behöver vi vÀlja den relevanta posten i den motsvarande fliken i XCA och trycka pÄ Exportera.

Nginx

Jag kommer inte att beskriva hur man installerar och kör en nginx-server — det finns tillrĂ€ckligt med artiklar pĂ„ internet om detta, för att inte tala om den officiella dokumentationen. Vi gĂ„r direkt till att konfigurera HTTPS och tvĂ„faktorsautentisering med token.

Vi lÀgger till följande rader i 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;
}

Du kan hitta en detaljerad beskrivning av alla parametrar som rör ssl-konfiguration i nginx hĂ€r — https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Jag kommer bara kort att beskriva de som jag sjÀlv har stÀllt in:

  • ssl_verify_client — anger att certifikatets förtroendekedja mĂ„ste kontrolleras.
  • ssl_verify_depth — bestĂ€mmer djupet för att hitta det betrodda rotcertifikatet i kedjan. Eftersom vĂ„rt klientcertifikat Ă€r direkt signerat av rotcertifikatet, sĂ€tts djupet till 1. Om anvĂ€ndarens certifikat signeras av ett mellanliggande CA, mĂ„ste detta parameter sĂ€ttas till 2, och sĂ„ vidare.
  • ssl_client_certificate — anger sökvĂ€gen till det betrodda rotcertifikatet som anvĂ€nds vid kontroll av förtroendet för anvĂ€ndarens certifikat.
  • ssl_certificate/ssl_certificate_key — anger sökvĂ€gen till certifikatet/den privata nyckeln för servern.

Kom ihÄg att köra nginx -t för att kontrollera att det inte finns nÄgra fel i konfigurationen och att alla filer ligger dÀr de ska.

Och det Àr faktiskt allt! Som ni ser Àr konfigurationen mycket enkel.

Vi testar funktionen i Firefox

Eftersom vi gör allt fullt ut i Linux, lÄt oss anta att vÄra anvÀndare ocksÄ arbetar i Linux (om de har Windows, sÄ se vÀgledningen för att konfigurera webblÀsare i den föregÄende artikeln.

  1. Vi startar Firefox.
  2. Vi försöker först gÄ in utan token. Vi fÄr den hÀr bilden:

    TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux

  3. Vi gÄr till about:preferences#privacy, och gÄr till SÀkerhetsenheter

  4. Klicka pÄ Ladda, för att lÀgga till en ny PKCS#11-enhetsdrivrutin och anger sökvÀgen till vÄr librtpkcs11ecp.so.
  5. För att kontrollera att certifikatet syns kan vi gÄ till Certifikatadministratör. En begÀran om att ange PIN-koden visas. Efter att ha angett korrekt kan vi kontrollera att vÄrt certifikat med token har dykt upp pÄ fliken Dina certifikat .
  6. Nu loggar vi in med token. Firefox erbjuder att vÀlja ett certifikat som kommer att vÀljas pÄ servern. Vi vÀljer vÄrt certifikat.

    TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux

  7. VINST!

    TvÄfaktorsautentisering pÄ webbplatsen med anvÀndning av USB-token. Nu ocksÄ för Linux

InstÀllningen görs en gÄng, och som syns i fönstret för certifikatförfrÄgan kan vi spara vÄrt val. Efter detta behöver vi bara klistra in token och ange PIN-koden som stÀlldes in vid formateringen varje gÄng vi loggar in pÄ portalen. Efter denna autentisering vet servern redan vilken anvÀndare som har loggat in och vi behöver inte lÀngre göra nÄgra ytterligare fönster för verifiering, utan kan direkt slÀppa in anvÀndaren i sin personliga portal.

Apache

Precis som med nginx bör ingen ha problem med att installera apache. Om du inte vet hur man installerar denna webbserver, anvÀnd bara den officiella dokumentationen.

Nu börjar vi med att konfigurera vÄr HTTPS och tvÄfaktorsautentisering:

  1. Först mÄste vi aktivera mod_ssl:
    $ a2enmod ssl
  2. Och sedan aktivera standardinstÀllningarna för HTTPS-webbplatsen:
    $ a2ensite default-ssl
  3. Nu redigerar 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, Ă€r namnen pĂ„ parametrarna nĂ€stan identiska med namnen pĂ„ parametrarna i nginx, sĂ„ jag kommer inte att förklara dem. Återigen, för dem som Ă€r intresserade av detaljer — vĂ€lkomna till dokumentationen.
    Nu startar vi om vÄr server:

    $ service apache2 reload
    $ service apache2 restart

  4. Som du kan se, att stÀlla in tvÄfaktorsautentisering pÄ vilken webbserver som helst, bÄde Windows och Linux, tar högst en timme. Och konfigurationen av webblÀsare tar cirka 5 minuter. MÄnga anser att instÀllningen och arbetet med tvÄfaktorsautentisering Àr komplicerat och otydligt. Jag hoppas att vÄr artikel Ätminstone delvis avfÀrdar denna myt.

Endast registrerade anvÀndare kan delta i omröstningen. Logga in, tack.

Behöver du en instruktion för att stÀlla in TLS med certifikat baserat pÄ GOST 34.10-2012:

  • Ja, TLS-GOST Ă€r mycket behövligt

  • Nej, instĂ€llningen med GOST-algoritmer Ă€r inte intressant

44 anvÀndare röstade. 9 anvÀndare avstod.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster