Hitelesítés SmartCard-dal jelszó helyett/mellett

Van nekem ez a kulcskarikám amiről régebben is írtam: http://hup.hu/node/142206
Arra gondoltam milyen jó lenne, ha bejelentkezéskor is ezzel hitelesíteném magam és ehhez csináltam egy leírást.
Persze akinek nem pont olyan eszköze van mint nekem, viszont ugyanazzal a driverrel megy, ő is hasznát veheti az írásomnak.

Jelenleg még teszt alatt van ez a megoldás, vagyis a jelszavas hitelesítés is be van kapcsolva. Próbálgatom, hogy az ötletem gyakorlatban mennyire korlátoz a kényelmességben, vannak e bugok, és hogy mik azok a "trükkök" amiket nem árt tudni.
Ha beválik, az a tervem, hogy a jelszóval való hitelesítést ki is kapcsolom.

Negatívumként két dolgot találtam egyelőre:
- Ha hitelesíteni akarok, ahhoz értelem szerűen kell az eszköz. Vagyis el kell mászni érte a szoba másik végére. Persze ez azért vállalható. :)
- Ha több tanúsítvány volt az eszközön, akkor nem működött a hitelesítés. Lehet én rontottam el valamit a generálásnál, szóval lehet nincs is ilyen hiba.

Ha továbbra is érdekel, nézzük a leírást:
----------------------
Generálunk egy privát kulcsot (az [aa] egy szám amit később is használnunk kell)

$ pkcs15-init -G rsa/2048 --auth-id aa --label "Pelda_Private" --public-key-label "Pelda_Public"

A privát kulcs id-je a fontos, ezt másoljuk ki valahova.

$ pkcs15-tool --dump

Nézzük meg a slot számát [ff], és ezt is másoljuk ki.
$ pkcs11-tool --list-slots --module opensc-pkcs11.so

Feltelepítjük az openssl-hez szükséges csomagokat
# apt-get install libengine-pkcs11-openssl

indítunk egy openssl-t
$ openssl
> engine dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:opensc-pkcs11.so

legeneráljuk a tanúsítványt a common name legyen a felhasználó nevünk, az id a privát kulcs id-je [zzzz] a slot [ff] pedig amit az előbb megnéztünk.

> req -new -x509 -days 730 -keyform engine -engine pkcs11 -key slot_ff-id_zzzz -out pelda.cert.pem

Rámásoljuk a tanúsítványt a kártyára (az [aa] az rsa kulcs id-je)

$ pkcs15-init -X pelda.cert.pem --auth-id aa --id zzzz --format pem

Feltelepítjük a szükséges csomagokat a hitelesítéshez.

$ apt-get install libpam-pkcs11

létrehozzuk a config mappát

# mkdir /etc/pam_pkcs11

bemásoljuk a conf fájlt a helyére

# zcat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.example.gz | sudo tee /etc/pam_pkcs11/pam_pkcs11.conf

A konfigban az alábbi átállítások szükségesek

use_pkcs11_module = opensc;
use_mappers = pwent;

létrehozzuk a mappákat
# mkdir /etc/pam_pkcs11/cacerts /etc/pam_pkcs11/crls

Bemásoljuk a tanúsítványt helyére.
# cd /etc/pam_pkcs11/cacerts

# cp /home/pelda_user/pelda.cert.pem ./

# pkcs11_make_hash_link

TESZT
-----------

# vim /etc/pam.d/sudo

az auth-ok elé beszúrjuk ezt

auth sufficient pam_pkcs11.so

nyitunk egy új terminált (a régit nem zárjuk be!!!!)

$ sudo -i

valszeg kéri a pin kódot és ha mindent jól csináltunk vissza kapjuk a root promptot

-----------------
ha minden működik próbáljuk ki a bejelentkezést is
# vim /etc/pam.d/common-auth

az auth-ok elé szúrjuk be ezt a sort

auth [success=3 default=ignore] pam_pkcs11.so

Források:
---------
http://ubuntuforums.org/showthread.php?t=1557180

Hozzászólások

SSH esetén nem észlelsz lassulást? Cégnél használunk Aladdin tokeneket. Ha ezzel megyek be a rendszerbe, jóval lassabb a kommunikáció, villog is a kütyü, mint a veszedelem.