Jednostavne lozinke nisu sigurne, a složene je nemoguće zapamtiti. Zato tako često završe na ceduljici ispod tipkovnice ili na monitoru. Kako bi se osiguralo da lozinke ostanu u glavama "zaboravnih" korisnika i da se pouzdanost zaštite ne izgubi, postoji dvofaktorska autentifikacija (2FA).
Zbog kombinacije posjedovanja uređaja i poznavanja njegovog PIN-a, sam PIN može biti jednostavniji i lakši za pamćenje. Nedostaci u duljini ili nasumičnosti PIN-a nadoknađuju se zahtjevom za fizičkim posjedovanjem i ograničenjima grube upotrebe PIN-a.
Osim toga, u državnim agencijama se događa da žele da sve radi prema GOST-u. Razgovarat ćemo o ovoj 2FA opciji za prijavu u Linux. Počet ću izdaleka.
PAM moduli
Pluggable Authentication Modules (PAM) su moduli sa standardnim API-jem i implementacijama različitih mehanizama provjere autentičnosti u aplikacijama.
Svi uslužni programi i aplikacije koje mogu raditi s PAM-om preuzimaju ih i mogu ih koristiti za autentifikaciju korisnika.
U praksi to funkcionira otprilike ovako: naredba za prijavu poziva PAM, koji obavlja sve potrebne provjere pomoću modula navedenih u konfiguracijskoj datoteci i vraća rezultat natrag naredbi za prijavu.
librtpam
Modul koji je razvila tvrtka Aktiv dodaje dvofaktorsku autentifikaciju korisnika pomoću pametnih kartica ili USB tokena pomoću asimetričnih ključeva prema najnovijim standardima domaće kriptografije.
Pogledajmo princip njegovog rada:
- Token pohranjuje korisnički certifikat i njegov privatni ključ;
- Certifikat se sprema u korisnikov kućni imenik kao pouzdan.
Proces autentifikacije odvija se na sljedeći način:
- Rutoken traži osobni certifikat korisnika.
- Zatražen je PIN tokena.
- Nasumični podaci potpisuju se na privatnom ključu izravno u Rutoken čipu.
- Dobiveni potpis se provjerava pomoću javnog ključa iz korisničkog certifikata.
- Modul vraća rezultat provjere potpisa pozivnoj aplikaciji.
Autentifikaciju možete izvršiti pomoću ključeva GOST R 34.10-2012 (dužine 256 ili 512 bita) ili zastarjelog GOST R 34.10-2001.
Ne morate brinuti o sigurnosti ključeva - oni se generiraju izravno u Rutokenu i nikada ne napuštaju njegovu memoriju tijekom kriptografskih operacija.
Rutoken EDS 2.0 je certificiran od strane FSB i FSTEC prema NDV 4, stoga se može koristiti u informacijskim sustavima koji obrađuju povjerljive informacije.
Praktična upotreba
Gotovo svaki moderni Linux će poslužiti, na primjer koristit ćemo xUbuntu 18.10.
1) Instalirajte potrebne pakete
sudo apt-get install libccid pcscd opensc
Ako želite dodati zaključavanje radne površine sa čuvarom zaslona, dodatno instalirajte paket libpam-pkcs11
.
2) Dodajte PAM modul s GOST podrškom
Učitavanje biblioteke iz
Kopirajte sadržaj PAM mape librtpam.so.1.0.0 u sistemsku mapu
/usr/lib/
ili /usr/lib/x86_64-linux-gnu/
ili /usr/lib64
3) Instalirajte paket s librtpkcs11ecp.so
Preuzmite i instalirajte DEB ili RPM paket sa poveznice:
4) Provjerite radi li Rutoken EDS 2.0 u sustavu
U terminalu izvršavamo
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Ako vidite crtu Rutoken ECP <no label>
- znači da je sve u redu.
5) Pročitajte potvrdu
Provjera ima li uređaj certifikat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Ako iza retka:
Using slot 0 with a present token (0x0)
- informacije se prikazuju o ključevima i certifikatima, trebate pročitati certifikat i spremiti ga na disk. Da biste to učinili, pokrenite sljedeću naredbu, gdje umjesto {id} trebate zamijeniti ID certifikata koji ste vidjeli u izlazu prethodne naredbe:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
Ako je datoteka cert.crt stvorena, prijeđite na korak 6). - Nema ničega, tada je uređaj prazan. Obratite se svom administratoru ili sami izradite ključeve i certifikat slijedeći sljedeći korak.
5.1) Izradite potvrdu o testiranju
Pažnja! Opisane metode za izradu ključeva i certifikata prikladne su za testiranje i nisu namijenjene za korištenje u borbenom načinu rada. Da biste to učinili, trebate koristiti ključeve i certifikate koje je izdalo pouzdano tijelo za izdavanje certifikata vaše organizacije ili ovlašteno tijelo za izdavanje certifikata.
PAM modul je dizajniran za zaštitu lokalnih računala i dizajniran je za rad u malim organizacijama. Budući da ima malo korisnika, Administrator može pratiti opoziv certifikata i ručno blokirati račune, kao i rok valjanosti certifikata. PAM modul još ne zna kako provjeriti certifikate pomoću CRL-ova i izgraditi lance povjerenja.
Jednostavan način (putem preglednika)
Za dobivanje potvrde o ispitivanju koristite
Štreberski način (putem konzole i eventualno kompajlera)
Provjerite verziju OpenSC-a
$ opensc-tool --version
Ako je verzija manja od 0.20, ažurirajte ili izgradite
Generirajte par ključeva sa sljedećim parametrima:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)
--id:
identifikator objekta (CKA_ID) kao dvoznamenkasti heksadecimalni broj znakova iz ASCII tablice. Koristite samo ASCII kodove za ispisne znakove, jer... id će se morati proslijediti OpenSSL-u kao niz. Na primjer, ASCII kod "3132" odgovara nizu "12". Za praktičnost, možete koristiti
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
Zatim ćemo izraditi certifikat. U nastavku će biti opisana dva načina: prvi je kroz CA (koristit ćemo testne CA), drugi je samopotpisani. Da biste to učinili, prvo trebate instalirati i konfigurirati OpenSSL verziju 1.1 ili noviju za rad s Rutokenom putem posebnog modula rtengine pomoću priručnika
Na primjer: za '--id 3132
' u OpenSSL morate navesti "pkcs11:id=12
”.
Možete koristiti usluge testnog CA, kojih ima mnogo, npr.
Druga mogućnost je prepustiti se lijenosti i stvoriti samopotpisani
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr
Učitavanje certifikata na uređaj
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
6) Registrirajte certifikat u sustavu
Provjerite izgleda li vaš certifikat kao base64 datoteka:
Ako vaš certifikat izgleda ovako:
tada trebate pretvoriti certifikat iz DER formata u PEM format (base64)
$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Ponovno provjeravamo je li sada sve u redu.
Dodajte certifikat na popis pouzdanih certifikata
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
Posljednji redak štiti popis pouzdanih certifikata od slučajne ili namjerne promjene od strane drugih korisnika. To sprječava nekoga da ovdje doda svoj certifikat i da se može prijaviti u vaše ime.
7) Postavite autentifikaciju
Postavljanje našeg PAM modula potpuno je standardno i vrši se na potpuno isti način kao i postavljanje ostalih modula. Stvori u datoteku /usr/share/pam-configs/rutoken-gost-pam
koji sadrži puni naziv modula, je li omogućen prema zadanim postavkama, prioritet modula i parametre provjere autentičnosti.
Parametri provjere autentičnosti sadrže zahtjeve za uspjeh operacije:
- potrebno: Takvi moduli moraju vratiti pozitivan odgovor. Ako rezultat poziva modula sadrži negativan odgovor, to će rezultirati pogreškom provjere autentičnosti. Zahtjev će biti odbačen, ali će preostali moduli biti pozvani.
- Requisite: Slično potrebnom, ali odmah ne uspijeva provjera autentičnosti i zanemaruje druge module.
- dovoljan: ako nijedan od potrebnih ili dovoljnih modula prije takvog modula nije vratio negativan rezultat, tada će modul vratiti pozitivan odgovor. Preostali moduli bit će zanemareni.
- izborno: Ako nema potrebnih modula na stogu i niti jedan od dovoljnih modula ne vraća pozitivan rezultat, tada barem jedan od izbornih modula mora vratiti pozitivan rezultat.
Cijeli sadržaj datoteke /usr/share/pam-configs/rutoken-gost-pam
:
Name: Rutoken PAM GOST
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so
spremite datoteku, a zatim je izvršite
$ sudo pam-auth-update
u prozoru koji se pojavi stavite zvjezdicu pored Rutoken PAM GOST i kliknite OK
8) Provjerite postavke
Da biste shvatili da je sve konfigurirano, ali da istovremeno ne izgubite mogućnost prijave u sustav, unesite naredbu
$ sudo login
Unesite svoje korisničko ime. Sve je ispravno konfigurirano ako sustav zahtijeva PIN kod uređaja.
9) Konfigurirajte računalo da bude blokirano kada se token izdvoji
Uključeno u paket libpam-pkcs11
uslužni program uključen pkcs11_eventmgr,
koji vam omogućuje izvođenje raznih radnji kada se dogode PKCS#11 događaji.
Za postavke pkcs11_eventmgr
služi kao konfiguracijska datoteka: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Za različite distribucije Linuxa, naredba koja uzrokuje zaključavanje računa kada se ukloni pametna kartica ili token razlikovat će se. Cm. event card_remove
.
Primjer konfiguracijske datoteke prikazan je u nastavku:
pkcs11_eventmgr
{
# Запуск в бэкграунде
daemon = true;
# Настройка сообщений отладки
debug = false;
# Время опроса в секундах
polling_time = 1;
# Установка тайм-аута на удаление карты
# По-умолчанию 0
expire_time = 0;
# Выбор pkcs11 библиотеки для работы с Рутокен
pkcs11_module = usr/lib/librtpkcs11ecp.so;
# Действия с картой
# Карта вставлена:
event card_insert {
# Оставляем значения по умолчанию (ничего не происходит)
on_error = ignore ;
action = "/bin/false";
}
# Карта извлечена
event card_remove {
on_error = ignore;
# Вызываем функцию блокировки экрана
# Для GNOME
action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
# Для XFCE
# action = "xflock4";
# Для Astra Linux (FLY)
# action = "fly-wmfunc FLYWM_LOCK";
}
# Карта долгое время извлечена
event expire_time {
# Оставляем значения по умолчанию (ничего не происходит)
on_error = ignore;
action = "/bin/false";
}
}
Nakon toga dodajte aplikaciju pkcs11_eventmgr
za pokretanje. Da biste to učinili, uredite datoteku .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Dodajte redak pkcs11_eventmgr na kraj datoteke i ponovno pokrenite sustav.
Opisani koraci za postavljanje operativnog sustava mogu se koristiti kao upute u bilo kojoj modernoj Linux distribuciji, pa tako i domaćoj.
Zaključak
Linux računala postaju sve popularnija u ruskim vladinim agencijama, a postavljanje pouzdane dvofaktorske autentifikacije u ovom OS-u nije uvijek lako. Rado ćemo vam pomoći riješiti “problem s lozinkom” pomoću ovog vodiča i pouzdano zaštititi pristup vašem računalu bez trošenja puno vremena na to.
Izvor: www.habr.com