Rutoken'de GOST-2012 anahtarlarını kullanarak Linux'ta yerel kimlik doğrulama için PAM modülleri nasıl kullanılır?

Rutoken'de GOST-2012 anahtarlarını kullanarak Linux'ta yerel kimlik doğrulama için PAM modülleri nasıl kullanılır?

Basit şifreler güvenli değildir ve karmaşık şifrelerin hatırlanması imkansızdır. Bu yüzden sıklıkla klavyenin veya monitörün altında yapışkan bir notla karşılaşıyorlar. Şifrelerin “unutkan” kullanıcıların aklında kalmasını ve korumanın güvenilirliğinin kaybolmamasını sağlamak için iki faktörlü kimlik doğrulama (2FA) bulunmaktadır.

Bir cihaza sahip olma ve PIN'ini bilme kombinasyonu nedeniyle, PIN'in kendisi daha basit ve hatırlanması daha kolay olabilir. PIN uzunluğu veya rastgeleliğindeki dezavantajlar, fiziksel sahiplik gerekliliği ve PIN kaba kuvvetine ilişkin kısıtlamalarla dengelenir.

Ayrıca devlet kurumlarında her şeyin GOST'a göre çalışmasını istedikleri oluyor. Linux'ta oturum açmak için bu 2FA seçeneği tartışılacaktır. Uzaktan başlayacağım.

PAM modülleri

Takılabilir Kimlik Doğrulama Modülleri (PAM), standart bir API'ye ve uygulamalardaki çeşitli kimlik doğrulama mekanizmalarının uygulamalarına sahip modüllerdir.
PAM ile çalışabilen tüm yardımcı programlar ve uygulamalar bunları alır ve kullanıcı kimlik doğrulaması için kullanabilir.
Pratikte şu şekilde çalışır: oturum açma komutu, yapılandırma dosyasında belirtilen modülleri kullanarak gerekli tüm kontrolleri gerçekleştiren ve sonucu oturum açma komutuna geri döndüren PAM'i çağırır.

librtpam

Aktiv şirketi tarafından geliştirilen modül, yerli kriptografinin en son standartlarına göre asimetrik anahtarlar kullanan akıllı kartlar veya USB belirteçleri kullanan kullanıcılara iki faktörlü kimlik doğrulaması ekliyor.

Çalışma prensibine bakalım:

  • Belirteç, kullanıcının sertifikasını ve özel anahtarını saklar;
  • Sertifika, kullanıcının ana dizinine güvenilir olarak kaydedilir.

Kimlik doğrulama işlemi şu şekilde gerçekleşir:

  1. Rutoken kullanıcının kişisel sertifikasını arar.
  2. Belirteç PIN'i isteniyor.
  3. Rastgele veriler doğrudan Rutoken çipindeki özel anahtarda imzalanır.
  4. Ortaya çıkan imza, kullanıcının sertifikasındaki ortak anahtar kullanılarak doğrulanır.
  5. Modül, imza doğrulama sonucunu çağıran uygulamaya döndürür.

GOST R 34.10-2012 anahtarlarını (uzunluk 256 veya 512 bit) veya güncel olmayan GOST R 34.10-2001'i kullanarak kimlik doğrulaması yapabilirsiniz.

Anahtarların güvenliği konusunda endişelenmenize gerek yok; bunlar doğrudan Rutoken'de oluşturulur ve şifreleme işlemleri sırasında asla hafızasından ayrılmaz.

Rutoken'de GOST-2012 anahtarlarını kullanarak Linux'ta yerel kimlik doğrulama için PAM modülleri nasıl kullanılır?

Rutoken EDS 2.0, NDV 4'e göre FSB ve FSTEC tarafından onaylanmıştır, bu nedenle gizli bilgileri işleyen bilgi sistemlerinde kullanılabilir.

Pratik kullanım

Hemen hemen her modern Linux bunu yapacaktır; örneğin biz xUbuntu 18.10'u kullanacağız.

1) Gerekli paketleri kurun

sudo apt-get install libccid pcscd opensc
Ekran koruyuculu bir masaüstü kilidi eklemek istiyorsanız paketi ayrıca yükleyin. libpam-pkcs11.

2) GOST destekli bir PAM modülü ekleyin

Kütüphane şuradan yükleniyor: https://download.rutoken.ru/Rutoken/PAM/
PAM klasörünün librtpam.so.1.0.0 içeriğini sistem klasörüne kopyalayın
/usr/lib/ veya /usr/lib/x86_64-linux-gnu/veya /usr/lib64

3) Paketi librtpkcs11ecp.so ile yükleyin

DEB veya RPM paketini aşağıdaki bağlantıdan indirip yükleyin: https://www.rutoken.ru/support/download/pkcs/

4) Rutoken EDS 2.0'ın sistemde çalıştığını kontrol edin

Terminalde yürüttüğümüz
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Eğer çizgiyi görürsen Rutoken ECP <no label> - bu her şeyin yolunda olduğu anlamına gelir.

5) Sertifikayı okuyun

Cihazın sertifikası olup olmadığının kontrol edilmesi
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Eğer satırdan sonra:
Using slot 0 with a present token (0x0)

  • bilgi görüntülenir anahtarlar ve sertifikalar hakkında, sertifikayı okumanız ve diske kaydetmeniz gerekir. Bunu yapmak için aşağıdaki komutu çalıştırın; burada {id} yerine önceki komutun çıktısında gördüğünüz sertifika kimliğini değiştirmeniz gerekir:
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
    Cert.crt dosyası oluşturulduysa 6. adıma geçin).
  • hiçbir şey yok, bu durumda cihaz boştur. Yöneticinizle iletişime geçin veya bir sonraki adımı izleyerek anahtarları ve sertifikayı kendiniz oluşturun.

5.1) Test sertifikası oluşturun

Dikkat! Anahtar ve sertifika oluşturmaya yönelik açıklanan yöntemler test için uygundur ve savaş modunda kullanılması amaçlanmamıştır. Bunu yapmak için kuruluşunuzun güvenilir sertifika yetkilisi veya akredite bir sertifika yetkilisi tarafından verilen anahtarları ve sertifikaları kullanmanız gerekir.
PAM modülü yerel bilgisayarları korumak için tasarlanmıştır ve küçük kuruluşlarda çalışacak şekilde tasarlanmıştır. Az sayıda kullanıcı olduğundan, Yönetici sertifikaların iptalini izleyebilir ve hesapları manuel olarak engelleyebilir, ayrıca sertifikaların geçerlilik süresini de belirleyebilir. PAM modülü, CRL'leri kullanarak sertifikaların nasıl doğrulanacağını ve güven zincirlerinin nasıl oluşturulacağını henüz bilmiyor.

Kolay yol (tarayıcı aracılığıyla)

Bir test sertifikası almak için şunu kullanın: web hizmeti "Rutoken Kayıt Merkezi". İşlem 5 dakikadan fazla sürmeyecek.

İneğin yolu (konsol ve muhtemelen derleyici aracılığıyla)

OpenSC sürümünü kontrol edin
$ opensc-tool --version
Sürüm 0.20'den küçükse güncelleyin veya derleyin GOST-11 destekli pkcs2012-tool dalı GitHub'ımızdan (bu makalenin yayınlandığı tarihte 0.20 sürümü henüz yayınlanmamıştı) veya en geç ana OpenSC projesinin ana dalından 8cf1e6f'yi taahhüt et

Aşağıdaki parametrelerle bir anahtar çifti oluşturun:
--key-type: GOSTR3410-2012-512:А (ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id: ASCII tablosundan iki basamaklı onaltılık karakter sayıları olarak nesne tanımlayıcısını (CKA_ID). Yazdırılabilir karakterler için yalnızca ASCII kodlarını kullanın, çünkü... kimliğin bir dize olarak OpenSSL'ye iletilmesi gerekecektir. Örneğin ASCII kodu “3132”, “12” dizisine karşılık gelir. Kolaylık sağlamak için kullanabilirsiniz Dizeleri ASCII kodlarına dönüştürmek için çevrimiçi hizmet.

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

Daha sonra bir sertifika oluşturacağız. Aşağıda iki yol açıklanacaktır: Birincisi CA aracılığıyladır (test CA'larını kullanacağız), ikincisi ise kendinden imzalıdır. Bunu yapmak için öncelikle OpenSSL sürüm 1.1 veya üzerini, kılavuzu kullanarak özel bir rtengine modülü aracılığıyla Rutoken ile çalışacak şekilde kurmanız ve yapılandırmanız gerekir. OpenSSL'yi yükleme ve yapılandırma.
Örneğin: '- için-id 3132' OpenSSL'de belirtmeniz gerekir "pkcs11:id=12".

Çok sayıda bulunan bir test CA'sının hizmetlerini kullanabilirsiniz, örneğin: burada, burada и burada, bunun için bir sertifika talebi oluşturacağız

Başka bir seçenek de tembelliğe boyun eğmek ve kendinden imzalı bir
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr

Sertifikanın cihaza yüklenmesi
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

6) Sertifikayı sisteme kaydedin

Sertifikanızın base64 dosyasına benzediğinden emin olun:

Rutoken'de GOST-2012 anahtarlarını kullanarak Linux'ta yerel kimlik doğrulama için PAM modülleri nasıl kullanılır?

Sertifikanız şöyle görünüyorsa:

Rutoken'de GOST-2012 anahtarlarını kullanarak Linux'ta yerel kimlik doğrulama için PAM modülleri nasıl kullanılır?

daha sonra sertifikayı DER formatından PEM formatına (base64) dönüştürmeniz gerekir

$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Şimdi her şeyin yolunda olup olmadığını tekrar kontrol ediyoruz.

Sertifikayı güvenilen sertifikalar listesine ekleyin
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Son satır, güvenilir sertifikalar listesinin diğer kullanıcılar tarafından kazara veya kasıtlı olarak değiştirilmesine karşı korur. Bu, birisinin sertifikasını buraya eklemesini ve sizin adınıza oturum açmasını engeller.

7) Kimlik doğrulamayı ayarlayın

PAM modülümüzün kurulumu tamamen standarttır ve diğer modüllerin kurulumuyla tamamen aynı şekilde yapılır. Dosyaya oluştur /usr/share/pam-configs/rutoken-gost-pam Modülün tam adını, varsayılan olarak etkin olup olmadığını, modülün önceliğini ve kimlik doğrulama parametrelerini içerir.
Kimlik doğrulama parametreleri işlemin başarısı için gereklilikleri içerir:

  • gerekli: Bu tür modüller olumlu bir yanıt vermelidir. Bir modül çağrısının sonucu olumsuz bir yanıt içeriyorsa, bu durum kimlik doğrulama hatasıyla sonuçlanacaktır. İstek bırakılacak ancak kalan modüller çağrılacak.
  • gereklilik: Gerekliye benzer, ancak kimlik doğrulaması anında başarısız olur ve diğer modülleri yok sayar.
  • Yeterli: Böyle bir modülden önce gerekli veya yeterli modüllerden hiçbiri olumsuz sonuç vermediyse, modül olumlu yanıt verecektir. Kalan modüller göz ardı edilecektir.
  • isteğe bağlı: Yığında gerekli modül yoksa ve yeterli modüllerden hiçbiri olumlu sonuç vermiyorsa, isteğe bağlı modüllerden en az birinin olumlu sonuç döndürmesi gerekir.

Tam dosya içeriği /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

Rutoken'de GOST-2012 anahtarlarını kullanarak Linux'ta yerel kimlik doğrulama için PAM modülleri nasıl kullanılır?

dosyayı kaydedin ve ardından çalıştırın
$ sudo pam-auth-update
beliren pencerede yanına bir yıldız işareti koyun Rutoken PAM GOST ve tıkla OK

Rutoken'de GOST-2012 anahtarlarını kullanarak Linux'ta yerel kimlik doğrulama için PAM modülleri nasıl kullanılır?

8) Ayarları kontrol edin

Her şeyin yapılandırıldığını anlamak, ancak aynı zamanda sisteme giriş yapma yeteneğini kaybetmemek için komutu girin
$ sudo login
Kullanıcı adınızı giriniz. Sistem bir cihaz PIN kodu gerektiriyorsa her şey doğru şekilde yapılandırılmıştır.

Rutoken'de GOST-2012 anahtarlarını kullanarak Linux'ta yerel kimlik doğrulama için PAM modülleri nasıl kullanılır?

9) Belirteç çıkarıldığında bilgisayarı engellenecek şekilde yapılandırın

Pakete dahil libpam-pkcs11 yardımcı program dahil pkcs11_eventmgr, PKCS#11 olayları meydana geldiğinde çeşitli eylemler gerçekleştirmenize olanak tanır.
Dlya nastroyki pkcs11_eventmgr bir yapılandırma dosyası görevi görür: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Farklı Linux dağıtımları için, bir akıllı kart veya belirteç kaldırıldığında hesabın kilitlenmesine neden olan komut farklı olacaktır. Santimetre. event card_remove.
Örnek bir yapılandırma dosyası aşağıda gösterilmektedir:

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";
    }
}

Bundan sonra uygulamayı ekleyin pkcs11_eventmgr başlamak. Bunu yapmak için .bash_profile dosyasını düzenleyin:
$ nano /home/<имя_пользователя>/.bash_profile
Dosyanın sonuna pkcs11_eventmgr satırını ekleyin ve yeniden başlatın.

İşletim sistemini kurmak için açıklanan adımlar, yerli olanlar da dahil olmak üzere herhangi bir modern Linux dağıtımında talimat olarak kullanılabilir.

Rutoken'de GOST-2012 anahtarlarını kullanarak Linux'ta yerel kimlik doğrulama için PAM modülleri nasıl kullanılır?

Sonuç

Linux PC'ler Rus devlet kurumlarında giderek daha popüler hale geliyor ve bu işletim sisteminde güvenilir iki faktörlü kimlik doğrulamayı ayarlamak her zaman kolay olmuyor. Bu kılavuzla "şifre sorununu" çözmenize ve bilgisayarınıza çok fazla zaman harcamadan erişiminizi güvenilir bir şekilde korumanıza yardımcı olmaktan mutluluk duyacağız.

Kaynak: habr.com

Yorum ekle