Hogyan használj PAM-modulokat helyi hitelesítéshez Linux alatt a GOST-2012 kulcsokkal a RUTOKEN-en

Hogyan használj PAM-modulokat helyi hitelesítéshez Linux alatt a GOST-2012 kulcsokkal a RUTOKEN-en

Az egyszerű jelszavak nem védenek, míg a bonyolultak nehezen megjegyezhetők. Ezért gyakran a billentyűzet alatt vagy a monitoron végzik. Annak érdekében, hogy a „feledékeny” felhasználók fejében maradjanak a jelszavak, és a védelem megbízhatósága ne csorbuljon, létezik a kétfaktoros hitelesítés (2FA).

A készülék birtoklásának és a PIN-kód ismeretének kombinációja lehetővé teszi, hogy a PIN-kód egyszerűbb és könnyebben megjegyezhető legyen. A PIN-kód hosszának vagy véletlenszerűségének hiányosságait a fizikai birtoklás követelménye és a PIN-kód megadására vonatkozó korlátozások kompenzálják.

Ezen kívül az állami intézményekben előfordul, hogy azt akarják, hogy minden a GOST szerint működjön. Erről a 2FA megoldásról a Linuxba való belépéshez fogok beszélni. Messziről kezdem.

PAM-modulok

Az autentikációs modulok (Pluggable Authentication Modules, PAM) egy szabványos API-val rendelkező modulok, amelyek különféle autentikációs mechanizmusokat valósítanak meg az alkalmazásokban.
Minden olyan segédprogram és alkalmazás, amely képes PAM-mal dolgozni, átveszi őket, és felhasználhatja a felhasználó hitelesítésére.
A gyakorlatban ez körülbelül így működik: a login parancs a PAM-hoz fordul, amely végrehajtja az összes szükséges ellenőrzést a konfigurációs fájlban megadott modulok segítségével, és visszaadja az eredményt a login parancsnak.

librtpam

Az "Aktív" cég által kifejlesztett modul kétfaktoros hitelesítést ad a felhasználók számára okoskártyák vagy USB-tokenek segítségével, aszimmetrikus kulcsokkal, a legújabb belföldi kriptográfiai szabványok szerint.

Vegyük szemügyre a működési elvét:

  • a tokenen a felhasználó tanúsítványa és a privát kulcsa található;
  • a tanúsítvány a felhasználó otthoni könyvtárában hitelesítettként van mentve.

A hitelesítési folyamat a következőképpen zajlik:

  1. A Rootokenen a felhasználó személyes tanúsítványát keresik.
  2. A token PIN-kódját kérik.
  3. A véletlenszerű adatok aláírása a privát kulccsal közvetlenül a Rootoken chipjén történik.
  4. Az így kapott aláírást a felhasználó tanúsítványában található nyilvános kulcs segítségével ellenőrzik.
  5. A modul visszaadja az aláírás ellenőrzésének eredményét a hívó alkalmazásnak.

A GOST R 34.10-2012 (256 vagy 512 bites hosszúságú) vagy elavult GOST R 34.10-2001 szabvány szerint lehet hitelesíteni.

A kulcsok biztonsága miatt nem kell aggódni – azok közvetlenül a Rutokenben generálódnak, és soha nem hagyják el annak memóriáját a kriptográfiai műveletek során.

Hogyan használj PAM-modulokat helyi hitelesítéshez Linux alatt a GOST-2012 kulcsokkal a RUTOKEN-en

A Rutoken ECP 2.0 tanúsítva van az FSB és az FSTEK által az NDV 4 szerint, ezért használható olyan információs rendszerekben, amelyek bizalmas információkat dolgoznak fel.

Gyakorlati használat

Gyakorlatilag bármilyen modern Linux megfelelő, például a xUbuntu 18.10-et fogjuk használni.

1) Telepítjük a szükséges csomagokat

sudo apt-get install libccid pcscd opensc
Ha szeretnék a képernyővédővel letiltani a munkafelületet, akkor további csomagot kell telepíteni libpam-pkcs11.

2) Hozzáadjuk a PAM modult a GOST támogatással

Betöltjük a könyvtárat a https://download.rutoken.ru/Rutoken/PAM/
A PAM librtpam.so.1.0.0 mappájának tartalmát átmásoljuk a rendszer mappájába
/usr/lib/ vagy /usr/lib/x86_64-linux-gnu/vagy /usr/lib64

3) Telepítjük a librtpkcs11ecp.so csomagot

Letöltjük és telepítjük a DEB- vagy RPM-csomagot a következő linken: https://www.rutoken.ru/support/download/pkcs/

4) Ellenőrizzük, hogy a Rutoken ECP 2.0 működik-e a rendszerben

A terminálban végrehajtjuk
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ha a következő sort látja: Rutoken ECP – akkor minden jól van.

5) Kiolvassuk a tanúsítványt

Ellenőrizzük, hogy a készüléken van-e tanúsítvány
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ha a következő sor után:
Using slot 0 with a present token (0x0)

  • információ jelenik meg a kulcsokról és a tanúsítványokról, akkor szükséges a tanúsítványt kiolvasni és a lemezre menteni. Ehhez hajtsa végre a következő parancsot, ahol a {id} helyére a korábbi parancs kimenetében látott tanúsítvány azonosítót kell behelyettesíteni:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Ha a cert.crt fájl létrejött, lépjen a 6. pontra.
  • nincs semmi, akkor a készülék üres. Kérjük, lépjen kapcsolatba a rendszeradminisztrátorral, vagy hozzon létre kulcsokat és tanúsítványt önállóan a következő lépés szerint.

5.1) Létrehozunk egy teszt tanúsítványt

Figyelem! A kulcsok és tanúsítványok létrehozásának leírt módjai tesztelésre alkalmasak, és nem a valós üzemmódban való alkalmazásra. Ehhez megbízható tanúsítványkiadó központ által kiadott kulcsokat és tanúsítványokat kell használni, vagy akkreditált hitelesítő központot.
A PAM-modul célja a helyi számítógépek védelme és a kis szervezetekben való működés. Mivel a felhasználók száma csekély, az adminisztrátor magának is ellenőrizheti a tanúsítványok visszavonását, és manuálisan blokkolhatja a fiókokat, akárcsak a tanúsítványok érvényességi idejét. A PAM-modul jelenleg nem tud tanúsítványokat ellenőrizni a CRL-en és nem tudja felépíteni a bizalmi láncokat.

Egyszerű út (böngészőn keresztül)

A teszt tanúsítvány megszerzéséhez használja a «RUTOKEN Regisztrációs Központ» webszolgáltatást. A folyamat legfeljebb 5 percet vesz igénybe.

Geek út (terminálon és lehet, hogy fordítón keresztül)

Ellenőrizze az OpenSC verzióját
$ opensc-tool --version
Ha a verzió kisebb mint 0.20, frissítse vagy fordítsa le a pkcs11-tool ágat GOST-2012 támogatással a GitHub-unkból (cikkünk megjelenésekor a 0.20-as kiadás még nem jelent meg) vagy a fő OpenSC projekt master ága felől legkésőbb 8cf1e6f commit előtt

Kulcs pár generálása a következő paraméterekkel:
--key-type: GOSTR3410-2012-512:A (GOST-2012 512 bit A paraméterekkel), GOSTR3410-2012-256:A (GOST-2012 256 bit A paraméterekkel)

--id: a CKA_ID objektum azonosító, hex-formátumban két karakter számjegy. Csak nyomtatható karakterek ASCII kódjait használja, mivel az id-t az OpenSSL-nek stringként kell átadni. Például az ASCII számkódok “3132” felel meg a «12» stringnek. A kényelem érdekében használható online string ASCII kódokká alakító szolgáltatás.

$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132

Ezután tanúsítványt fogunk létrehozni. Két utat fogunk leírni: az első az Ügyfélkapu (teszt Ügyfélkapuval fogunk dolgozni), a második – az önaláírt tanúsítvány. Ehhez először telepítenie és be kell állítania az OpenSSL 1.1 vagy újabb verziót a RUTOKEN használatához a rtengine külön modulján keresztül, az útmutató használatával. OpenSSL telepítése és beállítása.
Például: az '--id 3132' megadásához az OpenSSL-ben «pkcs11:id=12«.

Használhatja a sok teszt Ügyfélkapu egyikét, például itt van, itt van és itt van, ehhez tanúsítványkérelmet fogunk benyújtani

A másik lehetőség – lehet lazítani és létrehozni egy önaláírt tanúsítványt.
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Töltsük fel a tanúsítványt az eszközre.
$ openssl req -utf8 -x509 -keyform motor -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Regisztrálja a tanúsítványt a rendszerben.

Győződjön meg arról, hogy tanúsítványa base64 fájl formátumú:

Hogyan használj PAM-modulokat helyi hitelesítéshez Linux alatt a GOST-2012 kulcsokkal a RUTOKEN-en

Ha a tanúsítványa így néz ki:

Hogyan használj PAM-modulokat helyi hitelesítéshez Linux alatt a GOST-2012 kulcsokkal a RUTOKEN-en

akkor a tanúsítványt át kell konvertálni DER formátumból PEM formátumba (base64)

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Ismét ellenőrizzük, hogy most minden rendben van.

Hozzáadunk egy tanúsítványt a megbízható tanúsítványok listájához
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Az utolsó sor megvédi a megbízható tanúsítványok listáját a véletlenszerű vagy szándékos módosításoktól más felhasználók által. Ez kizárja annak lehetőségét, hogy valaki ide beillesztse a saját tanúsítványát, és így a nevünkben belépjen a rendszerbe.

7) Hitelesítés beállítása

A PAM modulunk beállítása teljesen standard, és pontosan úgy történik, mint a többi modul beállítása. Készítsük el a fájlt /usr/share/pam-configs/rutoken-gost-pam , amely tartalmazza a modul teljes nevét, hogy alapértelmezettként engedélyezve van-e, a modul prioritását és a hitelesítési paramétereket.
A hitelesítési paraméterek tartalmazzák a művelet sikerességéhez szükséges követelményeket:

  • required (kötelező): az ilyen moduloknak pozitív választ kell adniuk. Ha a modul hívásának eredménye negatív választ tartalmaz, akkor az hitelesítési hibához vezet. A kérés törlésre kerül, de a többi modul hívva lesz.
  • requisite (szükséges): hasonló a required-hoz, de azonnal hitelesítési hibához vezet, és figyelmen kívül hagyja a többi modult.
  • sufficient (megfelelő): ha ilyen modul előtt egyik required vagy sufficient modul sem adott negatív eredményt, akkor a modul pozitív választ fog adni. A többi modult figyelmen kívül hagyják.
  • optional (opcionális): ha a veremben nincsenek required modulok, és egyik sufficient modul sem adott pozitív eredményt, akkor legalább egy optional modulnak pozitív választ kell adnia.

A fájl teljes tartalma /usr/share/pam-configs/rutoken-gost-pam:
Név: Rutoken PAM GOST
Alapértelmezett: igen
Prioritás: 800
Auth-Típus: Elsődleges
Auth: elegendő /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so

Hogyan használj PAM-modulokat helyi hitelesítéshez Linux alatt a GOST-2012 kulcsokkal a RUTOKEN-en

mentjük a fájlt, majd végrehajtjuk
$ sudo pam-auth-update
a megjelenő ablakban helyezzünk csillagot a Rutoken PAM GOST mellett, majd kattintsunk OK

Hogyan használj PAM-modulokat helyi hitelesítéshez Linux alatt a GOST-2012 kulcsokkal a RUTOKEN-en

8) A beállítás ellenőrzése

A beállítás ellenőrzéséhez, de anélkül, hogy elveszítenénk a belépés lehetőségét, írjuk be a parancsot
$ sudo login
Adja meg a felhasználónevet. Ha a rendszer kérni fogja az eszköz PIN-kódját, a beállítás helyes.

Hogyan használj PAM-modulokat helyi hitelesítéshez Linux alatt a GOST-2012 kulcsokkal a RUTOKEN-en

9) A számítógép letiltása a token eltávolításakor

A csomag tartalmazza a libpam-pkcs11 eszközt, pkcs11_eventmgr, amely lehetővé teszi különféle műveletek végrehajtását PKCS#11 események bekövetkeztekor.
A beállításhoz A pkcs11_eventmgr konfigurációs fájlja: /etc/pam_pkcs11/pkcs11_eventmgr.conf
A különböző Linux disztribúciók esetében a parancs, amely letiltja a fiókot a smart card vagy token eltávolításakor, eltérő lesz. Lásd: event card_remove.
Az alábbi példaként szolgáló konfigurációs fájl:

pkcs11_eventmgr
{
    # Háttérben való futtatás
    daemon = true;
     
    # Hibaüzenetek beállítása
    debug = false;
 
    # Lekérdezési idő másodpercekben
    polling_time = 1;
 
    # Kártya törlési időtúllépés beállítása
    # Alapértelmezett 0
    expire_time = 0;
 
    # A pkcs11 könyvtár kiválasztása a Rütoken kezeléséhez
    pkcs11_module = usr/lib/librtpkcs11ecp.so;
 
    # Akciók a kártyával
    # Kártya behelyezve:
    event card_insert {
        # Alapértelmezett értékek megőrzése (nincs tevékenység)
        on_error = ignore;
 
        action = "/bin/false";
    }
 
    # Kártya eltávolítva
    event card_remove {
        on_error = ignore;
         
        # A képernyőzár funkció hívása
        
        # GNOME esetén
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
        
        # XFCE esetén
        # action = "xflock4";
        
        # Astra Linux esetén (FLY)
        # action = "fly-wmfunc FLYWM_LOCK";
    }
 
    # Kártya hosszú ideig eltávolítva
    event expire_time {
        # Alapértelmezett értékek megőrzése (nincs tevékenység)
        on_error = ignore;
 
        action = "/bin/false";
    }
}

Ezután adja hozzá az alkalmazást A pkcs11_eventmgr az automatikus indításhoz. Ehhez szerkessze a .bash_profile fájlt:
$ nano /home/<felhasználónév>/.bash_profile
Adjon hozzá a fájl végéhez egy pkcs11_eventmgr sort, majd indítsa újra a gépet.

A leírt lépések a működési rendszer beállításához bármely modern Linux disztribúcióban alkalmazhatóak, beleértve a hazai megoldásokat is.

Hogyan használj PAM-modulokat helyi hitelesítéshez Linux alatt a GOST-2012 kulcsokkal a RUTOKEN-en

Zárás

A Linux PC-k a orosz állami intézményekben egyre népszerűbbek, és nem mindig könnyű megbízható kétfaktoros hitelesítést beállítani ebben az operációs rendszerben. Ezzel az útmutatóval örömmel segítünk megoldani a "jelszavak problémáját" és biztonságosan védjük a PC-hez való hozzáférést, nem költve rá sok időt.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster