
لا تحمي كلمات المرور البسيطة ، ولا يمكن تذكر كلمات المرور المعقدة. لذلك ، يتم العثور عليها غالبًا على ملصق تحت لوحة المفاتيح أو على الشاشة. من أجل أن تظل كلمات المرور في رؤوس المستخدمين "النسيان" وموثوقية الحماية التي يجب ألا تضيع ، هناك مصادقة ثنائية (2FA).
نظرًا لمجموعة عوامل ملكية الجهاز ومعرفة رمز PIN الخاص به ، يمكن أن يكون رمز PIN نفسه أبسط وأسهل في التذكر. يتم تعويض أوجه القصور في طول أو رقم PIN العشوائي عن طريق شرط الملكية المادية والقيود المفروضة على البحث عن PIN.
بالإضافة إلى ذلك ، يحدث في مؤسسات الدولة أنهم يريدون أن يعمل كل شيء وفقًا لـ GOST. حول هذا الخيار 2FA لدخول لينكس وسيتم مناقشتها. سأبدأ من بعيد.
وحدات PAM
وحدات المصادقة القابلة للتوصيل (PAMs) هي وحدات ذات واجهة برمجة تطبيقات قياسية وتطبيقات لآليات التوثيق المختلفة في التطبيقات.
جميع الأدوات المساعدة والتطبيقات التي يمكن أن تعمل مع PAM تلتقطها ويمكن استخدامها لمصادقة المستخدم.
في الممارسة العملية ، يعمل هذا كالتالي: يتحول أمر تسجيل الدخول إلى PAM ، الذي يقوم بإجراء جميع عمليات الفحص اللازمة باستخدام الوحدات النمطية المحددة في ملف التكوين ويعيد النتيجة مرة أخرى إلى أمر تسجيل الدخول.
librtpam
تضيف الوحدة التي طورتها شركة Active مصادقة ثنائية المستخدمين للمستخدمين الذين يستخدمون البطاقات الذكية أو رموز USB باستخدام مفاتيح غير متماثلة وفقًا لأحدث معايير التشفير المحلي.
النظر في مبدأ عملها:
- الرمز المميز يخزن شهادة المستخدم والمفتاح الخاص به ؛
- يتم حفظ الشهادة في الدليل الرئيسي للمستخدم باعتبارها موثوقة.
عملية المصادقة كالتالي:
- يبحث Rutoken عن الشهادة الشخصية للمستخدم.
- مطلوب رمز PIN رمزي.
- يتم توقيع البيانات العشوائية على مفتاح خاص مباشرة في شريحة Rutoken.
- يتم التحقق من التوقيع المستلم باستخدام المفتاح العمومي من شهادة المستخدم.
- تقوم الوحدة بإرجاع نتيجة التحقق من التوقيع إلى تطبيق الاستدعاء.
يمكنك المصادقة باستخدام مفاتيح GOST R 34.10-2012 (بطول 256 أو 512 بت) أو قديم GOST R 34.10-2001.
لا داعي للقلق بشأن أمان المفاتيح - حيث يتم إنشاؤها مباشرة في Rutoken ولا تترك ذاكرته أبدًا أثناء عمليات التشفير.

Rutoken EDS 2.0 معتمد من قبل FSB و FSTEC لـ NDV 4 ، وبالتالي يمكن استخدامه في أنظمة المعلومات التي تعالج المعلومات السرية.
الاستخدام العملي
تقريبا أي لينكس الحديثة مناسبة ، على سبيل المثال ، سوف نستخدم xUbuntu 18.10.
1) تثبيت الحزم اللازمة
sudo apt-get install libccid pcscd opensc
إذا كنت ترغب في إضافة قفل سطح مكتب مع شاشة توقف ،
libpam-pkcs11
حزمة
libpam-pkcs11
.
2) إضافة وحدة نمطية PAM مع دعم GOST
قم بتنزيل المكتبة من
https://download.rutoken.ru/Rutoken/PAM/انسخ محتويات مجلد PAM librtpam.so.1.0.0 إلى مجلد النظام
/usr/lib/
أو
/usr/lib/x86_64-linux-gnu/
أو
/usr/lib64
3) تثبيت الحزمة مع librtpkcs11ecp.so
قم بتنزيل وتثبيت حزمة DEB أو RPM من الرابط:
https://www.rutoken.ru/support/download/pkcs/4) نتحقق من أن Rutoken EDS 2.0 يعمل في النظام
في المحطة ، نفذ
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
إذا رأيت السطر
Rutoken ECP <no label>
-
Rutoken ECP <no label>
شيء على ما يرام.
5) قراءة الشهادة
تحقق من أن الجهاز لديه شهادة
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
إذا بعد الخط:
Using slot 0 with a present token (0x0)
- إذا تم عرض معلومات حول المفاتيح والشهادات ، فأنت بحاجة إلى قراءة الشهادة وحفظها على القرص. للقيام بذلك ، قم بتشغيل الأمر التالي ، حيث تحتاج بدلاً من {id} إلى استبدال شهادة المعرف التي شاهدتها في إخراج الأمر السابق:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
إذا تم إنشاء ملف cert.crt ، فانتقل إلى الخطوة 6). - لا يوجد شيء ، ثم الجهاز فارغ. اتصل بالمسؤول أو قم بإنشاء المفاتيح وشهادة نفسك باتباع الخطوة التالية.
5.1) إنشاء شهادة اختبار
تحذير! تعتبر الطرق الموصوفة لإنشاء المفاتيح والشهادات مناسبة للاختبار وليست مخصصة للاستخدام في وضع القتال. للقيام بذلك ، تحتاج إلى استخدام مفاتيح وشهادات صادرة عن مرجع مصدق موثوق به لمؤسستك أو هيئة مصدق معتمدة.
تم تصميم وحدة PAM لحماية أجهزة الكمبيوتر المحلية وتتضمن العمل في المؤسسات الصغيرة. نظرًا لوجود عدد قليل من المستخدمين ، يستطيع المسؤول بنفسه مراقبة إلغاء الشهادات وحظر الحسابات يدويًا ، بالإضافة إلى فترة صلاحية الشهادات. وحدة PAM غير قادرة بعد على التحقق من الشهادات بواسطة CRL وبناء سلاسل الثقة.
طريقة سهلة (عبر المتصفح)
للحصول على شهادة اختبار ، استخدم
خدمة ويب Rootoken Registration Center . لن تستغرق العملية أكثر من 5 دقائق.
مسار المهوس (عبر وحدة التحكم وربما المترجم)
تحقق من نسخة OpenSC$ opensc-tool --version
إذا كان الإصدار أقل من 0.20 ،
فقم بترقية أو جمع
فرع أداة pkcs11 بدعم GOST 2012 من GitHub (في وقت إصدار هذا المقال لم يتم إصدار الإصدار 0.20 بعد) أو من الفرع الرئيسي لمشروع OpenSC الرئيسي في موعد لا يتجاوز
الالتزام 8cf1e6fنقوم بإنشاء زوج رئيسي مع المعلمات:
--key-type: GOSTR3410-2012-512: (-2012 512 c ), GOSTR3410-2012-256:A (-2012 256 A)
--id:
معرف الكائن (CKA_ID) كأرقام أحرف مزدوجة الرقم في ست عشري من جدول ASCII. استخدم رموز ASCII فقط للأحرف المطبوعة ، مثل سوف id بحاجة لتمرير OpenSSL كسلسلة. على سبيل المثال ، تتوافق أكواد ASCII "3132" مع السلسلة "12".
للراحة ، يمكنك استخدام الخدمة عبر الإنترنت لتحويل السلاسل إلى أكواد ASCII .
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
التالي سننشئ شهادة. سيتم وصف طريقتين أدناه: الأولى من خلال المرجع المصدق (سوف نستخدم اختبار المرجع المصدق) ، والطريقة الثانية - الموقعة ذاتيا. للقيام بذلك ، يجب أولاً تثبيت وتكوين OpenSSL الإصدار 1.1 أو الأحدث للعمل مع Rutoken من خلال وحدة rtengine خاصة باستخدام
دليل التثبيت والتكوين OpenSSL .
على سبيل المثال: بالنسبة لـ '-
-id 3132
' في OpenSSL ، يلزمك تحديد "
pkcs11:id=12
".
يمكنك استخدام خدمات المرجع المصدق التجريبي ، والتي يوجد منها الكثير ، على سبيل المثال ،
هنا ،
هنا وهنا ، لهذا سننشئ طلب شهادة
خيار آخر هو الخضوع للكسل وإنشاء توقيع ذاتي
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr
قم بتنزيل الشهادة على الجهاز
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
6) تسجيل الشهادة في النظام
تأكد من أن شهادتك تبدو وكأنها ملف base64:

إذا كانت شهادتك تبدو كالتالي:

فأنت بحاجة إلى تحويل الشهادة من تنسيق DER إلى تنسيق PEM (base64)
$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
مرة أخرى ، نتحقق الآن من أن كل شيء على ما يرام.
إضافة شهادة إلى قائمة الشهادات الموثوقة
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
يحمي السطر الأخير قائمة الشهادات الموثوقة من التغييرات غير المقصودة أو المتعمدة التي يقوم بها المستخدمون الآخرون. هذا يلغي الموقف عندما يضيف شخص ما شهادته هنا ويمكنه تسجيل الدخول نيابة عنك.
7) تكوين المصادقة
تكوين وحدة PAM لدينا هو معيار تماما ويتم تماما مثل إعدادات الوحدات الأخرى. نقوم بإنشاء ملف
/usr/share/pam-configs/rutoken-gost-pam
يحتوي على الاسم الكامل للوحدة ، سواء تم تمكينه افتراضيًا ، وأولوية الوحدة النمطية ومعلمات المصادقة.
في معلمات المصادقة ، هناك متطلبات لنجاح العملية:
- مطلوب: يجب أن ترجع هذه الوحدات استجابة إيجابية. إذا كانت نتيجة استدعاء الوحدة النمطية تحتوي على إجابة سلبية ، فسيؤدي ذلك إلى حدوث خطأ في المصادقة. سيتم إعادة تعيين الطلب ، ولكن سيتم استدعاء بقية الوحدات.
- متطلب (مطلوب): مشابه للمطلوب ، لكن يؤدي على الفور إلى فشل المصادقة ويتجاهل بقية الوحدات.
- كافية: إذا لم تقدم أي وحدة من الوحدات النمطية المطلوبة أو الكافية نتيجة سلبية أمام هذه الوحدة النمطية ، فستقوم الوحدة بإرجاع إجابة إيجابية. سيتم تجاهل الوحدات المتبقية.
- اختياري (اختياري): في حالة عدم وجود وحدات نمطية مطلوبة في المكدس ولم تعيد أي من الوحدات النمطية الكافية نتيجة إيجابية ، فيجب أن تقوم إحدى الوحدات النمطية الاختيارية على الأقل بإرجاع إجابة إيجابية.
المحتويات الكاملة للملف
/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

احفظ الملف ، ثم نفذ
$ sudo pam-auth-update
في النافذة التي تظهر ، ضع علامة النجمة بالقرب من
Rutoken PAM GOST وانقر فوق
موافق
8) التحقق من الإعداد
لفهم أن كل شيء تم تكوينه ، ولكن ليس لفقدان القدرة على تسجيل الدخول ، أدخل الأمر
$ sudo login
أدخل اسم المستخدم الخاص بك. تم تكوين كل شيء بشكل صحيح إذا كان النظام يتطلب PIN الجهاز.

9) تكوين قفل الكمبيوتر عند استخراج الرمز
تتضمن الحزمة
libpam-pkcs11
الأداة المساعدة
pkcs11_eventmgr,
والتي تتيح لك تنفيذ إجراءات متنوعة عند حدوث أحداث PKCS # 11.
لتكوين
pkcs11_eventmgr
استخدم ملف التكوين:
/etc/pam_pkcs11/pkcs11_eventmgr.conf
بالنسبة إلى توزيعات Linux المختلفة ، سيكون الأمر الذي يؤدي إلى قفل الحساب عند إزالة البطاقات الذكية أو الرموز المميزة مختلفًا. انظر event card_remove
.ويرد مثال ملف التكوين أدناه:
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"; } }
بعد ذلك ، أضف تطبيق
pkcs11_eventmgr
إلى
pkcs11_eventmgr
. للقيام بذلك ، قم بتحرير الملف .bash_profile:
$ nano /home/<_>/.bash_profile
أضف السطر pkcs11_eventmgr إلى نهاية الملف وإعادة التشغيل.
يمكن استخدام الخطوات الموضحة لتكوين نظام التشغيل كإرشادات في أي توزيع Linux حديث ، بما في ذلك المحلية.
استنتاج
أصبحت أجهزة كمبيوتر Linux أكثر شيوعًا في الوكالات الحكومية الروسية ، كما أن إعداد مصادقة موثوق بها ثنائية العامل في نظام التشغيل هذا ليس بالأمر السهل دائمًا. سنكون سعداء بهذا الدليل للمساعدة في حل "مشكلة كلمة المرور" وحماية الوصول إلى جهاز الكمبيوتر الخاص بك بشكل موثوق دون قضاء الكثير من الوقت في ذلك.