Enkla lösenord är inte säkra och komplexa är omöjliga att komma ihåg. Det är därför de så ofta hamnar på en lapp under tangentbordet eller på skärmen. För att säkerställa att lösenord förblir i "glömska" användares medvetande och att skyddets tillförlitlighet inte går förlorad, finns det tvåfaktorsautentisering (2FA).
På grund av kombinationen av att äga en enhet och känna till dess PIN-kod, kan själva PIN-koden vara enklare och lättare att komma ihåg. Nackdelar i PIN-längd eller slumpmässighet uppvägs av kravet på fysisk innehav och restriktioner för PIN-brute force.
Dessutom händer det på statliga myndigheter att de vill att allt ska fungera enligt GOST. Detta 2FA-alternativ för att logga in på Linux kommer att diskuteras. Jag börjar på långt håll.
PAM-moduler
Pluggable Authentication Modules (PAM) är moduler med ett standard-API och implementeringar av olika autentiseringsmekanismer i applikationer.
Alla verktyg och applikationer som kan fungera med PAM hämtar dem och kan använda dem för användarverifiering.
I praktiken fungerar det ungefär så här: inloggningskommandot anropar PAM, som utför alla nödvändiga kontroller med de moduler som anges i konfigurationsfilen och returnerar resultatet tillbaka till inloggningskommandot.
librtpam
Modulen som utvecklats av Aktiv-företaget lägger till tvåfaktorsautentisering av användare som använder smarta kort eller USB-tokens med asymmetriska nycklar enligt de senaste standarderna för inhemsk kryptografi.
Låt oss titta på principen för dess funktion:
- Token lagrar användarens certifikat och dess privata nyckel;
- Certifikatet sparas i användarens hemkatalog som tillförlitligt.
Autentiseringsprocessen sker enligt följande:
- Rutoken söker efter användarens personliga certifikat.
- Token-PIN begärs.
- Slumpmässig data signeras på den privata nyckeln direkt i Rutoken-chippet.
- Den resulterande signaturen verifieras med den publika nyckeln från användarens certifikat.
- Modulen returnerar signaturverifieringsresultatet till den anropande applikationen.
Du kan autentisera med GOST R 34.10-2012-nycklar (längd 256 eller 512 bitar) eller den föråldrade GOST R 34.10-2001.
Du behöver inte oroa dig för säkerheten för nycklarna - de genereras direkt i Rutoken och lämnar aldrig dess minne under kryptografiska operationer.
Rutoken EDS 2.0 är certifierad av FSB och FSTEC enligt NDV 4, därför kan den användas i informationssystem som behandlar konfidentiell information.
Praktisk användning
Nästan vilken modern Linux som helst, kommer vi till exempel att använda xUbuntu 18.10.
1) Installera nödvändiga paket
sudo apt-get install libccid pcscd opensc
Om du vill lägga till ett skrivbordslås med en skärmsläckare, installera paketet ytterligare libpam-pkcs11
.
2) Lägg till en PAM-modul med GOST-stöd
Laddar biblioteket från
Kopiera innehållet i PAM-mappen librtpam.so.1.0.0 till systemmappen
/usr/lib/
eller /usr/lib/x86_64-linux-gnu/
eller /usr/lib64
3) Installera paketet med librtpkcs11ecp.so
Ladda ner och installera DEB- eller RPM-paketet från länken:
4) Kontrollera att Rutoken EDS 2.0 fungerar i systemet
I terminalen kör vi
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Om du ser linjen Rutoken ECP <no label>
- Det betyder att allt är okej.
5) Läs intyget
Kontrollera att enheten har ett certifikat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Om efter raden:
Using slot 0 with a present token (0x0)
- information visas om nycklar och certifikat måste du läsa certifikatet och spara det på disk. För att göra detta, kör följande kommando, där du istället för {id} måste ersätta certifikat-ID:t som du såg i utdata från föregående kommando:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
Om filen cert.crt har skapats, fortsätt till steg 6). - det finns inget, då är enheten tom. Kontakta din administratör eller skapa nycklarna och certifikatet själv genom att följa nästa steg.
5.1) Skapa ett testcertifikat
Uppmärksamhet! De beskrivna metoderna för att skapa nycklar och certifikat är lämpliga för testning och är inte avsedda för användning i stridsläge. För att göra detta måste du använda nycklar och certifikat utfärdade av din organisations betrodda certifieringsmyndighet eller en ackrediterad certifieringsmyndighet.
PAM-modulen är utformad för att skydda lokala datorer och är designad för att fungera i små organisationer. Eftersom det finns få användare kan administratören övervaka återkallelsen av certifikat och manuellt blockera konton, samt certifikatens giltighetstid. PAM-modulen vet ännu inte hur man verifierar certifikat med hjälp av CRL:er och bygger förtroendekedjor.
Det enkla sättet (via webbläsare)
För att få ett testcertifikat, använd
Nördens sätt (via konsolen och möjligen kompilatorn)
Kontrollera OpenSC-versionen
$ opensc-tool --version
Om versionen är mindre än 0.20, uppdatera eller bygg
Generera ett nyckelpar med följande parametrar:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)
--id:
objektidentifierare (CKA_ID) som tvåsiffriga hexadecimala tecken från ASCII-tabellen. Använd endast ASCII-koder för utskrivbara tecken, eftersom... id måste skickas till OpenSSL som en sträng. Till exempel motsvarar ASCII-koden "3132" strängen "12". För enkelhetens skull kan du använda
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
Därefter skapar vi ett certifikat. Två sätt kommer att beskrivas nedan: det första är genom en CA (vi kommer att använda test-CA), det andra är självsignerat. För att göra detta måste du först installera och konfigurera OpenSSL version 1.1 eller senare för att arbeta med Rutoken genom en speciell rtengine-modul med hjälp av manualen
Till exempel: för '--id 3132
" i OpenSSL måste du ange "pkcs11:id=12
".
Du kan använda tjänsterna hos en test-CA, som det finns många av, t.ex.
Ett annat alternativ är att ge efter för lättja och skapa en självsignerad
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr
Laddar upp certifikatet till enheten
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
6) Registrera certifikatet i systemet
Se till att ditt certifikat ser ut som en base64-fil:
Om ditt certifikat ser ut så här:
då måste du konvertera certifikatet från DER-format till PEM-format (base64)
$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Vi kontrollerar igen att allt är i sin ordning nu.
Lägg till certifikatet i listan över betrodda certifikat
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
Den sista raden skyddar listan över betrodda certifikat från att oavsiktligt eller avsiktligt ändras av andra användare. Detta förhindrar att någon lägger till sitt certifikat här och kan logga in för din räkning.
7) Ställ in autentisering
Att sätta upp vår PAM-modul är helt standard och görs på exakt samma sätt som att sätta upp andra moduler. Skapa till fil /usr/share/pam-configs/rutoken-gost-pam
som innehåller modulens fullständiga namn, om den är aktiverad som standard, prioritet för modulen och autentiseringsparametrar.
Autentiseringsparametrarna innehåller krav för att operationen ska lyckas:
- krävs: Sådana moduler måste ge ett positivt svar. Om resultatet av ett modulanrop innehåller ett negativt svar kommer detta att resultera i ett autentiseringsfel. Begäran kommer att tas bort, men de återstående modulerna kommer att anropas.
- erforderligt: Liknar obligatoriskt, men misslyckas omedelbart med autentisering och ignorerar andra moduler.
- tillräckligt: Om ingen av de nödvändiga eller tillräckliga modulerna före en sådan modul gav ett negativt resultat, kommer modulen att returnera ett positivt svar. De återstående modulerna kommer att ignoreras.
- valfritt: Om det inte finns några obligatoriska moduler i stacken och ingen av de tillräckliga modulerna ger ett positivt resultat, måste minst en av de valfria modulerna ge ett positivt resultat.
Fullständigt filinnehåll /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
spara filen och kör sedan
$ sudo pam-auth-update
i fönstret som visas, sätt en asterisk bredvid den Rutoken PAM GOST och klicka OK
8) Kontrollera inställningarna
För att förstå att allt är konfigurerat, men samtidigt inte förlora möjligheten att logga in i systemet, skriv in kommandot
$ sudo login
Skriv in ditt användarnamn. Allt är korrekt konfigurerat om systemet kräver en enhets PIN-kod.
9) Konfigurera datorn så att den blockeras när tokenen extraheras
Ingår i paketet libpam-pkcs11
verktyg ingår pkcs11_eventmgr,
som låter dig utföra olika åtgärder när PKCS#11-händelser inträffar.
För inställningar pkcs11_eventmgr
fungerar som en konfigurationsfil: /etc/pam_pkcs11/pkcs11_eventmgr.conf
För olika Linux-distributioner skiljer sig kommandot som gör att ett konto låses när ett smartkort eller token tas bort. Centimeter. event card_remove
.
Ett exempel på en konfigurationsfil visas nedan:
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";
}
}
Lägg sedan till applikationen pkcs11_eventmgr
för att starta. För att göra detta, redigera filen .bash_profile:
$ nano /home/<имя_пользователя>/.bash_profile
Lägg till raden pkcs11_eventmgr i slutet av filen och starta om.
De beskrivna stegen för att installera operativsystemet kan användas som instruktioner i alla moderna Linux-distributioner, inklusive inhemska.
Slutsats
Linux-datorer blir allt mer populära i ryska statliga myndigheter, och det är inte alltid lätt att ställa in pålitlig tvåfaktorsautentisering i detta operativsystem. Vi hjälper dig gärna att lösa "lösenordsproblemet" med den här guiden och på ett tillförlitligt sätt skydda åtkomsten till din dator utan att spendera mycket tid på det.
Källa: will.com