همانطور که پسوردها در ویندوز درون فایل SAM بصورت Hash شده نگهداری می شوند ، در سیستم عامل لینوکس نیز پسوردهای کاربران درون پایگاه داده یا بهتر بگوییم فایلی به نام shadow ذخیره می شوند. البته ساختار سنتی نگهداری پسورد فایل ها در سیستم عامل های خانواده Unix بصورت فایلی به نام passwd بود که در مطلب قبلی در خصوص آن مفصل صحبت کردیم و ساختارش را باز کردیم اما دیگر از passwd برای نگهداری رمز عبور استفاده نمی شود. طبیعتا پسوردها هیچوقت بصورت ساده و رمزنگاری نشده در سیستم عامل لینوکس ذخیره سازی نمی شوند. تمامی پسوردها در سیستم عامل ها بصورت رمزنگاری شده با الگوریتم های یکطرفه ای به نام Hash نگهداری می شوند.
اگر مطابق آموزشی قبلی شما فایل مربوط به passwd را باز کنید قسمتی از قالب فایل بصورت علامت x نمایش داده شده است ، این یعنی پسورد مورد نظر در فایل shadow قرار گرفته است ، درواقع حرف x در فایل passwd بصورت یک لینک به فایل shadow کار می کند. در فایل shadow علاوه بر نگهداری پسوردها ، اطلاعاتی در خصوص پسورد و کاربر نیز نگهداری می شود. توجه کنید که فقط کاربر root می تواند محتویات فایل shadow را باز کند و آن را بخواند ، موارد زیر از مزایای استفاده کردن از فایل shadow به جای فایل passwd هستند :
- پسوردها توسط هر کاربری قابل مشاهده نیستند و فقط توسط root می شود این فایل را باز کرد
- پسوردها در قالب الگوریتم های رمزنگاری Hashing در این فایل ذخیره می شوند
- تمامی اطلاعات Password Aging در این قسمت ذخیره می شود
- با استفاده از فایل login.defs می توان policy های امنیتی به این فایل اعمال کرد
در زیر نمونه از ای محتویات فایل shadow را مشاهده می کنید که در خصوص آن توضیحاتی را ارائه خواهیم کرد :
root@itpro-kali:~# cat /etc/shadow root:$6$dSx6v.3w$NXENWxEl.eIlbCLSkbInpKpCHapHqwnyBzOxfu5R7p9zcdP4K3ucUkXZXPNbyr.rz6J9IaFQArxCa9fzXXwiW.:16835:0:99999:7::: daemon:*:16471:0:99999:7::: bin:*:16471:0:99999:7::: sys:*:16471:0:99999:7::: sync:*:16471:0:99999:7::: games:*:16471:0:99999:7::: man:*:16471:0:99999:7::: lp:*:16471:0:99999:7::: mail:*:16471:0:99999:7::: news:*:16471:0:99999:7::: uucp:*:16471:0:99999:7::: proxy:*:16471:0:99999:7::: www-data:*:16471:0:99999:7::: backup:*:16471:0:99999:7::: list:*:16471:0:99999:7::: irc:*:16471:0:99999:7::: gnats:*:16471:0:99999:7::: nobody:*:16471:0:99999:7::: libuuid:!:16471:0:99999:7::: mysql:!:16471:0:99999:7::: messagebus:*:16471:0:99999:7::: colord:*:16471:0:99999:7::: usbmux:*:16471:0:99999:7::: miredo:*:16471:0:99999:7::: ntp:*:16471:0:99999:7::: Debian-exim:!:16471:0:99999:7::: arpwatch:!:16471:0:99999:7::: avahi:*:16471:0:99999:7::: beef-xss:*:16471:0:99999:7::: dradis:*:16471:0:99999:7::: pulse:*:16471:0:99999:7::: speech-dispatcher:!:16471:0:99999:7::: haldaemon:*:16471:0:99999:7::: sshd:*:16471:0:99999:7::: snmp:*:16471:0:99999:7::: iodine:*:16471:0:99999:7::: postgres:*:16471:0:99999:7::: redsocks:!:16471:0:99999:7::: stunnel4:!:16471:0:99999:7::: statd:*:16471:0:99999:7::: sslh:!:16471:0:99999:7::: Debian-gdm:*:16471:0:99999:7::: rtkit:*:16471:0:99999:7::: saned:*:16471:0:99999:7:::
خوب طبق روال در سیستم عامل لینوکس قسمت های مختلف تنظیمات با استفاده از علامت : از هم جدا می شوند وما به بررسی این قسمت ها در فایل shadow می پردازیم ، قسمت اول نام کاربری یا username را مشخص می کند ، قسمت دوم مشخص کننده پسورد کاربر است که بصورت رمزنگاری شده نگهداری می شود ، دقت کنید که این همان قسمتی است که در فایل passwd به عنوان x مشخص شده است. قسمت سوم Password History یا تاریخچه پسورد را مشخص می کند به این معنی که آخرین باری که پسورد تغییر کرده است را نمایش می دهد ، اگر توجه کنید خواهید دید که در اکثر موارد عدد 16471 قرار گرفته است .
این ساختار یونیکسی است که برای پسوردها در نظر گرفته شده است. قسمت چهارم mindays یا حداقل عمر پسورد ، قسمت پنجم maxdays یا حداکثر عمر پسورد ، قسمت ششم warndays یا زمانی که قبل از منقضی شدن پسورد سیستم به کاربر هشدار می دهد را نمایش می دهد در قسمت هفتم inactive یا عدم فعالیت کاربر بعد از منقضی شدن پسورد را نمایش می دهد ، قسمت نهم تعداد روزهای Disable بودن کاربر را مشخص می کند و قسمت نهم هم در حالت رزرو قرار دارد و هنوز استفاده آن تعریف نشده است ، قبلا در خصوص دستور chage صحبت کرده ایم و بصورت کامل در خصوص این پارامترها و نحوه تغییر دادنشان صحبت کرده ایم. امیدوارم مورد توجه شما قرار گرفته باشد. ITPRO باشید
نویسنده : محمد نصیری
منبع : انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد
در حال حاضر الگوریتم md5 رو دیگه استفاده نمی کنن. جالبه که بدونی در FreeBSD برنامه ای درست کرده بودن که بعد از نصب هر فایل اصلی password که بهش می دادی رمزعبور هر کاربر رو بهت در کمتر از چند دقیقه نمایش می داد.
البته دیگه این برنامه ارایه نمیشه.
برای مشاهده کردن این برنامه به آدرس زیر مراجعه کنید:
طبیعتا در سیستم عامل های این خانواده همه الگوریتم ها قابل استفاده هست ، بستگی به کار شما داره ، الان من جستجو کردم الگوریتم های زیر قابل استفاده هستند حتی براحتی Salt هم بهشون اضافه میشه :
در سیستم عامل های BSD میشه از blowfish هم استفاده کرد.
پیشفرض اگر اشتباه نکنم SHA1 هست یا SHA256 ... قطعا میشه بستگی به توزیع شما داره.
سلام
خسته نباشید.
یک سوالی دارم. در لبنوکس از چه الگوریتم های hashing برای hash کردن رمزعبور استفاده می شود و آیا می تونید ساختار و الگوریتم های hashing را تغییر داد؟
با تشکر
ممنون از لطفتون که همیشه مطالب جالبی میزارید ممنون میشم اگه در مورد DPM مطالبی دارید واسمون بزارید