Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is

Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is
В egyik korábbi cikkünk a kéttényezős hitelesítés fontosságáról beszélgettünk a cégek vállalati portáljain. Legutóbb bemutattuk, hogyan állíthatunk be biztonságos hitelesítést az IIS webszerveren.

A megjegyzésekben arra kértek minket, hogy írjunk utasításokat a Linux legelterjedtebb webszervereire - nginx és Apache.

Kérted – írtuk.

Mi kell az induláshoz?

  • Bármilyen modern Linux disztribúció. Tesztbeállítást végeztem az MX Linux 18.2_x64 rendszeren. Ez természetesen nem kiszolgálói disztribúció, de nem valószínű, hogy a Debian esetében különbségek lesznek. Más disztribúciók esetén a konfigurációs könyvtárak elérési útja kissé eltérhet.
  • Jelképes. Továbbra is használjuk a modellt Rutoken EDS PKI, amely sebességi jellemzőit tekintve ideális vállalati használatra.
  • A token használatához Linuxban telepítenie kell a következő csomagokat:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is

Tanúsítványok kiállítása

Korábbi cikkeinkben arra hivatkoztunk, hogy a szerver- és ügyféltanúsítványok kiadása a Microsoft CA segítségével történik. De mivel mindent Linuxon állítunk be, egy másik módot is elmondunk ezeknek a tanúsítványoknak a kiadására – anélkül, hogy elhagynánk a Linuxot.
Az XCA-t CA-ként fogjuk használni (https://hohnstaedt.de/xca/), amely bármely modern Linux disztribúción elérhető. Az XCA-ban végrehajtott összes művelet végrehajtható parancssori módban az OpenSSL és a pkcs11-tool segédprogramok segítségével, de a nagyobb egyszerűség és áttekinthetőség érdekében ebben a cikkben nem mutatjuk be őket.

Az első lépések

  1. Telepítés:
    $ apt-get install xca
  2. És futunk:
    $ xca
  3. Létrehozzuk adatbázisunkat a CA - /root/CA.xdb számára
    Javasoljuk, hogy a tanúsító hatóság adatbázisát olyan mappában tárolja, amelyhez csak a rendszergazda férhet hozzá. Ez fontos a gyökértanúsítványok privát kulcsainak védelme érdekében, amelyek az összes többi tanúsítvány aláírására szolgálnak.

Hozzon létre kulcsokat és gyökér CA-tanúsítványt

A nyilvános kulcsú infrastruktúra (PKI) hierarchikus rendszeren alapul. Ebben a rendszerben a legfontosabb a gyökér hitelesítési hatóság vagy a gyökér CA. Először létre kell hozni a tanúsítványát.

  1. Létrehozunk egy RSA-2048 privát kulcsot a CA számára. Ehhez a lapon Saját kulcsok nyom Új kulcs és válassza ki a megfelelő típust.
  2. Adjon nevet az új kulcspárnak. Én CA kulcsnak hívtam.
  3. Magát a CA-tanúsítványt adjuk ki, a létrehozott kulcspár használatával. Ehhez lépjen a lapra tanúsítványok és nyomja Új tanúsítvány.
  4. Mindenképpen válassz SHA-256, mert az SHA-1 használata már nem tekinthető biztonságosnak.
  5. Feltétlenül válasszon sablonnak [alapértelmezett] CA. Ne felejts el rákattintani Az összes alkalmazása, ellenkező esetben a sablon nem kerül alkalmazásra.
  6. A lapon Tárgy válassza ki a kulcspárunkat. Itt kitöltheti a tanúsítvány összes főbb mezőjét.

Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is

Kulcsok és https szervertanúsítvány létrehozása

  1. Hasonló módon készítünk egy RSA-2048 privát kulcsot a szerverhez, én ezt szerverkulcsnak neveztem el.
  2. Tanúsítvány létrehozásakor azt választjuk, hogy a szervertanúsítványt CA tanúsítvánnyal kell aláírni.
  3. Ne felejtsen el kiválasztani SHA-256.
  4. Sablonként választunk [alapértelmezett] HTTPS_szerver. Kattintson Az összes alkalmazása.
  5. Aztán a lapon Tárgy válassza ki kulcsunkat, és töltse ki a szükséges mezőket.

Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is

Hozzon létre kulcsokat és tanúsítványt a felhasználó számára

  1. A felhasználó privát kulcsát a tokenünk tárolja. A használatához telepítenie kell a PKCS#11 könyvtárat a webhelyünkről. A népszerű disztribúciókhoz kész csomagokat forgalmazunk, amelyek itt találhatók - https://www.rutoken.ru/support/download/pkcs/. Vannak szerelvényeink az arm64, armv7el, armv7hf, e2k, mipso32el számára is, amelyek letölthetők az SDK-nkból - https://www.rutoken.ru/developers/sdk/. A Linux-összeállításokon kívül macOS-hez, freebsd-hez és androidhoz is vannak szerelvények.
  2. Új PKCS#11 szolgáltató hozzáadása az XCA-hoz. Ehhez lépjen a menübe Opciók a lapra PKCS#11 Szolgáltató.
  3. Megnyomjuk hozzáad és válassza ki a PKCS#11 könyvtár elérési útját. Az én esetemben ez az usrliblibrtpkcs11ecp.so.
  4. Szükségünk lesz egy formázott Rutoken EDS PKI tokenre. Töltse le az rtAdmin segédprogramot - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Végezzük
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Kulcstípusként az RSA-2048 kulcsot választjuk a Rutoken EDS PKI-hez. Ezt a kulcsot ügyfélkulcsnak hívtam.

    Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is

  7. Írja be a PIN kódot. És várjuk a kulcspár hardvergenerálásának befejezését

    Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is

  8. A szervertanúsítványhoz hasonlóan létrehozunk egy tanúsítványt a felhasználó számára. Ezúttal egy sablont választunk [alapértelmezett] HTTPS_client és ne felejts el kattintani Az összes alkalmazása.
  9. A lapon Tárgy adjon meg információkat a felhasználóról. Igennel válaszolunk arra a kérésre, hogy mentsük el a token tanúsítványát.

Ennek eredményeként a lapon bizonylatok az XCA-ban valami ilyesmit kellene kapnod.

Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is
Ez a minimális kulcs- és tanúsítványkészlet elegendő magának a szervernek a beállításához.

A konfiguráláshoz exportálnunk kell a CA-tanúsítványt, a szervertanúsítványt és a szerver privát kulcsát.

Ehhez válassza ki a kívánt bejegyzést az XCA megfelelő lapján, és kattintson a gombra Export.

nginx

Nem írom le, hogyan kell telepíteni és futtatni egy nginx szervert - elég cikk van erről a témáról az interneten, nem is beszélve a hivatalos dokumentációról. Térjünk rá közvetlenül a HTTPS és a kéttényezős hitelesítés token használatával történő beállítására.

Adja hozzá a következő sorokat az nginx.conf szerver szakaszához:

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

Az nginxben az ssl konfigurálásával kapcsolatos összes paraméter részletes leírása itt található - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Csak röviden leírom azokat, amelyeket magamnak kérdeztem:

  • ssl_verify_client – ​​megadja, hogy a tanúsítvány bizalmi láncát ellenőrizni kell.
  • ssl_verify_depth – Meghatározza a megbízható gyökértanúsítvány keresési mélységét a láncban. Mivel az ügyféltanúsítványunk azonnal aláíródik a gyökértanúsítványon, a mélység 1-re van állítva. Ha a felhasználói tanúsítványt egy köztes CA-n írták alá, akkor ebben a paraméterben 2-t kell megadni, és így tovább.
  • ssl_client_certificate – megadja a megbízható gyökértanúsítvány elérési útját, amelyet a rendszer a felhasználó tanúsítványába vetett bizalom ellenőrzésekor használ.
  • ssl_tanúsítvány/ssl_tanúsítvány_kulcs – adja meg a szervertanúsítvány/magánkulcs elérési útját.

Ne felejtse el futtatni az nginx -t parancsot, hogy ellenőrizze, nincsenek-e elírási hibák a konfigurációban, és minden fájl a megfelelő helyen van-e, és így tovább.

És ennyi! Amint látja, a beállítás nagyon egyszerű.

Ellenőrizze, hogy működik-e Firefoxban

Mivel mindent teljesen Linux alatt csinálunk, feltételezzük, hogy a felhasználóink ​​Linux alatt is dolgoznak (ha Windows van, akkor lásd az előző cikkben a böngészők beállítására vonatkozó utasításokat.

  1. Indítsuk el a Firefoxot.
  2. Próbáljunk meg először token nélkül bejelentkezni. Ezt a képet kapjuk:

    Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is

  3. Menj about: preferenciák # adatvédelmi, és megyünk Biztonsági eszközök…
  4. Megnyomjuk Terhelésegy új PKCS#11 eszközillesztő hozzáadásához, és adja meg a librtpkcs11ecp.so elérési útját.
  5. A tanúsítvány láthatóságának ellenőrzéséhez lépjen a címre tanúsítvány menedzser. A rendszer felkéri a PIN-kód megadására. A helyes bevitel után ellenőrizheti, hogy mi van a lapon Az Ön tanúsítványai megjelent a tokenből származó bizonyítványunk.
  6. Most menjünk a tokennel. A Firefox kéri, hogy válasszon ki egy tanúsítványt, amelyet a kiszolgáló számára kiválaszt. Válassza a tanúsítványunkat.

    Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is

  7. PROFIT!

    Kéttényezős hitelesítés a webhelyen USB-token segítségével. Most már Linuxra is

A beállítás egyszer megtörténik, és amint az a tanúsítványkérő ablakban látható, elmenthetjük a választásunkat. Ezt követően minden alkalommal, amikor bejelentkezünk a portálra, csak egy tokent kell behelyeznünk, és megadnunk a formázás során megadott felhasználói PIN kódot. Az ilyen hitelesítés után a szerver már tudja, hogy melyik felhasználó jelentkezett be, és már nem hozhat létre további ablakokat az ellenőrzéshez, hanem azonnal beengedi a felhasználót a személyes fiókjába.

Apache

Csakúgy, mint az nginx esetében, senkinek sem lehet problémája az apache telepítésével. Ha nem tudja, hogyan kell telepíteni ezt a webszervert, csak használja a hivatalos dokumentációt.

És elkezdjük a HTTPS és a kéttényezős hitelesítés beállítását:

  1. Először aktiválnia kell a mod_ssl-t:
    $ a2enmod ssl
  2. Ezután engedélyezze a webhely alapértelmezett HTTPS-beállításait:
    $ a2ensite default-ssl
  3. Most szerkesztjük a konfigurációs fájlt: /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

    Amint látható, a paraméterek neve gyakorlatilag egybeesik az nginx paramétereinek nevével, ezért nem magyarázom el őket. Ismételten mindenkit szeretettel várunk a dokumentációban, akit érdekelnek a részletek.
    Most újraindítjuk a szerverünket:

    $ service apache2 reload
    $ service apache2 restart

  4. Mint látható, a kétfaktoros hitelesítés beállítása bármely webszerveren, legyen az Windows vagy Linux, legfeljebb egy órát vesz igénybe. A böngészők beállítása pedig körülbelül 5 percet vesz igénybe. Sokan úgy gondolják, hogy a kétfaktoros hitelesítés beállítása és használata nehéz és nem egyértelmű. Remélem, cikkünk legalább egy kicsit megdönti ezt a mítoszt.

A felmérésben csak regisztrált felhasználók vehetnek részt. Bejelentkezés, kérem.

Szüksége van utasításokra a GOST 34.10-2012 szerinti tanúsítványokkal rendelkező TLS beállításához:

  • Igen, a TLS-GOST nagyon szükséges

  • Nem, a GOST-algoritmusokkal való hangolás nem érdekes

44 felhasználó szavazott. 9 felhasználó tartózkodott.

Forrás: will.com

Hozzászólás