محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

PAM چیست؟ معرفی جامع سرویس Pluggable Authentication Modules

PAM چیست؟ چرا اینقدر این ماژول در لینوکس مبهم توضیح داده شده است ؟ PAM در عین سادگی ، به دلیل درست معرفی نشدن به نظر کمی سخت به نظر می رسد اما شما با خواندن این مطلب و دریافت کردن مفهوم و هدف اصلی این سرویس در لینوکس متوجه می شوید که آنقدر هم PAM چیز سختی نیست . بگذارید قبل از اینکه به سراغ PAM برویم یک سناریو برای شما مطرح کنیم تا به درستی مفهوم این سرویس را درک کنید .

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

فرض کنید که قرار است یک برنامه بنویسید برای سیستم عامل لینوکس که کارهای بانکداری الکترونیکی انجام می دهد !!! یا ساده تر بگوییم یک سیستم مدیریت محتوای اینترنتی قرار است بنویسید که بر روی آن کاربران ثبت نام می کنند و در اینترنت سرویس می دهد ! یا یک ماژول برای سرویس FTP یا SSH لینوکس نوشته اید !!! مهمترین رکن امنیتی در این سرویس ها این است که یک مکانیزم احراز هویتی بسیار قوی باید داشته باشند ! حال راهکار چیست ؟ دو راهکار وجود دارد ، اول اینکه می توانید به عنوان یک برنامه نویس برای هر کدام از سرویس هایی که نوشته اید یک ماژول احراز هویت و امنیتی بنویسید ! دوم اینکه می توانید از یک API یا یک برنامه که کار تخصصی آن احراز هویت است استفاده کنید و فرآیند احراز هویت ( تشخیص واقعی بودن کاربر ) را به عهده آن بیندازید و فقط خروجی را دریافت کنید ! خوب به نظر شما کدام بهتر است ؟

خوب قطعا تا اینجا متوجه شده اید که یکی از بهترین نکات در امنیت که می توانید رعایت کنید ، استفاده کردن از ماژول ها و برنامه هایی است که قبلا نوشته شده اند و امتحان خود را پس داده اند ! درست متوجه شدید ، PAM همان برنامه ای است که شما می توانید برای احراز هویت برنامه ها و سرویس ها از آن استفاده کنید و خودتان را درگیر کدنویسی یک سیستم احراز هویتی نکنید . PAM در واقع یک مجموعه ماژول یا مجموعه ابزار است که به عنوان سرویس احراز هویت مرکزی برای شما در سیستم عامل لینوکس فعالیت می کند . شما به عنوان یک برنامه نویس یا حتی یک مدیر سیستم لینوکسی هیچ کاری ندارید که احراز هویت چگونه انجام می شود ، فقط کافیست PAM را به عنوان سرویس احراز هویتی به سیستم معرفی کنید و این فرآیند امنیتی را به عهده این سرویس بیندازید و دغدغه نوشتن یک سیستم امنیتی را نداشته باشید.

PAM چیست

PAM مخفف کلمه های Pluggable Authentication Modules است ، به معنی مجموعه ماژول های احراز هویتی قابل نصب و حذف ( معنی کلمه  Pluggable  اگر درست برداشت کرده باشم ) است . یعنی این سرویس مجموعه ای از ابزارها را در اختیار دارد که بصورت ماژول به ماژول برای ما کار می کنند ، برای مثال اگر ما نیاز به احراز هویت برای سرویس SSH داریم ، می توانیم از ماژول SSH آن استفاده کنیم و در عین حال اگر نیاز به احراز هویت با سرویس Kerberos داشته باشیم هم می توانیم از همین سیستم استفاده کنیم . به زبان ساده تر PAM برای شما احراز هویت انواع سرویس ها را بصورت متمرکز و یکپارچه در اختیار قرار داده است و در لفظ امنیت یک SSO یا Single Sign On یا سیستم احراز هویت یکپارچه ایجاد کرده است .

PAM مجموعه ای از Library ها یا کتابخانه ها است که می تواند به یک کاربر یا یک Application سرویس احراز هویت را ارائه بدهد. اگر کمی از برنامه نویسی دید داشته باشید PAM را می توانید یک API احراز هویتی بدانید . PAM در اکثر سیستم عامل های لینوکسی جدید و مدرن پشتیبانی می شود و اکثر برنامه ها و سرویس ها با پشتیبانی PAM ارائه می شوند . جالبترین نکته در خصوص PAM این است که یک برنامه نویس می تواند آن را برای برنامه خودش دلخواه سازی کند و البته در عین حال یک مدیر سیستم که دیدی نسبت به احراز هویت و برنامه نویسی ندارد هم می تواند از ماژول ها برای سرویس هایش استفاده کند و اینکار صرفا با دستکاری و انجام تنظیمات چند فایل انجام می شود.

به عنوان یک مدیر شبکه لینوکسی به هیچ عنوان نیازی به این ندارید که بدانید داخل PAM چه خبر است . شما فقط می خواهید از PAM برای برنامه خودتان استفاده کنید و مهم این است که برنامه هم در اصطلاح فنی PAM Aware باشد یعنی PAM را پشتیبانی کند و تمام .... برنامه های PAM Support بصورت ویژه برای این سیستم نوشته و کامپایل می شوند . PAM یک ساختار احراز هویتی 4 مرحله ای دارد که به عنوان یک ساختار پشته ای (Stack ) ضمن عملکرد مستقل در کنار هم کار می کنند و مجموع آنها فرآیند کلی PAM را تشکیل می دهد که در ادامه این 4 مرحله یا در اصطلاح فنی گروه های مدیریت ( Management Group) را به شما معرفی می کنیم :

  • ماژول حساب کاربری یا Account Module : این ماژول در واقع بحث شناسایی اکانت را انجام می دهد ، دقت کنید شناسایی یا Identify کردن با احراز هویت یا Authentication متفاوت است . در این قسمت فقط نام کاربری یا حساب کاربری بررسی می شود که منقضی شده است یا خیر ، زمان لاگین محدود شده است یا خیر و بصورت کلی شرایط و وضعیت درخواست سرویس مورد نظر توسط کاربر بررسی می شود و اگر همه چیز درست باشد به سراغ مرحله ماژول بعدی می رود.
  • ماژول احراز هویت یا Authentication Module : در این مرحله است که هویت واقعی کاربر بررسی می شود ، این قسمت اصل احراز هویت است و با گرفته درخواست لاگین و پسورد کاربر ، هویت واقعی کاربر تایید یا تکذیب می شود . در این مرحله است که از مکانیزم های امنیتی مختلف برای احراز هویت استفاده می شود و از مواردی است که معمولا از چند ماژول مختلف احراز هویتی بصورت Stack برای احراز هویت استفاده می شود .
  • ماژول رمز عبور یا Password Module : یکی از ساده ترین کارهای ممکن را در این فرآیند انجام می شود !! به روز رسانی پسوردها و به زبان ساده امکان تغییر دادن پسورد کاربران در این ماژول ارائه می شود. مباحث مربوط به امنیت پسوردها نیز در این قسمت تعیین می شود .
  • ماژول نشست یا Session Module : هر کاری که قرار هست در ابتدای ایجاد Session کاربر و در نهایت بسته شدن Session کاربر انجام شود را در این مرحل انجام می دهیم . تنها زمانی Session شما برقرار می شود که فرآیند احراز هویت با موفقیت انجام شده باشد.

امیدوارم مورد توجه شما قرار گرفته باشد . در قسمت بعدی در خصوص انواع پارامترهای موجود در تنظیمات PAM و برخی از نکات مهم آن در توسینسو صحبت خواهیم کرد .

نویسنده : محمد نصیری

منبع : جزیره لینوکس و متن باز وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات