كيفية تكوين واستخدام PAM في Linux

instagram story viewer

لينكس بام (باختصار ل وحدات المصادقة القابلة للتوصيل التي تطورت من بنية Unix-PAM) هي مجموعة قوية من المكتبات المشتركة المستخدمة لمصادقة المستخدم ديناميكيًا على التطبيقات (أو الخدمات) في نظام Linux.

إنه يدمج وحدات مصادقة متعددة منخفضة المستوى في واجهة برمجة تطبيقات عالية المستوى توفر دعمًا ديناميكيًا للمصادقة للتطبيقات. يتيح ذلك للمطورين كتابة التطبيقات التي تتطلب المصادقة ، بشكل مستقل عن نظام المصادقة الأساسي.

تدعم العديد من توزيعات Linux الحديثة لينكس بام (المشار إليها فيما يلي باسم "بام") بشكل افتراضي. في هذه المقالة ، سنشرح كيفية تكوين الإعدادات المتقدمة بام في أوبونتو و CentOS الأنظمة.

قبل المضي قدمًا ، لاحظ ما يلي:

  • بصفتك مسؤول النظام ، فإن أهم شيء هو إتقان كيفية تعريف ملف (ملفات) تكوين PAM للاتصال بين التطبيقات (الخدمات) ووحدات المصادقة القابلة للتوصيل (PAMs) التي تقوم بإجراء المصادقة الفعلية مهام. لا تحتاج بالضرورة إلى فهم العمل الداخلي لحزب الأصالة والمعاصرة.
  • لدى PAM القدرة على تغيير أمان نظام Linux الخاص بك بشكل خطير. يمكن أن يؤدي التكوين الخاطئ إلى تعطيل الوصول إلى نظامك جزئيًا أو كليًا. على سبيل المثال ، الحذف العرضي لملف (ملفات) التكوين الموجود ضمن /etc/pam.d/* و / أو /etc/pam.conf يمكن أن يحجبك عن نظامك الخاص!

كيفية التحقق من أن البرنامج يدرك PAM

يوظف بام، يجب أن يكون التطبيق / البرنامج "بام على علم“; يجب أن تكون مكتوبة ومجمعة خصيصًا لاستخدام PAM. لمعرفة ما إذا كان البرنامج "يدرك حزب الأصالة والمعاصرة"أم لا ، تحقق مما إذا كان قد تم تجميعه مع مكتبة PAM باستخدام الأمر ldd.

على سبيل المثال sshd:

$ sudo ldd / usr / sbin / sshd | grep libpam.so libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007effddbe2000)

كيفية تكوين PAM في Linux

ملف التكوين الرئيسي لـ بام يكون /etc/pam.conf و ال /etc/pam.d/ يحتوي الدليل على ملفات تكوين PAM لكل تطبيق / خدمة مدركين لـ PAM. سوف يتجاهل PAM الملف إذا كان الدليل موجودًا.

فيما يلي صيغة ملف التكوين الرئيسي. يتكون الملف من قائمة قواعد مكتوبة في سطر واحد (يمكنك توسيع القواعد باستخدام امتداد “\” حرف الهروب) والتعليقات مسبوقة بـ “#” ويمتد إلى نهاية السطر التالية.

تنسيق كل قاعدة عبارة عن مجموعة من الرموز المميزة مفصولة بمسافة (الثلاثة الأولى غير حساسة لحالة الأحرف). سنشرح هذه الرموز المميزة في الأقسام اللاحقة.

نوع الخدمة وحدة وسيطات وحدة علم التحكم 

أين:

  • الخدمات: اسم التطبيق الفعلي.
  • اكتب: نوع الوحدة / السياق / الواجهة.
  • علم التحكم: يشير إلى سلوك PAM-API في حالة فشل الوحدة النمطية في مهمة المصادقة الخاصة بها.
  • وحدة: اسم الملف المطلق أو اسم المسار النسبي لـ PAM.
  • وحدة الحجج: قائمة الرموز المميزة مفصولة بمسافات للتحكم في سلوك الوحدة.

بناء جملة كل ملف بتنسيق /etc/pam.d/ مشابه لملف الملف الرئيسي ويتكون من أسطر بالشكل التالي:

اكتب وحدة وسيطات وحدة علم التحكم. 

هذا مثال على تعريف قاعدة (بدون وحدة وسائط) موجود في ملف /etc/pam.d/sshd ، والذي لا يسمح بتسجيل الدخول غير الجذر عندما /etc/nologin موجود:

الحساب مطلوب pam_nologin.so. 

فهم مجموعات إدارة PAM وعلامات التحكم

بام يتم تقسيم مهام المصادقة إلى أربع مجموعات إدارة مستقلة. تدير هذه المجموعات جوانب مختلفة من طلب المستخدم العادي لخدمة مقيدة.

الوحدة النمطية مرتبطة بأحد أنواع مجموعات الإدارة هذه:

  • الحساب: تقديم خدمات للتحقق من الحساب: هل انتهت صلاحية كلمة مرور المستخدم ؟؛ هل هذا المستخدم مسموح له بالدخول إلى الخدمة المطلوبة ؟.
  • المصادقة: مصادقة مستخدم وإعداد بيانات اعتماد المستخدم.
  • كلمه السر: مسؤول عن تحديث كلمات مرور المستخدم والعمل مع وحدات المصادقة.
  • جلسة: إدارة الإجراءات التي يتم تنفيذها في بداية الجلسة ونهاية الجلسة.

بام يجب وضع ملفات الكائنات القابلة للتحميل (الوحدات النمطية) في الدليل التالي: /lib/security/ أو /lib64/security حسب الهندسة المعمارية.

المدعومة أعلام التحكم نكون:

  • مطلوب: يعيد الفشل على الفور التحكم إلى التطبيق مشيرًا إلى طبيعة فشل الوحدة الأولى.
  • مطلوب: كل ​​هذه الوحدات مطلوبة للنجاح ليبام لإعادة التطبيق بنجاح.
  • كاف: نظرًا لأن جميع الوحدات السابقة قد نجحت ، فإن نجاح هذه الوحدة يؤدي إلى عودة فورية وناجحة للتطبيق (يتم تجاهل فشل هذه الوحدة).
  • خياري: لا يتم تسجيل نجاح أو فشل هذه الوحدة بشكل عام.

بالإضافة إلى الكلمات الرئيسية المذكورة أعلاه ، هناك علامتان أخريان صالحتان للتحكم:

  • يشمل: تضمين كافة الأسطر من نوع معين من ملف التكوين المحدد كوسيطة لعنصر التحكم هذا.
  • احتياطي: تضمين كافة الأسطر من نوع معين من ملف التكوين المحدد كوسيطة لعنصر التحكم هذا.

كيفية تقييد وصول الجذر إلى خدمة SSH عبر PAM

كمثال ، سنقوم بتهيئة كيفية استخدام PAM ل تعطيل وصول المستخدم الجذر إلى نظام عبر SSH وبرامج تسجيل الدخول. هنا ، نريد تعطيل وصول المستخدم الجذر إلى النظام ، عن طريق تقييد الوصول إلى خدمات تسجيل الدخول و sshd.

يمكننا استخدام /lib/security/pam_listfile.so الوحدة النمطية التي توفر مرونة كبيرة في الحد من امتيازات حسابات معينة. فتح وتحرير الملف للخدمة الهدف في /etc/pam.d/ الدليل كما هو موضح.

sudo vim /etc/pam.d/sshd $. أو. sudo vim /etc/pam.d/login $. 

أضف هذه القاعدة في كلا الملفين.

المصادقة مطلوبة pam_listfile.so \ onerr = عنصر النجاح = شعور المستخدم = رفض الملف = / etc / ssh / رفض المستخدمون. 

شرح الرموز المميزة في القاعدة أعلاه:

  • المصادقة: هي نوع الوحدة (أو السياق).
  • مطلوب: هي علامة تحكم تعني أنه في حالة استخدام الوحدة النمطية ، يجب أن تمر أو ستفشل النتيجة الإجمالية ، بغض النظر عن حالة الوحدات النمطية الأخرى.
  • pam_listfile.so: هي وحدة نمطية توفر طريقة لرفض أو السماح بالخدمات بناءً على ملف تعسفي.
  • onerr = تنجح: حجة الوحدة.
  • العنصر = المستخدم: وسيطة الوحدة النمطية التي تحدد ما هو مدرج في الملف ويجب التحقق منه.
  • الشعور = ينكر: وسيطة الوحدة النمطية التي تحدد الإجراء الذي يجب اتخاذه إذا تم العثور عليه في الملف ، وإذا لم يتم العثور على العنصر في الملف ، فسيتم طلب الإجراء المعاكس.
  • ملف = / etc / ssh / denusers: وسيطة الوحدة النمطية التي تحدد ملفًا يحتوي على عنصر واحد في كل سطر.

بعد ذلك ، نحتاج إلى إنشاء الملف /etc/ssh/deniedusers وأضف الاسم جذر فيه:

sudo vim / etc / ssh / denusers. 

احفظ التغييرات وأغلق الملف ، ثم قم بتعيين الأذونات المطلوبة عليه:

sudo chmod 600 $ / etc / ssh / Denusers. 

من الآن فصاعدًا ، ستطلب القاعدة المذكورة أعلاه من حزب الأصالة والمعاصرة استشارة /etc/ssh/deniedusers ملف ورفض الوصول إلى SSH وخدمات تسجيل الدخول لأي مستخدم مدرج.

كيفية تكوين Advanced PAM في Linux

لكتابة قواعد PAM أكثر تعقيدًا ، يمكنك استخدام صالح أعلام التحكم بالشكل التالي:

اكتب [value1 = action1 value2 = action2…] وسيطات الوحدة النمطية. 

أين القيمة يتوافق مع رمز الإرجاع من الوظيفة التي تم استدعاؤها في الوحدة النمطية التي تم تعريف السطر من أجلها. يمكنك العثور على القيم المدعومة من الإنترنت دليل مسؤول PAM. القيمة الخاصة هي القيمة الافتراضية ، مما يعني أن جميع قيم valueN غير المذكورة صراحةً.

ال عمل يمكن أن يتخذ أحد الأشكال التالية:

  • يتجاهل: إذا تم استخدام هذا الإجراء مع مجموعة من الوحدات النمطية ، فلن تساهم حالة إرجاع الوحدة النمطية في رمز الإرجاع الذي يحصل عليه التطبيق.
  • سيء: يشير إلى أنه يجب اعتبار كود الإرجاع مؤشرا على فشل الوحدة. إذا كانت هذه الوحدة هي الأولى في المكدس التي تفشل ، فسيتم استخدام قيمة الحالة الخاصة بها لقيمة المكدس بالكامل.
  • موت: مكافئ إلى سيئ ولكن قد ينهي مكدس الوحدة ويعود PAM على الفور إلى التطبيق.
  • حسنا: هذا يوجه PAM إلى أن مسؤول النظام يعتقد أن كود الإرجاع هذا يجب أن يساهم بشكل مباشر في كود الإرجاع للمكدس الكامل للوحدات النمطية.
  • فعله: أي ما يعادل حسنا ولكن قد ينهي مكدس الوحدة ويعود PAM على الفور إلى التطبيق.
  • N (عدد صحيح بدون إشارة): أي ما يعادل حسنا ولكن قد يقفز فوق التالي ن وحدات في المكدس.
  • إعادة ضبط: يقوم هذا الإجراء بمسح كل ذاكرة حالة مكدس الوحدة النمطية وإعادة التشغيل باستخدام الوحدة النمطية المكدسة التالية.

كل من الكلمات الرئيسية الأربع: مطلوب؛ متطلب كاف؛ والاختياري ، يكون لها تعبير مكافئ من حيث [...] بناء الجملة ، والذي يسمح لك بكتابة قواعد أكثر تعقيدًا وهي:

  • مطلوب: [النجاح = حسنًا new_authtok_reqd = طيب تجاهل = تجاهل الافتراضي = سيء]
  • مطلوب: [النجاح = حسنًا new_authtok_reqd = موافق تجاهل = تجاهل الافتراضي = موت]
  • كاف: [النجاح = تم new_authtok_reqd = تم الإعداد الافتراضي = تجاهل]
  • خياري: [النجاح = حسنًا new_authtok_reqd = موافق افتراضي = تجاهل]

فيما يلي مثال من حديث CentOS 7 النظام. دعونا ننظر في هذه القواعد من /etc/pam.d/postlogin ملف PAM:

#٪ PAM-1.0. # هذا الملف تم إنشاؤه تلقائيًا. # سيتم إتلاف تغييرات المستخدم في المرة التالية التي يتم فيها تشغيل authconfig. جلسة [Success = 1 افتراضي = ignore] pam_succeed_if.so خدمة! ~ gdm * service! ~ su * quiet. الجلسة [افتراضي = 1] pam_lastlog.so nowtmp showfailed. جلسة اختيارية pam_lastlog.so تظهر فشل noupdate الصامت. 

فيما يلي مثال آخر على التكوين من ملف /etc/pam.d/smartcard-auth ملف PAM:

#٪ PAM-1.0. # هذا الملف تم إنشاؤه تلقائيًا. # سيتم إتلاف تغييرات المستخدم في المرة التالية التي يتم فيها تشغيل authconfig. المصادقة مطلوبة pam_env.so. المصادقة [النجاح = تم التجاهل = تجاهل الافتراضي = يموت] pam_pkcs11.so nodebug wait_for_card. المصادقة مطلوبة pam_deny.so الحساب مطلوب pam_unix.so. حساب كاف pam_localuser.so. حساب كافٍ pam_succeed_if.so uid <1000 هادئ. مطلوب الحساب pam_permit.so كلمة المرور مطلوبة pam_pkcs11.so جلسة اختيارية pam_keyinit.so إبطال. الجلسة المطلوبة pam_limits.so. -جلسة اختيارية pam_systemd.so. جلسة [Success = 1 افتراضي = ignore] خدمة pam_succeed_if.so في خدمة use_uid الهادئة. الجلسة المطلوبة pam_unix.so. 

لمزيد من المعلومات ، راجع بام د صفحة الدليل:

$ رجل بامد 

أخيرًا ، يمكن العثور على وصف شامل لبناء جملة ملف التكوين وجميع وحدات PAM في ملف وثائق لينوكس بام.

ملخص

بام هي واجهة برمجة تطبيقات قوية عالية المستوى تسمح للبرامج التي تعتمد على المصادقة للمستخدمين الموثوقين للتطبيقات في نظام Linux. إنه أمر قوي ولكنه صعب للغاية لفهمه واستخدامه.

في هذه المقالة ، أوضحنا كيفية تكوين الميزات المتقدمة لـ PAM في Ubuntu و CentOS. إذا كان لديك أي أسئلة أو تعليقات تريد مشاركتها ، فاستخدم نموذج الملاحظات أدناه.

Teachs.ru