Simple adgangskoder er ikke sikre, og komplekse adgangskoder er umulige at huske. Derfor ender de så ofte på en seddel under tastaturet eller på skærmen. For at sikre, at adgangskoder forbliver i hovedet på "glemsomme" brugere, og at pålideligheden af beskyttelsen ikke går tabt, er der to-faktor-autentificering (2FA).
På grund af kombinationen af at eje en enhed og kende dens PIN-kode, kan selve PIN-koden være enklere og nemmere at huske. Ulemper i PIN-længde eller tilfældighed opvejes af kravet om fysisk besiddelse og restriktioner på PIN-brut force.
Derudover sker det i offentlige myndigheder, at de ønsker, at alt skal fungere efter GOST. Denne 2FA mulighed for at logge på Linux vil blive diskuteret. Jeg starter på afstand.
PAM moduler
Pluggable Authentication Modules (PAM) er moduler med en standard API og implementeringer af forskellige autentificeringsmekanismer i applikationer.
Alle hjælpeprogrammer og applikationer, der kan arbejde med PAM, henter dem og kan bruge dem til brugergodkendelse.
I praksis fungerer det nogenlunde sådan her: login-kommandoen kalder PAM, som udfører alle de nødvendige kontroller ved hjælp af de moduler, der er angivet i konfigurationsfilen, og returnerer resultatet tilbage til login-kommandoen.
librtpam
Modulet udviklet af Aktiv-virksomheden tilføjer to-faktor-autentificering af brugere ved hjælp af smart cards eller USB-tokens ved hjælp af asymmetriske nøgler i henhold til de nyeste standarder for indenlandsk kryptografi.
Lad os se på princippet om dets funktion:
- Tokenet gemmer brugerens certifikat og dens private nøgle;
- Certifikatet gemmes i brugerens hjemmemappe som betroet.
Godkendelsesprocessen foregår som følger:
- Rutoken søger efter brugerens personlige certifikat.
- Token-PIN-koden anmodes om.
- Tilfældige data signeres på den private nøgle direkte i Rutoken-chippen.
- Den resulterende signatur verificeres ved hjælp af den offentlige nøgle fra brugerens certifikat.
- Modulet returnerer signaturbekræftelsesresultatet til den kaldende applikation.
Du kan godkende ved hjælp af GOST R 34.10-2012-nøgler (længde 256 eller 512 bit) eller den forældede GOST R 34.10-2001.
Du behøver ikke bekymre dig om nøglernes sikkerhed - de genereres direkte i Rutoken og forlader aldrig dens hukommelse under kryptografiske operationer.
Rutoken EDS 2.0 er certificeret af FSB og FSTEC i henhold til NDV 4, derfor kan den bruges i informationssystemer, der behandler fortrolig information.
Praktisk brug
Næsten enhver moderne Linux vil gøre det, for eksempel vil vi bruge xUbuntu 18.10.
1) Installer de nødvendige pakker
sudo apt-get install libccid pcscd opensc
Hvis du vil tilføje en skrivebordslås med en pauseskærm, skal du installere pakken yderligere libpam-pkcs11
.
2) Tilføj et PAM-modul med GOST-understøttelse
Indlæser biblioteket fra
Kopier indholdet af PAM-mappen librtpam.so.1.0.0 til systemmappen
/usr/lib/
eller /usr/lib/x86_64-linux-gnu/
eller /usr/lib64
3) Installer pakken med librtpkcs11ecp.so
Download og installer DEB- eller RPM-pakken fra linket:
4) Tjek at Rutoken EDS 2.0 virker i systemet
I terminalen udfører vi
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Hvis du ser stregen Rutoken ECP <no label>
- det betyder, at alt er i orden.
5) Læs certifikatet
Kontrollerer, at enheden har et certifikat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Hvis efter linjen:
Using slot 0 with a present token (0x0)
- information vises om nøgler og certifikater, skal du læse certifikatet og gemme det på disken. For at gøre dette skal du køre følgende kommando, hvor du i stedet for {id} skal erstatte certifikat-id'et, som du så i outputtet af den forrige kommando:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
Hvis filen cert.crt er blevet oprettet, skal du fortsætte til trin 6). - der er ingenting, så er enheden tom. Kontakt din administrator eller opret selv nøglerne og certifikatet ved at følge næste trin.
5.1) Opret et testcertifikat
Opmærksomhed! De beskrevne metoder til oprettelse af nøgler og certifikater er velegnede til test og er ikke beregnet til brug i kamptilstand. For at gøre dette skal du bruge nøgler og certifikater udstedt af din organisations betroede certificeringsmyndighed eller en akkrediteret certificeringsmyndighed.
PAM-modulet er designet til at beskytte lokale computere og er designet til at fungere i små organisationer. Da der er få brugere, kan administratoren overvåge tilbagekaldelsen af certifikater og manuelt blokere konti, samt certifikaternes gyldighedsperiode. PAM-modulet ved endnu ikke, hvordan man verificerer certifikater ved hjælp af CRL'er og opbygger tillidskæder.
Den nemme måde (via browser)
For at opnå et testcertifikat skal du bruge
Nørdens måde (via konsollen og muligvis compileren)
Tjek OpenSC-versionen
$ opensc-tool --version
Hvis versionen er mindre end 0.20, skal du opdatere eller bygge
Generer et nøglepar med følgende parametre:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)
--id:
objektidentifikator (CKA_ID) som tocifrede hex-tegnnumre fra ASCII-tabellen. Brug kun ASCII-koder til printbare tegn, fordi... id skal sendes til OpenSSL som en streng. For eksempel svarer ASCII-koden "3132" til strengen "12". For nemheds skyld kan du bruge
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
Dernæst vil vi oprette et certifikat. To måder vil blive beskrevet nedenfor: den første er gennem en CA (vi vil bruge test-CA'er), den anden er selvsigneret. For at gøre dette skal du først installere og konfigurere OpenSSL version 1.1 eller nyere for at arbejde med Rutoken gennem et specielt rtengine-modul ved hjælp af manualen
For eksempel: for '--id 3132
' i OpenSSL skal du angive "pkcs11:id=12
".
Du kan bruge tjenesterne fra en test-CA, som der er mange af, f.eks.
En anden mulighed er at give efter for dovenskab og skabe en selvsigneret
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr
Uploader certifikatet til enheden
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
6) Registrer certifikatet i systemet
Sørg for, at dit certifikat ligner en base64-fil:
Hvis dit certifikat ser sådan ud:
så skal du konvertere certifikatet fra DER-format til PEM-format (base64)
$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Vi tjekker igen, at alt er i orden nu.
Føj certifikatet til listen over pålidelige certifikater
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
Den sidste linje beskytter listen over betroede certifikater mod at blive ændret ved et uheld eller bevidst af andre brugere. Dette forhindrer nogen i at tilføje deres certifikat her og være i stand til at logge ind på dine vegne.
7) Konfigurer godkendelse
Opsætning af vores PAM-modul er helt standard og foregår på nøjagtig samme måde som opsætning af andre moduler. Opret til fil /usr/share/pam-configs/rutoken-gost-pam
indeholdende det fulde navn på modulet, om det er aktiveret som standard, modulets prioritet og godkendelsesparametre.
Godkendelsesparametrene indeholder krav til operationens succes:
- påkrævet: Sådanne moduler skal returnere et positivt svar. Hvis resultatet af et modulkald indeholder et negativt svar, vil dette resultere i en godkendelsesfejl. Anmodningen vil blive slettet, men de resterende moduler vil blive kaldt.
- påkrævet: Svarer til påkrævet, men fejler øjeblikkeligt godkendelse og ignorerer andre moduler.
- tilstrækkelig: Hvis ingen af de nødvendige eller tilstrækkelige moduler før et sådant modul gav et negativt resultat, vil modulet returnere et positivt svar. De resterende moduler vil blive ignoreret.
- valgfrit: Hvis der ikke er nødvendige moduler på stakken, og ingen af de tilstrækkelige moduler giver et positivt resultat, skal mindst et af de valgfrie moduler returnere et positivt resultat.
Fuldt filindhold /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
gem filen, og kør derefter
$ sudo pam-auth-update
i det vindue, der vises, skal du sætte en stjerne ved siden af Rutoken PAM GOST og klik OK
8) Tjek indstillingerne
For at forstå, at alt er konfigureret, men samtidig ikke miste evnen til at logge ind på systemet, skal du indtaste kommandoen
$ sudo login
Skriv dit brugernavn. Alt er konfigureret korrekt, hvis systemet kræver en enheds PIN-kode.
9) Konfigurer computeren til at blive blokeret, når tokenet udpakkes
Inkluderet i pakken libpam-pkcs11
hjælpemiddel medfølger pkcs11_eventmgr,
som giver dig mulighed for at udføre forskellige handlinger, når PKCS#11 hændelser opstår.
Til indstillinger pkcs11_eventmgr
fungerer som en konfigurationsfil: /etc/pam_pkcs11/pkcs11_eventmgr.conf
For forskellige Linux-distributioner vil kommandoen, der får en konto til at blive låst, når et smart card eller token fjernes, være forskellig. Cm. event card_remove
.
Et eksempel på en konfigurationsfil er vist nedenfor:
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";
}
}
Tilføj derefter applikationen pkcs11_eventmgr
til opstart. For at gøre dette skal du redigere .bash_profile-filen:
$ nano /home/<имя_пользователя>/.bash_profile
Tilføj linjen pkcs11_eventmgr til slutningen af filen og genstart.
De beskrevne trin til opsætning af operativsystemet kan bruges som instruktioner i enhver moderne Linux-distribution, inklusive indenlandske.
Konklusion
Linux-pc'er bliver mere og mere populære i russiske regeringsorganer, og det er ikke altid nemt at konfigurere pålidelig to-faktor-godkendelse i dette operativsystem. Vi hjælper dig gerne med at løse "adgangskodeproblemet" med denne guide og beskytter pålideligt adgangen til din pc uden at bruge en masse tid på det.
Kilde: www.habr.com