Kata sandi yang sederhana tidak aman, dan kata sandi yang rumit tidak mungkin diingat. Itu sebabnya mereka sering kali berakhir di catatan tempel di bawah keyboard atau di monitor. Untuk memastikan kata sandi tetap diingat oleh pengguna yang βlupaβ dan keandalan perlindungan tidak hilang, ada otentikasi dua faktor (2FA).
Karena kombinasi kepemilikan perangkat dan mengetahui PIN-nya, PIN itu sendiri bisa lebih sederhana dan mudah diingat. Kerugian dalam panjang atau keacakan PIN diimbangi dengan persyaratan kepemilikan fisik dan pembatasan kekerasan PIN.
Selain itu, di instansi pemerintah mereka ingin semuanya berjalan sesuai dengan Gost. Opsi 2FA untuk masuk ke Linux ini akan dibahas. Saya akan mulai dari jauh.
Modul PAM
Modul Otentikasi Pluggable (PAM) adalah modul dengan API standar dan implementasi berbagai mekanisme otentikasi dalam aplikasi.
Semua utilitas dan aplikasi yang dapat bekerja dengan PAM mengambilnya dan dapat menggunakannya untuk otentikasi pengguna.
Dalam praktiknya, cara kerjanya seperti ini: perintah login memanggil PAM, yang melakukan semua pemeriksaan yang diperlukan menggunakan modul yang ditentukan dalam file konfigurasi dan mengembalikan hasilnya ke perintah login.
perpustakaan
Modul yang dikembangkan oleh perusahaan Aktiv menambahkan otentikasi dua faktor pengguna menggunakan kartu pintar atau token USB menggunakan kunci asimetris sesuai dengan standar kriptografi domestik terbaru.
Mari kita lihat prinsip pengoperasiannya:
- Token menyimpan sertifikat pengguna dan kunci pribadinya;
- Sertifikat disimpan di direktori home pengguna sebagai tepercaya.
Proses otentikasi terjadi sebagai berikut:
- Rutoken mencari sertifikat pribadi pengguna.
- PIN token diminta.
- Data acak ditandatangani pada kunci pribadi langsung di chip Rutoken.
- Tanda tangan yang dihasilkan diverifikasi menggunakan kunci publik dari sertifikat pengguna.
- Modul mengembalikan hasil verifikasi tanda tangan ke aplikasi pemanggil.
Anda dapat mengautentikasi menggunakan kunci gost r 34.10-2012 (panjang 256 atau 512 bit) atau gost r 34.10-2001 yang sudah ketinggalan zaman.
Anda tidak perlu khawatir tentang keamanan kunci - kunci tersebut dibuat langsung di Rutoken dan tidak pernah meninggalkan memorinya selama operasi kriptografi.
Rutoken EDS 2.0 disertifikasi oleh FSB dan FSTEC menurut NDV 4, sehingga dapat digunakan dalam sistem informasi yang memproses informasi rahasia.
Penggunaan praktis
Hampir semua Linux modern bisa digunakan, misalnya kita akan menggunakan xUbuntu 18.10.
1) Instal paket yang diperlukan
sudo apt-get install libccid pcscd opensc
Jika Anda ingin menambahkan kunci desktop dengan screensaver, instal paket tambahan libpam-pkcs11
.
2) Tambahkan modul PAM dengan dukungan Gost
Memuat perpustakaan dari
Salin isi folder PAM librtpam.so.1.0.0 ke folder sistem
/usr/lib/
ΠΈΠ»ΠΈ /usr/lib/x86_64-linux-gnu/
ΠΈΠ»ΠΈ /usr/lib64
3) Instal paket dengan librtpkcs11ecp.so
Unduh dan instal paket DEB atau RPM dari tautan:
4) Periksa apakah Rutoken EDS 2.0 berfungsi di sistem
Di terminal kami mengeksekusi
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Jika Anda melihat garisnya Rutoken ECP <no label>
- itu berarti semuanya baik-baik saja.
5) Baca sertifikatnya
Memeriksa apakah perangkat memiliki sertifikat
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Jika setelah baris:
Using slot 0 with a present token (0x0)
- informasi ditampilkan tentang kunci dan sertifikat, Anda perlu membaca sertifikat dan menyimpannya ke disk. Untuk melakukannya, jalankan perintah berikut, dan alih-alih {id} Anda harus mengganti ID sertifikat yang Anda lihat di keluaran perintah sebelumnya:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
Jika file cert.crt sudah dibuat, lanjutkan ke langkah 6). - tidak ada apa-apa, maka perangkat tersebut kosong. Hubungi administrator Anda atau buat sendiri kunci dan sertifikatnya dengan mengikuti langkah berikutnya.
5.1) Buat sertifikat tes
Perhatian! Metode yang dijelaskan untuk membuat kunci dan sertifikat cocok untuk pengujian dan tidak dimaksudkan untuk digunakan dalam mode pertempuran. Untuk melakukannya, Anda perlu menggunakan kunci dan sertifikat yang dikeluarkan oleh otoritas sertifikasi tepercaya organisasi Anda atau otoritas sertifikasi terakreditasi.
Modul PAM dirancang untuk melindungi komputer lokal dan dirancang untuk bekerja di organisasi kecil. Karena penggunanya sedikit, Administrator dapat memantau pencabutan sertifikat dan memblokir akun secara manual, serta masa berlaku sertifikat. Modul PAM belum mengetahui cara memverifikasi sertifikat menggunakan CRL dan membangun rantai kepercayaan.
Caranya mudah (melalui browser)
Untuk mendapatkan sertifikat tes, gunakan
Cara geek (melalui konsol dan mungkin kompiler)
Periksa versi OpenSC
$ opensc-tool --version
Jika versinya kurang dari 0.20, perbarui atau buat
Hasilkan pasangan kunci dengan parameter berikut:
--key-type: GOSTR3410-2012-512:Π (ΠΠΠ‘Π’-2012 512 Π±ΠΈΡ c ΠΏΠ°ΡΠ°ΠΌΡΠ΅ΡΠΎΠΌ Π), GOSTR3410-2012-256:A (ΠΠΠ‘Π’-2012 256 Π±ΠΈΡ Ρ ΠΏΠ°ΡΠ°ΠΌΡΠ΅ΡΠΎΠΌ A)
--id:
pengidentifikasi objek (CKA_ID) sebagai dua digit angka karakter hex dari tabel ASCII. Gunakan hanya kode ASCII untuk karakter yang dapat dicetak, karena... id harus diteruskan ke OpenSSL sebagai string. Misalnya, kode ASCII β3132β sesuai dengan string β12β. Untuk kenyamanan, Anda bisa menggunakan
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
Selanjutnya kita akan membuat sertifikat. Dua cara akan dijelaskan di bawah ini: yang pertama adalah melalui CA (kita akan menggunakan CA uji), yang kedua adalah dengan ditandatangani sendiri. Untuk melakukan ini, Anda harus terlebih dahulu menginstal dan mengkonfigurasi OpenSSL versi 1.1 atau lebih baru agar dapat bekerja dengan Rutoken melalui modul rtengine khusus menggunakan manual
Misalnya: untuk '--id 3132
' di OpenSSL Anda perlu menentukan "pkcs11:id=12
".
Anda dapat menggunakan layanan tes CA, yang jumlahnya banyak, misalnya,
Pilihan lainnya adalah menyerah pada kemalasan dan membuat tanda tangan sendiri
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr
Mengunggah sertifikat ke perangkat
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
6) Daftarkan sertifikat di sistem
Pastikan sertifikat Anda terlihat seperti file base64:
Jika sertifikat Anda terlihat seperti ini:
maka Anda perlu mengonversi sertifikat dari format DER ke format PEM (base64)
$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Kami memeriksa lagi apakah semuanya sudah beres sekarang.
Tambahkan sertifikat ke daftar sertifikat tepercaya
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
Baris terakhir melindungi daftar sertifikat tepercaya agar tidak diubah secara tidak sengaja atau sengaja oleh pengguna lain. Hal ini mencegah seseorang menambahkan sertifikatnya di sini dan dapat masuk atas nama Anda.
7) Siapkan otentikasi
Menyiapkan modul PAM kami sepenuhnya standar dan dilakukan dengan cara yang persis sama seperti menyiapkan modul lainnya. Buat ke file /usr/share/pam-configs/rutoken-gost-pam
berisi nama lengkap modul, apakah diaktifkan secara default, prioritas modul, dan parameter otentikasi.
Parameter otentikasi berisi persyaratan keberhasilan operasi:
- diperlukan: Modul tersebut harus memberikan respons positif. Jika hasil pemanggilan modul berisi respon negatif, hal ini akan mengakibatkan kesalahan otentikasi. Permintaan akan dibatalkan, namun modul yang tersisa akan dipanggil.
- syarat: Mirip dengan yang diperlukan, tetapi segera gagal dalam otentikasi dan mengabaikan modul lain.
- cukup: Jika tidak ada modul yang diperlukan atau mencukupi sebelum modul tersebut memberikan hasil negatif, maka modul akan mengembalikan respons positif. Modul lainnya akan diabaikan.
- opsional: Jika tidak ada modul yang diperlukan di tumpukan dan tidak ada modul yang memadai yang memberikan hasil positif, maka setidaknya salah satu modul opsional harus memberikan hasil positif.
Isi file lengkap /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
simpan filenya, lalu jalankan
$ sudo pam-auth-update
di jendela yang muncul, beri tanda bintang di sebelahnya Rutoken PAM Gost dan dorong OK
8) Periksa pengaturannya
Untuk memahami bahwa semuanya sudah dikonfigurasi, tetapi pada saat yang sama tidak kehilangan kemampuan untuk masuk ke sistem, masukkan perintah
$ sudo login
Masukkan nama pengguna Anda. Semuanya dikonfigurasi dengan benar jika sistem memerlukan kode PIN perangkat.
9) Konfigurasikan komputer untuk diblokir saat token diekstraksi
Termasuk dalam paket libpam-pkcs11
termasuk utilitas pkcs11_eventmgr,
yang memungkinkan Anda melakukan berbagai tindakan ketika peristiwa PKCS#11 terjadi.
Untuk pengaturan pkcs11_eventmgr
berfungsi sebagai file konfigurasi: /etc/pam_pkcs11/pkcs11_eventmgr.conf
Untuk distribusi Linux yang berbeda, perintah yang menyebabkan akun dikunci ketika kartu pintar atau token dihapus akan berbeda. Cm. event card_remove
.
Contoh file konfigurasi ditunjukkan di bawah ini:
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";
}
}
Setelah itu tambahkan aplikasinya pkcs11_eventmgr
Untuk memulai. Untuk melakukan ini, edit file .bash_profile:
$ nano /home/<ΠΈΠΌΡ_ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ>/.bash_profile
Tambahkan baris pkcs11_eventmgr di akhir file dan reboot.
Langkah-langkah pengaturan sistem operasi yang dijelaskan dapat digunakan sebagai petunjuk di distribusi Linux modern mana pun, termasuk distribusi domestik.
Kesimpulan
PC Linux menjadi semakin populer di lembaga pemerintah Rusia, dan menyiapkan otentikasi dua faktor yang andal di OS ini tidak selalu mudah. Kami akan dengan senang hati membantu Anda memecahkan βmasalah kata sandiβ dengan panduan ini dan melindungi akses ke PC Anda dengan andal tanpa menghabiskan banyak waktu untuk itu.
Sumber: www.habr.com