ProHoster > Blog > Adminisztráció > 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
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
Telepítés:
$ apt-get install xca
És futunk:
$ xca
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.
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.
Adjon nevet az új kulcspárnak. Én CA kulcsnak hívtam.
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.
Mindenképpen válassz SHA-256, mert az SHA-1 használata már nem tekinthető biztonságosnak.
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.
A lapon Tárgy válassza ki a kulcspárunkat. Itt kitöltheti a tanúsítvány összes főbb mezőjét.
Kulcsok és https szervertanúsítvány létrehozása
Hasonló módon készítünk egy RSA-2048 privát kulcsot a szerverhez, én ezt szerverkulcsnak neveztem el.
Tanúsítvány létrehozásakor azt választjuk, hogy a szervertanúsítványt CA tanúsítvánnyal kell aláírni.
Ne felejtsen el kiválasztani SHA-256.
Sablonként választunk [alapértelmezett] HTTPS_szerver. Kattintson Az összes alkalmazása.
Aztán a lapon Tárgy válassza ki kulcsunkat, és töltse ki a szükséges mezőket.
Hozzon létre kulcsokat és tanúsítványt a felhasználó számára
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.
Ú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ó.
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.
Kulcstípusként az RSA-2048 kulcsot választjuk a Rutoken EDS PKI-hez. Ezt a kulcsot ügyfélkulcsnak hívtam.
Írja be a PIN kódot. És várjuk a kulcspár hardvergenerálásának befejezését
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.
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.
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:
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ű.
Próbáljunk meg először token nélkül bejelentkezni. Ezt a képet kapjuk:
Menj about: preferenciák # adatvédelmi, és megyünk Biztonsági eszközök…
Megnyomjuk Terhelésegy új PKCS#11 eszközillesztő hozzáadásához, és adja meg a librtpkcs11ecp.so elérési útját.
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.
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.
PROFIT!
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:
Először aktiválnia kell a mod_ssl-t:
$ a2enmod ssl
Ezután engedélyezze a webhely alapértelmezett HTTPS-beállításait:
$ a2ensite default-ssl
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
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