السلام عليكم ورحمة الله وبركاته

Pluggable Authintication Modules

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

لنتعرف على اساسيات الاعداد أولا ، ونعرف مجلد الاعداد ومجلد استدعاء المكتبات او المودلز

اولا / مجلد pam.d ، ويستخدم لاستدعاء المكتبات


كود:
[root@example ~]# cd /etc/pam.d
 [root@example pam.d]# ls
 apol			printconf					 system-config-keyboard
 atd			 printconf-gui				 system-config-language
 authconfig	  printconf-tui				 system-config-lvm
 authconfig-gtk  printtool					 system-config-mouse
 bindconf		quagga			 ...............................
ستجد الكثير من الملفات بداخلة ، كل ملف منها تابع لخدمة أو امر أو تطبيق.

كل ملف يحتوي بداخلة على اعدادات خاصه فيه فمثلا ملف login فلننظر الى محتواه
كود:
[root@example pam.d]# cat login
 #%PAM-1.0
 auth	   required	 pam_securetty.so
 auth	   required	 pam_stack.so service=system-auth
 auth	   required	 pam_nologin.so
 account	required	 pam_stack.so service=system-auth
 password   required	 pam_stack.so service=system-auth
 # pam_selinux.so close should be the first session rule
 session	required	 pam_selinux.so close
 session	required	 pam_stack.so service=system-auth
 session	required	 pam_loginuid.so
 session	optional	 pam_console.so
 # pam_selinux.so open should be the last session rule
 session	required	 pam_selinux.so multiple open
من اليسار لليمين يحتوي على اربع اعمدة كل عمود له معنى او خاصيه او استدعاء ، سأقوم بتوضيح العمل كما يلي

كود:
type  control  module-path  module-arguments
العمود الاول لتوضيح نوع التدقيق ، وانواع التدقيق عديدة سنتعرف على بعضها خلال الموضوع
العمود الثاني نوع التحكم ، اما ان يكون اجباري او اختياري او يرفض مباشرة ، سنتعرف على بعضها ايضا
العمود الثالث وهو المكتبة المطلوبة او الموديول نستطيع نضع ( الفل باث ) لها او كتابة اسمها فقط في ردهات
العمود الرابع ، وهو لتمرير بعض الخيارات ان تطلب الامر ذلك .


ثانيا / مجلد security ، وهو يحتوي على الاعدادات الاولية

كود:
[root@example pam.d]# cd /etc/security
 [root@example security]# ls
 access.conf  console.apps   group.conf   opasswd	   time.conf
 chroot.conf  console.perms  limits.conf  pam_env.conf
 [root@example security]#
سأتحدث عن ثلاث ملفات بهذا المجلد وهي :

1) ملف time.conf للمكتبة pam_time التي تستخدم لتحديد اوقات معينه لدخول المستخدمين.
2) ملف limits.conf للمكتبة pam_limits الذي يستخدم لتحديد صلاحيات مختلفة للمستخدمين.
3) ملف access.conf للمكتبة pam_access الذي يستخدم لتقييد وصول بعض او كل المستخدمين والدخول للنظام.


طبعا الملف الاول له طريقة استخدام تختلف تماما عن طريقة اعداد الملف الثاني أو الثالث.

خدمة PAM متشعبة وكبيرة وما اريد الوصول له في هذا الموضوع هو توضيح كيف نستخدمها ، بمعرفة طريقة الاستدعاء وطريقة الاعداد لما نريد.


لنبدأ بالتطبيق الان ، وعلي أولا أن افهم تماما ما أريد.


أولاً / أجعل المستخدمين ( samer,ali,abdulaziz,abdulkareem ) يستطيعون الدخول للنظام من الساعه التاسعة صباحا وحتى الخامسة بالمساء.


لعمل هذا التمرين علينا ان نستخدم الملف login ونستدعي من خلاله المكتبة pam_time ثم نضع الاعدادات في ملف time.conf

لنقم بتحرير الملف login
كود:
[root@example pam.d]# nano /etc/pam.d/login
ونضع بداخلة السطر التالي لاستدعاء المكتبة pam_time
كود:
account 	required	pam_time.so
نحفظ الملف ، ثم نحرر ملف الاعداد time.conf الموجود بداخل مجلد security
كود:
[root@example security]# nano /etc/security/time.conf
ونضع فيه مايلي
كود:
login;*;samer|ali|abdulaziz|abdulkareem;Al0900-1700
ثم نحفظ هذا الملف ، وبكذا نكون سمحنا لسامر وعلي وعبد العزيز وعبد الكريم من الدخول فقط عند الساعه التاسعه وحتى الخامسة كل يوم.

لن اتعمق بشرح التوقيت وطريقة استخدام كل ملف لانها متشعبه ، هنا موضوع يتحدث عن اعداد time.conf بتفصيل أكثر


ثانيا / اجعل المستخدمين ( samer,ali ) يدخلون مره واحده فقط ، أما المجموعة ( manager ) تستطيع الدخول خمس مرات ، وحدد عدد 7 عمليات للمستخدم abdulaziz بحيث انه لا يستطيع تجاوز هذا العدد من البروسسور في الوقت نفسه.

لحل هذا التمرين علينا اولا استدعاء المكتبة pam_limits في ملف system-auth

نحرر الملف
[
كود:
root@example security]# nano /etc/pam.d/system-auth
نضع السطر التالي بداخله لاستدعاء المكتبة
كود:
session required pam_limits.so
ثم نحفظ الملف ، ونحرر ملف الاعداد limits.conf الموجود بداخل مجلد security
كود:
[root@example security]# nano /etc/security/limits.conf
ونضع بداخلة
كود:
samer,ali - maxlogins 1
 @manager - maxlogins 5
 abdulaziz hard nproc 7
ثم احفظ الملف ، وبكذا عملنا التمرين كما يجب

ملفات الاعداد سهله الفهم وتستطيع رؤية امثله وقراءة بعض المعلومات عنها في نفس الملف.



ثالثا / امنع المستخدم ( abdulkareem ) من الدخول محليا.

سهلة جدا بس مايزعل علينا "عبدالكريم" صاحبنا ، علينا استدعاء المكتبة pam_access في ملف system-auth


نحرر الملف
[
كود:
root@example security]# nano /etc/pam.d/system-auth
نضع السطر التالي بداخله لاستدعاء المكتبة
كود:
session required pam_access.so
نحفظ الملف ، ثم نقوم بتحرير ملف الاعداد access.conf الموجود بداخل مجلد security
كود:
[root@example security]# nano /etc/security/access.conf
ثم اضع السطر التالي بداخله
كود:
-:abdulkareem:LOCAL
ثم احفظ الملف وانتهينا من حل التمرين .

بس مايهون علينا طبعا عدم دخول عبد الكريم ، نريد ان نسمح له بالدخول على النظام ولكن من خلال الهوست LinuxAC.org فقط

لعمل هذا نكتب مايلي

كود:
-:abdulkareem:LOCAL EXCEPT LinuxAC.org
لاحظ العبارة EXCEPT ساعدتنا لعمل ذلك ، وايضا انظر اول حرف بالسطر ( - ) علامة الطرح وتعني منع الدخول ، ولاعطاء صلاحية الدخول من الممكن استبدالها بعلامة الجمع ( + ).


هذا الموضوع لا يغطي استخدامات PAM بل يعتبر مقدمة بسيطة جدا عنها ، لانها متشعبه وكثيرة ولن تستطيع تعلمها الا بتحديد وفهم ماتريد أولا ثم عملها كمافي الامثلة البسيطة السابقة ، ان شاء الله اسلوب الشرح كان بسيط ومفهوم.

كما ان هذا الموضوع ساعدني بكتابة هذه المقدمة فشكرا لكاتبة.