Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux

Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux
В en av våra tidigare artiklar vi pratade om vikten av tvåfaktorsautentisering på företagsportaler för företag. Förra gången visade vi hur man ställer in säker autentisering i IIS-webbservern.

I kommentarerna ombads vi att skriva instruktioner för de vanligaste webbservrarna för Linux - nginx och Apache.

Du frågade - vi skrev.

Vad behöver du för att komma igång?

  • Vilken modern Linux-distribution som helst. Jag gjorde en testinstallation på MX Linux 18.2_x64. Detta är naturligtvis inte en serverdistribution, men det är osannolikt att det finns några skillnader för Debian. För andra distributioner kan sökvägarna till konfigurationsbiblioteken skilja sig något.
  • Tecken. Vi fortsätter att använda modellen Rutoken EDS PKI, vilket är idealiskt när det gäller hastighetsegenskaper för företagsbruk.
  • För att arbeta med en token i Linux måste du installera följande paket:
    libccid libpcsclite1 pcscd pcsc-verktyg öppnas

Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux

Utfärdande av certifikat

I tidigare artiklar förlitade vi oss på det faktum att server- och klientcertifikat kommer att utfärdas med Microsoft CA. Men eftersom vi ställer in allt i Linux kommer vi också att berätta om ett alternativt sätt att utfärda dessa certifikat - utan att lämna Linux.
Vi kommer att använda XCA som CA (https://hohnstaedt.de/xca/), som är tillgänglig på alla moderna Linux-distributioner. Alla åtgärder som vi kommer att utföra i XCA kan utföras i kommandoradsläge med hjälp av verktygen OpenSSL och pkcs11, men för större enkelhet och tydlighet kommer vi inte att presentera dem i den här artikeln.

Komma igång

  1. Installera:
    $ apt-get install xca
  2. Och vi kör:
    $ xca
  3. Vi skapar vår databas för CA - /root/CA.xdb
    Vi rekommenderar att du lagrar certifikatutfärdarens databas i en mapp där endast administratören har åtkomst. 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 rot-CA-certifikat

En publik nyckelinfrastruktur (PKI) är baserad på ett hierarkiskt system. Huvudsaken i detta system är rotcertifieringsmyndigheten eller rot-CA. Dess certifikat måste skapas först.

  1. Vi skapar en RSA-2048 privat nyckel för CA. För att göra detta, på fliken Privata nycklar skjuta på New Key och välj lämplig typ.
  2. Ange ett namn för det nya nyckelparet. Jag kallade den CA Key.
  3. Vi utfärdar själva CA-certifikatet med hjälp av det skapade nyckelparet. För att göra detta, gå till fliken Certifikat och klicka Nytt certifikat.
  4. Se till att välja SHA-256, eftersom användning av SHA-1 inte längre kan anses vara säker.
  5. Se till att välja som mall [standard]CA. Glöm inte att klicka på Tillämpa alla, annars tillämpas inte mallen.
  6. I fliken Ämne välj vårt nyckelpar. Där kan du fylla i alla huvudfält i certifikatet.

Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux

Skapar nycklar och ett https-servercertifikat

  1. På liknande sätt skapar vi en RSA-2048 privat nyckel för servern, jag kallade den Server Key.
  2. När vi skapar ett certifikat väljer vi att servercertifikatet ska signeras med ett CA-certifikat.
  3. Glöm inte att välja SHA-256.
  4. Vi väljer som mall [standard] HTTPS_server. Klicka på Tillämpa alla.
  5. Sedan på fliken Ämne välj vår nyckel och fyll i de obligatoriska fälten.

Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux

Skapa nycklar och certifikat för användaren

  1. Användarens privata nyckel kommer att lagras på vår token. För att arbeta med det måste du installera PKCS#11-biblioteket från vår webbplats. För populära distributioner delar vi ut färdiga paket, som finns här - https://www.rutoken.ru/support/download/pkcs/. Vi har även monteringar för arm64, armv7el, armv7hf, e2k, mipso32el, som kan laddas ner från vår SDK - https://www.rutoken.ru/developers/sdk/. Förutom assemblies för Linux finns det även assemblies för macOS, freebsd och android.
  2. Lägger till en ny PKCS#11-leverantör till XCA. För att göra detta, gå till menyn Tillbehör till fliken PKCS#11-leverantör.
  3. Vi trycker på Lägg till och välj sökvägen till PKCS#11-biblioteket. I mitt fall är det usrliblibrtpkcs11ecp.so.
  4. Vi kommer att behöva en formaterad Rutoken EDS PKI-token. Ladda ner verktyget rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Vi genomför
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Vi väljer RSA-2048-nyckeln för Rutoken EDS PKI som nyckeltyp. Jag kallade den här nyckeln Client Key.

    Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux

  7. Ange PIN-koden. Och vi väntar på slutförandet av hårdvarugenereringen av nyckelparet

    Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux

  8. Vi skapar ett certifikat för användaren i analogi med servercertifikatet. Den här gången väljer vi en mall [standard] HTTPS_client och glöm inte att klicka Tillämpa alla.
  9. I fliken Ämne ange information om användaren. Vi svarar jakande på begäran om att spara certifikatet för token.

Som ett resultat, på fliken Certifikat i XCA borde du få något sånt här.

Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux
Denna minsta uppsättning nycklar och certifikat räcker för att börja konfigurera själva servrarna.

För att konfigurera måste vi exportera CA-certifikatet, servercertifikatet och serverns privata nyckel.

För att göra detta, välj önskad post på motsvarande flik i XCA och klicka Exportera.

nginx

Jag kommer inte att skriva hur man installerar och kör en nginx-server - det finns tillräckligt med artiklar om detta ämne på Internet, för att inte tala om den officiella dokumentationen. Låt oss gå direkt till att ställa in HTTPS och tvåfaktorsautentisering med hjälp av en token.

Lägg till följande rader till 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 detaljerad beskrivning av alla parametrar relaterade till att konfigurera ssl i nginx finns här - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Jag ska bara kort beskriva de jag frågade mig själv:

  • ssl_verify_client - anger att förtroendekedjan för certifikatet måste verifieras.
  • ssl_verify_depth - Definierar sökdjupet för det betrodda rotcertifikatet i kedjan. Eftersom vårt klientcertifikat omedelbart signeras på rotcertifikatet sätts djupet till 1. Om användarcertifikatet är signerat på en mellanliggande CA måste 2 anges i den här parametern, och så vidare.
  • ssl_client_certificate - anger sökvägen till det betrodda rotcertifikatet, som används vid kontroll av förtroende för användarens certifikat.
  • ssl_certificate/ssl_certificate_key - ange sökvägen till servercertifikatet/privata nyckeln.

Glöm inte att köra nginx -t för att kontrollera att det inte finns några stavfel i konfigurationen, och att alla filer är på rätt plats, och så vidare.

Och det är allt! Som du kan se är inställningen väldigt enkel.

Kontrollerar att det fungerar i Firefox

Eftersom vi gör allting helt och hållet i Linux kommer vi att anta att våra användare även arbetar i Linux (om de har Windows alltså se instruktioner för att ställa in webbläsare i föregående artikel.

  1. Låt oss starta Firefox.
  2. Låt oss försöka logga in utan token först. Vi får den här bilden:

    Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux

  3. Låt oss gå till ca: preferenser # integritet, och vi går till Säkerhetsenheter...
  4. Vi trycker på Laddaför att lägga till en ny PKCS#11-enhetsdrivrutin och ange sökvägen till vår librtpkcs11ecp.so.
  5. För att kontrollera att certifikatet är synligt kan du gå till Certificate Manager. Du kommer att bli ombedd att ange din PIN-kod. Efter korrekt inmatning kan du kontrollera vad som finns på fliken Dina certifikat vårt certifikat från token dök upp.
  6. Låt oss nu gå med token. Firefox uppmanar dig att välja ett certifikat som kommer att väljas för servern. Välj vårt certifikat.

    Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux

  7. VINST!

    Tvåfaktorsautentisering på webbplatsen med en USB-token. Nu även för Linux

Inställningen görs en gång, och som du kan se i certifikatförfrågningsfönstret kan vi spara vårt val. Efter detta, varje gång vi loggar in på portalen, behöver vi bara infoga en token och ange användarens PIN-kod som angavs under formateringen. Efter sådan autentisering vet servern redan vilken användare som har loggat in och du kan inte längre skapa några ytterligare fönster för verifiering, utan omedelbart släppa in användaren på sitt personliga konto.

Apache

Precis som med nginx bör ingen ha några problem med att installera apache. Om du inte vet hur man installerar den här webbservern, använd bara den officiella dokumentationen.

Och vi börjar ställa in vår HTTPS och tvåfaktorsautentisering:

  1. Först måste du aktivera mod_ssl:
    $ a2enmod ssl
  2. Och aktivera sedan webbplatsens standard HTTPS-inställningar:
    $ 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, sammanfaller namnen på parametrarna praktiskt taget med namnen på parametrarna i nginx, så jag kommer inte att förklara dem. Återigen, alla som är intresserade av detaljerna är välkomna till dokumentationen.
    Nu startar vi om vår server:

    $ service apache2 reload
    $ service apache2 restart

  4. Som du kan se tar det högst en timme att ställa in tvåfaktorsautentisering på vilken webbserver som helst, oavsett om det är på Windows eller Linux. Och att installera webbläsare tar cirka 5 minuter. Många tycker att det är svårt och otydligt att sätta upp och arbeta med tvåfaktorsautentisering. Jag hoppas att vår artikel avslöjar denna myt, åtminstone lite.

Endast registrerade användare kan delta i undersökningen. Logga in, Snälla du.

Behöver du instruktioner för att ställa in TLS med certifikat enligt GOST 34.10-2012:

  • Ja, TLS-GOST är mycket nödvändigt

  • Nej, att ställa in med GOST-algoritmer är inte intressant

44 användare röstade. 9 användare avstod från att rösta.

Källa: will.com

Lägg en kommentar