docs:pam
اختلافات
عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.
جانبي المراجعة السابقةالمراجعة السابقة | |||
docs:pam [2008/06/11 14:27] – dabash | docs:pam [2015/04/23 03:20] (حالي) – تحرير خارجي 127.0.0.1 | ||
---|---|---|---|
سطر 1: | سطر 1: | ||
+ | {{tag> | ||
+ | ~~ODT~~ | ||
+ | ====== مواثقة المستخدمين | ||
+ | تشرح هذه المقالة كيف تخزن معلومات المستخدمين والمجموعات وكيف يتم مواثقة المستخدمين في نظام لينكس (عبر وحدات المواثقة | ||
+ | * المؤلف: | ||
+ | * الموقع: | ||
+ | * موقع اخر: http:// | ||
+ | * ترجمة: زياد حسين دبش | ||
+ | |||
+ | ===== مقدمة ===== | ||
+ | |||
+ | ===== كيف تخزن معلومات المستخدمين ===== | ||
+ | ==== ملف / | ||
+ | |||
+ | |||
+ | تقريبا على جميع توزيعات لنوكس ( والتجارية أيضا مثل يونكس) ، تخزن معلومات عن المستخدم فى / | ||
+ | |||
+ | نموذج لما سبق فى /etc/passwd تبدو | ||
+ | < | ||
+ | pete: | ||
+ | </ | ||
+ | وكما ترون ، انها ببساطة خطية ولا تحوي فراغ | ||
+ | |||
+ | ==== كلمات سر الظل ==== | ||
+ | |||
+ | بالنظر في /etc/passwd ، فانه من المحتمل ان تشاهد شيئا كهذا : | ||
+ | < | ||
+ | pete: | ||
+ | </ | ||
+ | اين ذهبت كلمة السر المشفره؟ قبل ان اقول لكم اين ذهبت ، اعتقد انه يتطلب قليلا من التوضيح. | ||
+ | |||
+ | الملف/ | ||
+ | |||
+ | وعند تشغيل نظام | ||
+ | حقل نموذجي يشبه هذا : | ||
+ | < | ||
+ | pete:/ | ||
+ | </ | ||
+ | |||
+ | ==== ملفي / | ||
+ | |||
+ | مجموعة المعلومات التي يتم حفظها في /etc/group. الشكل مماثل لملف / | ||
+ | اي حقل (سطر) /etc/group سيبدو هكذا : | ||
+ | |||
+ | pasta: | ||
+ | |||
+ | |||
+ | وكما ترون من " | ||
+ | |||
+ | ==== كلمات السر المشفرة MD5 ==== | ||
+ | |||
+ | تقليديا ، كانت كلمات السر في يونيكس مشفره مع crypt() function القياسية. (لمزيد من المعلومات عن crypt() function القياسية ، انظر crypt(3) manpage.) وكما تطورت الحواسيب واصبحت سريعة، كلما اصبح كسر كلمات السر المشفره بهذه الطريقة اسهل. وكما وفرت شبكة الانترنت ، الأدوات المهمة لكسر كلمات السر - عبر عدة مواقع استضافه. كثير من احدث التوزيعات توزع مع خيار تشفير كلمات السر مع خوارزميه | ||
+ | |||
+ | ==== التخبط في الفوضى ==== | ||
+ | |||
+ | وكما ترون ، هناك عدد من الطرق المختلفة لتحقق من معلومات المستخدم التي يمكن تخزينها على جهازك (كلمات سر الظل دون تشفيرmd5ـ | ||
+ | |||
+ | ===== وحدات المواثقة | ||
+ | تعتبر PAM لب نظام المواثقة في أي توزيعة لينكس حديثة | ||
+ | |||
+ | ==== لماذا ؟ ==== | ||
+ | بالعودة الى بدايات لينكس ، اذا كان احد البرامج ، مثل su ، passwd ، login، او xlock ، في حاجة الى توثيق المستخدم ، فانه ببساطة يقوم بقراءة المعلومات الضروريه من / | ||
+ | |||
+ | نقلا عن دليل نظام لينوكس-PAM | ||
+ | مع PAM ، ولا يهم ما اذا كانت | ||
+ | |||
+ | كما اسلفنا فأن المرونة هي واحدة من اكبر نقاط القوة في PAM. اذ يمكن ان تهيء بعض | ||
+ | ان تصميم PAM المعياري يعطيك سيطره كاملة على كيفية توثيق والتحقق من المستخدمين. | ||
+ | |||
+ | ==== ملفات اعدادات | ||
+ | يتم تخزين ملفات الاعدادات | ||
+ | |||
+ | < | ||
+ | ~$ cd /etc/pam.d | ||
+ | / | ||
+ | chfn chsh login other passwd su xlock | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | لنلقي نظر على تركيبة اعدادات PAM ولناخذ الملف login على سبيل المثال | ||
+ | < | ||
+ | / | ||
+ | # PAM configuration for login | ||
+ | auth | ||
+ | auth | ||
+ | auth | ||
+ | auth | ||
+ | account | ||
+ | session | ||
+ | session | ||
+ | password | ||
+ | </ | ||
+ | |||
+ | ==== صيغة الاعدادات ==== | ||
+ | |||
+ | اعدادات ملفات PAM تأخذ الشكل التالي | ||
+ | |||
+ | type control | ||
+ | | ||
+ | |||
+ | بالعودة الى المثال السابق فتحنا ملف التوثيق التابع للامر login فان التركيبة للملف تكون على النحو التالي | ||
+ | *** type**: يحدد ما هو نوع التوثيق لاستخدامها لهذه الوحدة. كما وان وحدات من نفس النوع يمكن وضعها في رزم | ||
+ | * account يقرر ما اذا كان يسمح للمستخدم الوصول الى الخدمة ، وفي ما اذا كانت كلمات السر قد انتهت صلاحيتها ، الخ. | ||
+ | * auth تحديد ما اذا كان المستخدم هو نفسه الذي يدعي ان يكون ام لا ، عادة عن طريق كلمة سر ، ولكن ربما أكثر وذلك باستخدام وسائل | ||
+ | * Password | ||
+ | * session | ||
+ | |||
+ | في ملف إعداد الولوج login، نحن نرى نوع واحد على الاقل لكل نوع من انواع الدخول. وبما ان هذا البرنامج الذي يتيح للمستخدم تسجيل الدخول، فإنه من المفهوم انه بحاجة الى الحصول على جميع انواع التوثيق المختلفة انفة الذكر. | ||
+ | |||
+ | *** control (التحكم)**: | ||
+ | * requisite **( أساسي, ضروري)**عدم التصديق على النتائج عن طريق هذا النموذج ينتهي بنفي فوري للتوثيق. | ||
+ | * required **( مطلوب)** فشل في نتائج التوثيق يؤدي ايضا على رفض التوثيق ، ولكن PAM وعلى الرغم | ||
+ | * sufficient | ||
+ | * optional **(اختياري)**ما اذا كان هذا النموذج قد نجح او فشل فهو الوحيد الذي يعتد به ، اذا كان هو النموذج الوحيد من نوعه لهذه الخدمة. | ||
+ | |||
+ | في ملف الاعدادات | ||
+ | |||
+ | * **module-path: | ||
+ | |||
+ | * **module-arguments**: | ||
+ | |||
+ | ==== أمثلة على ملفات الإعدادات ==== | ||
+ | |||
+ | |||
+ | امثلة على استخدام PAM | ||
+ | |||
+ | مثال 1 | ||
+ | |||
+ | **حصر المستخدم بامكانية دخولة النظام باوقات معينة** | ||
+ | |||
+ | سأطرح موضوع وهو كيفيه حصر المستخدم بامكانية دخولة النظام فقط بساعات وايام العمل الرسمية ومنعة من استخدامه في غير ذلك كايام العطل وبعد الدوام والعطلة الاسبوعية | ||
+ | لهذا سنتكلم عن ملفين للتحكم بهذه الخاصية | ||
+ | < | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | لذلك نحتاج ان نغير في الملف / | ||
+ | وذلك باضافة pam_time.so | ||
+ | |||
+ | كالتالي | ||
+ | |||
+ | < | ||
+ | account | ||
+ | </ | ||
+ | وكذلك تغير الملف | ||
+ | / | ||
+ | |||
+ | على سبيل المثال | ||
+ | في هذا المثال هناك خدمتان وهما امكانة الدخول للنظام (login) والمحطة الطرفية التي ينطبق عليها هذا الشرط ليتمكن المستخدم من استعمالها للدخول الى النظام (ttyp*)وهي في المثال كل المحطات الطرفية.في المثال التالي كل المستخدمين باستثناء المستخدم user1 بامكانهم الدخول الى النظام من اي محطة طرفية في خلال كل الايام من الساعة 9 صباحا الى الساعة 6والنصف مساءا | ||
+ | < | ||
+ | login; | ||
+ | </ | ||
+ | مثال اخر | ||
+ | فقط المستخدم ستيف بامكانة الدخول خلال ايام العطل من الساعة 7 صباحا وحتى الساعة 5 مساءا | ||
+ | < | ||
+ | login; | ||
+ | </ | ||
+ | مثال اخر | ||
+ | المستخدم بيبلو والمستخدم فرودو بامكانهم الدخول للنظام مابين الساعة 8 صباحا والساعة 5 مساءا ماعدا يوم الاحد | ||
+ | < | ||
+ | login; | ||
+ | </ | ||
+ | صيغة الجملة كالتالي | ||
+ | < | ||
+ | services; | ||
+ | </ | ||
+ | التعابير المنطقية &|! | ||
+ | تطبق على user و terminal و time | ||
+ | بحيث تاتي اشارة ! قبل المستخدم والمحطة الطرفية والوقت لدلالة على الا ستثناء | ||
+ | وتأتي اشارة & و | للدلالة على و , او | ||
+ | services | ||
+ | وهي قائمة الخدمات التي يمكن ان تطبق عليها القواعد والشروط | ||
+ | ttys | ||
+ | قائمة المحطات الطرفية التي تنطبق عليه الاحكام والشروط من قبل PAM | ||
+ | users | ||
+ | قائمة المستخدمين الذين تطبق عليهم الاحكام والشروط | ||
+ | times | ||
+ | الوقت : وهو قائمة الايام والفترة التي ينطبق بها احكام وشروط PAMبحيث ان اليوم يرمز له بحرفين مثلا MoTuSa يرمز ليوم الاثنين والثلاثاء والسبت | ||
+ | لاحظ ان تكرار اسم اليوم كالتالي MoMo تعني باستثناء يوم الاثنين | ||
+ | مثال اخر MoWk تعني كل ايام الاسبوع باستثناء الاثنين لانة تكرر بذكرة مباشرة وانة ضمن كل ايام الاسبوع فبهذا تم استثناءة | ||
+ | الحروف التي ترمز للايام هي | ||
+ | < | ||
+ | Mo:Monday | ||
+ | Tu: Thursday | ||
+ | We: Wednesday | ||
+ | Th: Thursday | ||
+ | Fr: Friday | ||
+ | Sa: Saturday | ||
+ | Su: Sunday | ||
+ | Wk: week days without week end | ||
+ | Wd: week end | ||
+ | Al: all 7 days | ||
+ | </ | ||
+ | مدى الوقت ويقسم الى خانتين تفصلهنا اشارة (-) كل جزء يتكون من توقيت 24 ساعة بصورة HHMM | ||
+ | بحيث ان الجزء الاول يرمز للبداية والجزء الاخر يرمز للنهاية | ||
+ | ملاحظة | ||
+ | هذا المثال لا يغطي كل استخدامات PAM ولكنة فقط يتحدث عن تحديد الوقت لدخول المستخدم الى النظام بشكل مختصر | ||
+ | |||
+ | | ||
+ | |||
+ | **كيف نستخد PAM للتحكم بالخدمات ** | ||
+ | |||
+ | خلال عملي واجهني تحدي كيف امنع المستخدم رووت من الدخول على النظام مباشرة من خلال خدمة SSH | ||
+ | |||
+ | تحت /etc/pam.d هناك ملفات ترتبط باي خدمة (service ) او امر ما موجود على النظام مثل sudo, login, sshd كما في المشاركة السابقة تحدثنا عن login لذ في هذه الحالة سنفتح ملف / | ||
+ | كل مافي الامر هو اضافة السطر التالي في بداية الملف | ||
+ | < | ||
+ | auth | ||
+ | </ | ||
+ | هذا السطر يقوم بالتدقيق على الاسم المستخدم من خلال الخدمة ssh (ﻻحظ ان الملف اسمه sshd لذا فهو يرتبط بالخدمة مباشرة) فاذا كان ضمن المستخدمين المصرح لهم بهذه الخدمة والمذكورين في ملف / | ||
+ | |||
+ | ﻻحظ استخدمنا شرط التدقيق required اي ان تحقيق هذا الشرط ﻻ بد منه واﻻ فان التدقيق لن يكمل للتحقق من الشروط في السطور التالية في الملف. | ||
+ | |||
+ | في الملف sshd.allow المذكور انفا علينا ان نفتحه وندرج في كل سطر اسم المستخدمين المصرح لهم باستخدام هذه الخدمة وبما اننا نريد ان نمنع المستخدم root من استخدام هذه الخدمة فانة يترتب علينا ان ندرج اسماء المستخدين المسموح لهم بذلك فقط | ||
+ | |||
+ | onerr=fail اذا كان الملف غير موجود او هيئة الملف غير صحيحة فان العم PAM لا ولن يسمح بلاتصال | ||
+ | |||
+ | التحدي الان هو كيف اعمل العكس | ||
+ | فلا يعقل ان نقوم بسرد جميع المستخدمين في حين اننا نريد ان نمنع مستخدم واحد او اثنين | ||
+ | |||
+ | قما قلنا سابقا لتفادي ادراج جميع اسماء المستخدمين في ملف المستخدمين المسموح لهم باستخدام خدمة معينه علينا ان ننظر الى الوضع العكسي وذلك بتشغيل PAM لمنع المستخدمين المدرجين في ملف ما | ||
+ | لذا نقوم بعكس الية التحقق لتكون كالتالي | ||
+ | |||
+ | < | ||
+ | |||
+ | auth required | ||
+ | </ | ||
+ | غيرنا نوع التدقيق من مسموح sense=allow الى غير مسموح sense=deny | ||
+ | انشاء ملف جديد يحوي اسماء المستخدمين الغير مسموح لهم باستخدام هذه الخدمة file=/ | ||
+ | |||
+ | onerr=succeed اذا حصل خطا ما فان العم PAM وفي جيع الحالات لن يسمح بلاتصال ويرجع رساله PAM_SUCCESSلدلالة على ان حاسة التدقيق نجحت والتي هي sense=deny | ||
+ | |||
+ | ملاحظة | ||
+ | امر PAM واسع ومتشعب وكبير يحتاج الى متابعة ومطالعة | ||
+ | |||
+ | تم.... | ||
+ | |||
+ | |||
+ | --- // |
docs/pam.txt · آخر تعديل: 2015/04/23 03:20 بواسطة 127.0.0.1