mokey هو تطبيق ويب يوفر أدوات إدارة حساب المستخدم ذاتية الخدمة لـ FreeIPA. كان الدافع لهذا المشروع هو تنفيذ وظيفة إنشاء حساب الخدمة الذاتية وإعادة تعيين كلمة المرور المفقودة في FreeIPA. لا يتم توفير هذه الميزة افتراضيًا في FreeIPA، راجع هنا لمزيد من المعلومات والسبب المنطقي وراء هذا القرار. mokey ليس مكونًا إضافيًا لـ FreeIPA ولكنه تطبيق مستقل كامل يستخدم FreeIPA JSON API. لا يتطلب mokey أي تغييرات على مخطط LDAP الأساسي ويستخدم قاعدة بيانات MariaDB لتخزين رموز الوصول. يمكن تخصيص تجربة المستخدم وواجهة الويب لتناسب متطلبات شكل المؤسسة ومظهرها. mokey مكتوب بلغة Go وتم إصداره بموجب ترخيص BSD معدّل.
يجب اعتبار mokey برنامج ألفا واستخدامه على مسؤوليتك الخاصة. هناك مخاطر أمنية متأصلة في توفير ميزات مثل إعادة تعيين كلمة مرور الخدمة الذاتية ويمكن أن تجعل أنظمتك عرضة لإساءة الاستخدام.
ملحوظة: يجب تثبيت mokey على جهاز مسجل بالفعل في FreeIPA. يوصى أيضًا بتثبيت حزمة ipa-admintools. تسجيل مضيف في FreeIPA يقع خارج نطاق هذا المستند.
لتثبيت mokey، قم بتنزيل نسخة من الملف الثنائي المترجم مسبقًا هنا.
أرشيف tar.gz:
$ tar xvzf mokey-VERSION-linux-x86_64.tar.gz
حزم deb، rpm:
$ sudo dpkg -i mokey_VERSION_amd64.deb
$ sudo rpm -ivh mokey-VERSION-amd64.rpm
أنشئ حساب مستخدم ودورًا في FreeIPA باستخدام امتياز "تعديل المستخدمين وإعادة تعيين كلمات المرور". سيتم استخدام حساب المستخدم هذا بواسطة تطبيق mokey لإعادة تعيين كلمات مرور المستخدمين. يحتاج إذن "تعديل المستخدمين" أيضًا إلى تمكين "ipauserauthtype". قم بتشغيل الأوامر التالية (يتطلب تثبيت ipa-admintools):
$ mkdir /etc/mokey/private
$ kinit adminuser
$ ipa role-add 'Mokey User Manager' --desc='Mokey User management'
$ ipa role-add-privilege 'Mokey User Manager' --privilege='User Administrators'
$ ipa user-add mokeyapp --first Mokey --last App
$ ipa role-add-member 'Mokey User Manager' --users=mokeyapp
$ ipa permission-mod 'System: Modify Users' --includedattrs=ipauserauthtype
$ ipa-getkeytab -s [your.ipa-master.server] -p mokeyapp -k /etc/mokey/private/mokeyapp.keytab
$ chmod 640 /etc/mokey/private/mokeyapp.keytab
$ chgrp mokey /etc/mokey/private/mokeyapp.keytab
تحرير ملف التكوين mokey وتعيين المسار إلى ملف keytab. سيتم إنشاء قيم token_secret
و csrf_secret
تلقائيًا لك إذا تركت فارغة. قم بتعيين هذه القيم السرية إذا كنت تريد أن تستمر الجلسات بعد إعادة التشغيل. للحصول على خيارات التكوين الخاصة بالموقع الأخرى، انظر هنا:
$ vim /etc/mokey/mokey.toml
# Path to keytab file
keytab = "/etc/mokey/private/mokeyapp.keytab"
# Secret key for branca tokens. Must be 32 bytes. To generate run:
# openssl rand -hex 32
token_secret = ""
# CSRF token secret key. Should be a random string
csrf_secret = ""
يوصى بشدة بتشغيل mokey باستخدام HTTPS. ستحتاج إلى شهادة SSL/private_key إما باستخدام PKI الخاص بـ FreeIPA، أو بالتوقيع الذاتي، أو من مرجع مصدق تجاري. إن إنشاء شهادات SSL يقع خارج نطاق هذا المستند. يمكنك أيضًا تشغيل mokey خلف haproxy أو Apache/Nginx.
بدء خدمة mokey:
$ systemctl restart mokey
$ systemctl enable mokey
يسمح mokey للمستخدمين بإضافة/إزالة مفاتيح SSH العامة. يمكن تكوين الخوادم المسجلة في FreeIPA بحيث تحتوي على المفاتيح العامة لمستخدمي بحث sshd في LDAP عن طريق إضافة الأسطر التالية في /etc/ssh/sshd_config وإعادة تشغيل sshd:
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
ينفذ mokey تدفق تسجيل الدخول/الموافقة للتعامل مع طلبات التحدي من Hydra. وهذا بمثابة الجسر بين موفر هوية Hydra وFreeIPA. لمزيد من المعلومات حول Hydra وتدفق تسجيل الدخول/الموافقة، انظر هنا.
لتكوين تدفق تسجيل الدخول/الموافقة لـ Hydra، قم بتعيين المتغيرات التالية في /etc/mokey/mokey.toml
:
[hydra]
admin_url = "http://127.0.0.1:4445"
login_timeout = 86400
fake_tls_termination = true
ستتم مصادقة أي عملاء OAuth تم تكوينهم في Hydra عبر mokey باستخدام FreeIPA كموفر الهوية. للحصول على مثال لتطبيق عميل OAuth 2.0/OIDC، انظر هنا.
أولاً، ستحتاج إلى إصدار Go v1.21 أو إصدار أحدث. استنساخ المستودع:
$ git clone https://github.com/ubccr/mokey
$ cd mokey
$ go build .
يتم إصدار mokey بموجب ترخيص نمط BSD. انظر ملف الترخيص.