معیار منحصر به فرد امنیت سیستم در اکثر سیستم ها در حقیقت password ها هستند به خصوص در سیستم عامل لینوکس اگر شما پسورد root را بدانید مالک سیستم خواهید بود پسورد ها به عنوان یک ابزار امنیتی برای BIOS, Login, Disk, Application و غیره میباشد.
سیستم عامل لینوکس به عنوان یکی از سیستم عامل های بسیار امن در مقابل hack یا crack شدن میباشد و در واقعیت هم چنین است در اینجا ما درباره یکسری loop-holes (باگ های امنیتی) و exploit ها بحث خواهیم کرد در طول این پست ما از لینوکس centos به منظور کرک کردن امنیت سیستم مان استفاده میکنیم.
بعد از ریبوت کردن سرور، در این قسمت یک کلید از کیبرد را به منظور توقف پروسه در Boot سیستم فشار میدهیم و منوی GRUB را در این لحظه خواهیم دید :
کلید ‘e‘ را برای ویرایش و رفتن به خطی که برای start کرنل میباشد (عموما خط دوم) فشار میدهیم :
اکنون کلید ‘e‘ را برای ویرایش کرنل فشار میدهیم و در پایان خط عدد 1 را اضافه میکنیم (بعد از یک space عدد 1 را اضافه میکنیم) و با این کار force میکنیم که در مد single user استارت شود و بنابراین از وارد شدن به runlevel پیش فرض جلوگیری میکنیم. کلید enter را برای خارج شدن از محیط ویرایش کرنل فشار میدهیم و سپس boot میکنیم. برای boot شما نیاز به فشردن کلید ‘b‘ دارید :
اکنون شما با مد single user لاگین میشوید :
اکنون با استفاده از دستور passwd میتوانیم پسورد root را تغییر دهیم و به محض اینکه شما پسورد root را داشته باشید در حقیقت شما مالک ماشین لینوکس باشید. اکنون شما میتوانید به صفحه گرافیکی برای ویرایش هر چیزی سوییچ کنید :
توجه : در مثال بالا دستور passwd برای شما کار نخواهد کرد و شما هیچ گونه خروجی از ان نخواهید گرفت و این بسیار ساده است یعنی SELinux شما در مد enforcing میباشد و شما باید آن را ابتدا disable کنید و بعد از آن اقدام به تغییر پسورد نمایید. دستور زیر را برای غیر فعال کردن آن اجرا کنید :
سپس دستور passwd را اجرا کنید و پسورد root را تغییر دهید که دستورات آن قبلا گفته شد.
سوییچ به X Windows :
در سیستم های fedora-base از دستور "init 5" و در سیستم های debian-base از دستور "gdm3" استفاده کنید :
دیدید که هک ماشین لینوکس به چه سادگی انجام شد فکر کنید اگر این سناریو را شخص دیگری روی سیستم تان انجام دهد. وحشتناک هست. اکنون یاد میگیریم که چگونه ماشین لینوکس خود را از تغییر در مد single user محافظت کنیم.
چگونه به سیستم وارد شدیم؟ با استفاده مد single user . بسیار خب در نتیجه باگ همین جا بود وارد شدن به مد single user بدون نیاز به وارد کردن هیچ گونه پسوردی.
برای رفع این باگ باید روی مد single user پسورد بگذارید که برای این منظور فایل “/etc/rc1.d/S99single” را باز کنید و خط زیر را در آن جستجو کنید :
فقط کافیست خط زیر را در بالای خط سرچ شده اضافه کنید و فایل را ذخیره و خارج شوید :
قبل از اعمال تغییر :
بعد از اعمال تغییر :
اکنون قبل از وارد شدن به مد single user از شما پسورد میخواهد اگر مجددا تلاش کنید تا به این مد وارد شوید با پیغام زیر روبه رو خواهید شد :
Hack کردن سیستم Linux خود بدون استفاده از مد Single User :
اکنون از امنیت سیستم خود احساس بهتری دارید به هر حال به صورت نسبی درست است که شما تا حدودی سیستم تان را امن کردید اگر چه لینوکس شما در حال حاضر نمیتواند از طریق مد single user کرک شود اما همچنان سیستم شما از راه دیگر میتواند هک شود.
در مرحله بالا ما کرنل را به منظور ورود به مد single user تغییر دادیم در این مرحله نیز قادر خواهیم بود که کرنل را تغییر دهیم البته با یک پارامتر متفاوت که در ادامه خواهیم دید.
در مرحله ی قبل ما عدد 1 را به عنوان یک پارامتر کرنل اضافه کردیم به هر حال در این قسمت هم میتوانیم ‘init=/bin/bash’ را اضافه و با استفاده از ‘b‘ بوت کنیم :
و همانطور که میبینید دوباره سیستم تان را هک کردید و به دست آوردن یک prompt کامند کافیست :
اکنون سعی میکنیم پسورد root را با استفاده از مراحل شبیه به بالا همانطور که در روش اول گفتیم با استفاده از دستور passwd تغییر دهیم. همانند زیر error دریافت خواهید کرد :
علت و راه کار Error بالا :
برای مانت کردن پارتیشن '/' با پرمیژن Read-Write دستور زیر را به دقت وارد کنید :
اکنون دوباره تلاش کنید تا پسورد root را با استفاده از دستور passwd تغییر دهید :
و در این لحظه باری دیگر سیستم خود را هک کردید. ما به سادگی به سیستم نفوذ کردیم اما در حقیقت اینطور نیست آنچه که نیاز دارید تنظیم با دقت سیستم خودتان است.
هر 2 شیوه بالا شامل پاس دادن پارامتر به کرنل منجر به هک سیستم میشوند بنابراین اگر ما 2 شیوه بالا را مسدود کنیم لینوکس مان را امن (Secure) کردیم و به آسانی نمیتوان به آن راه یافت به منظور جلوگیری از ویرایش کرنل به هنگام بوت ما باید برای bootloader پسورد بگذاریم. (password protect the grub)
Lilo یکی از دیگر bootloader های لینوکس هست اما ما در اینجا درباره آن بحث نخواهیم کرد.
پسورد گذاشتن روی bootloader grub :
برای پسورد گذاشتن روی bootloader از دستور ‘grub-md5-crypt‘ استفاده میکنیم و پسورد مورد نظر را وارد مینماییم تا در مرحله اول پسورد مان را encrypt کنیم :
سپس پسورد encrypt شده بالا را به دقت کپی میکنیم تا در مرحله بعد از آن استفاده کنیم. اکنون فایل grub.conf را باز کرده (ممکن است در مسیر /etc/grub.conf باشد) و خط زیر را به آن اضافه میکنیم :
عبارت “$1$t8JvC1$8buXiBsfANd79/X3elp9G1” را با پسورد encrypt شده خودتان که در مرحله قبل ایجاد کردید و آن را به دقت کپی کردید جایگزین کنید.
فایل grub.conf را بعد از وارد کردن خط بالا ذخیره و از آن خارج شوید :
اکنون به هنگام boot سعی در تغییر کرنل کنید. همانطور که میبینید همانند زیر پسورد میخواهد :
اکنون میتوان نفس راحتی کشید از این که سیستم کاملا امن شده و هک نخواهد شد به هر حال هنوز بازی تمام نشده است.
بهتر است بدانید که شما میتوانید با استفاده از مد enforce rescue اقدام به تغییر یا حذف پسورد با استفاده یک bootable image کنید.
کافیست CD/DVD نصب خود را درون درایو قرار دهید و Rescue Install System را انتخاب کنید یا از هر CD Rescue دیگری استفاده کنید حتی میتوانید از یک Live Linux Distro استفاده کنید هارد را mount کرده و فایل grub.conf را ویرایش و خط مربوط به پسورد را از آن حذف و سپس reboot کنید. سپس مجددا login کنید.
توجه : در مد Rescue هارد شما تحت ‘/mnt/sysimage‘ مانت میشود :
ممکن است اکنون در ذهن تان سوال ایجاد شود واقعا پایان کار کجاست. باید بگویم :
همچنین توصیه میشود مطالعه کنید :
5 نمونه از بهترین روش ها برای امنیت و نگهداری سرورهای لینوکس
فعال کردن احراز هویت دو مرحله ای هنگام لاگین SSH (توسط Google Authenticator)
ارسال ایمیل هشدار برای ادمین سیستم ها هنگام ssh کردن با یوزر root
غیرفعال یا فعال کردن دسترسی login یوزر root به SSH
آموزش SSH کردن بدون پسورد با استفاده از public key در لینوکس
20 ترفند برای امنیت سرورهای CentOS - بخش 1
چگونه امنیت سیستم عامل لینوکس خود را برقرار کنیم
نحوه مقابله با باج افزار ها
استفاده از Pam_Tally2 برای Lock کردن و Unlock کردن login های Fail شده به SSH
هدف از این پست تنها اگاه کردن شما از این حقایق و همچنین نحوه امن کردن سیستم تان و همچنین جلوگیری از هک میباشد.
این مطلب صرفا برای امن کردن سرورهای لینوکسی از attack های فیزیکی مطرح شده و مسئولیت سوء استفاده کنندگان از آن برعهده سایت منطقه لینوکسی نمیباشد.
با تشکر
محمد هابیلی
سیستم عامل لینوکس به عنوان یکی از سیستم عامل های بسیار امن در مقابل hack یا crack شدن میباشد و در واقعیت هم چنین است در اینجا ما درباره یکسری loop-holes (باگ های امنیتی) و exploit ها بحث خواهیم کرد در طول این پست ما از لینوکس centos به منظور کرک کردن امنیت سیستم مان استفاده میکنیم.
بعد از ریبوت کردن سرور، در این قسمت یک کلید از کیبرد را به منظور توقف پروسه در Boot سیستم فشار میدهیم و منوی GRUB را در این لحظه خواهیم دید :
کلید ‘e‘ را برای ویرایش و رفتن به خطی که برای start کرنل میباشد (عموما خط دوم) فشار میدهیم :
اکنون کلید ‘e‘ را برای ویرایش کرنل فشار میدهیم و در پایان خط عدد 1 را اضافه میکنیم (بعد از یک space عدد 1 را اضافه میکنیم) و با این کار force میکنیم که در مد single user استارت شود و بنابراین از وارد شدن به runlevel پیش فرض جلوگیری میکنیم. کلید enter را برای خارج شدن از محیط ویرایش کرنل فشار میدهیم و سپس boot میکنیم. برای boot شما نیاز به فشردن کلید ‘b‘ دارید :
اکنون شما با مد single user لاگین میشوید :
اکنون با استفاده از دستور passwd میتوانیم پسورد root را تغییر دهیم و به محض اینکه شما پسورد root را داشته باشید در حقیقت شما مالک ماشین لینوکس باشید. اکنون شما میتوانید به صفحه گرافیکی برای ویرایش هر چیزی سوییچ کنید :
توجه : در مثال بالا دستور passwd برای شما کار نخواهد کرد و شما هیچ گونه خروجی از ان نخواهید گرفت و این بسیار ساده است یعنی SELinux شما در مد enforcing میباشد و شما باید آن را ابتدا disable کنید و بعد از آن اقدام به تغییر پسورد نمایید. دستور زیر را برای غیر فعال کردن آن اجرا کنید :
کد PHP:
# setenforce 0
سوییچ به X Windows :
در سیستم های fedora-base از دستور "init 5" و در سیستم های debian-base از دستور "gdm3" استفاده کنید :
دیدید که هک ماشین لینوکس به چه سادگی انجام شد فکر کنید اگر این سناریو را شخص دیگری روی سیستم تان انجام دهد. وحشتناک هست. اکنون یاد میگیریم که چگونه ماشین لینوکس خود را از تغییر در مد single user محافظت کنیم.
چگونه به سیستم وارد شدیم؟ با استفاده مد single user . بسیار خب در نتیجه باگ همین جا بود وارد شدن به مد single user بدون نیاز به وارد کردن هیچ گونه پسوردی.
برای رفع این باگ باید روی مد single user پسورد بگذارید که برای این منظور فایل “/etc/rc1.d/S99single” را باز کنید و خط زیر را در آن جستجو کنید :
کد PHP:
exec init -t1 s
کد PHP:
exec sbin/sulogin
بعد از اعمال تغییر :
اکنون قبل از وارد شدن به مد single user از شما پسورد میخواهد اگر مجددا تلاش کنید تا به این مد وارد شوید با پیغام زیر روبه رو خواهید شد :
Hack کردن سیستم Linux خود بدون استفاده از مد Single User :
اکنون از امنیت سیستم خود احساس بهتری دارید به هر حال به صورت نسبی درست است که شما تا حدودی سیستم تان را امن کردید اگر چه لینوکس شما در حال حاضر نمیتواند از طریق مد single user کرک شود اما همچنان سیستم شما از راه دیگر میتواند هک شود.
در مرحله بالا ما کرنل را به منظور ورود به مد single user تغییر دادیم در این مرحله نیز قادر خواهیم بود که کرنل را تغییر دهیم البته با یک پارامتر متفاوت که در ادامه خواهیم دید.
در مرحله ی قبل ما عدد 1 را به عنوان یک پارامتر کرنل اضافه کردیم به هر حال در این قسمت هم میتوانیم ‘init=/bin/bash’ را اضافه و با استفاده از ‘b‘ بوت کنیم :
و همانطور که میبینید دوباره سیستم تان را هک کردید و به دست آوردن یک prompt کامند کافیست :
اکنون سعی میکنیم پسورد root را با استفاده از مراحل شبیه به بالا همانطور که در روش اول گفتیم با استفاده از دستور passwd تغییر دهیم. همانند زیر error دریافت خواهید کرد :
علت و راه کار Error بالا :
- علت : پارتیشن root (اسلش(/)) به صورت read only مانت شده (بعلاوه پسورد قابل خواندن نیست)
- راه کار : پارتیشن '/' را با پرمیژن Read-Write باید mount کنیم.
برای مانت کردن پارتیشن '/' با پرمیژن Read-Write دستور زیر را به دقت وارد کنید :
کد PHP:
# mount -o remount,rw /
اکنون دوباره تلاش کنید تا پسورد root را با استفاده از دستور passwd تغییر دهید :
و در این لحظه باری دیگر سیستم خود را هک کردید. ما به سادگی به سیستم نفوذ کردیم اما در حقیقت اینطور نیست آنچه که نیاز دارید تنظیم با دقت سیستم خودتان است.
هر 2 شیوه بالا شامل پاس دادن پارامتر به کرنل منجر به هک سیستم میشوند بنابراین اگر ما 2 شیوه بالا را مسدود کنیم لینوکس مان را امن (Secure) کردیم و به آسانی نمیتوان به آن راه یافت به منظور جلوگیری از ویرایش کرنل به هنگام بوت ما باید برای bootloader پسورد بگذاریم. (password protect the grub)
Lilo یکی از دیگر bootloader های لینوکس هست اما ما در اینجا درباره آن بحث نخواهیم کرد.
پسورد گذاشتن روی bootloader grub :
برای پسورد گذاشتن روی bootloader از دستور ‘grub-md5-crypt‘ استفاده میکنیم و پسورد مورد نظر را وارد مینماییم تا در مرحله اول پسورد مان را encrypt کنیم :
سپس پسورد encrypt شده بالا را به دقت کپی میکنیم تا در مرحله بعد از آن استفاده کنیم. اکنون فایل grub.conf را باز کرده (ممکن است در مسیر /etc/grub.conf باشد) و خط زیر را به آن اضافه میکنیم :
کد PHP:
password --md5 $1$t8JvC1$8buXiBsfANd79/X3elp9G1
فایل grub.conf را بعد از وارد کردن خط بالا ذخیره و از آن خارج شوید :
اکنون به هنگام boot سعی در تغییر کرنل کنید. همانطور که میبینید همانند زیر پسورد میخواهد :
اکنون میتوان نفس راحتی کشید از این که سیستم کاملا امن شده و هک نخواهد شد به هر حال هنوز بازی تمام نشده است.
بهتر است بدانید که شما میتوانید با استفاده از مد enforce rescue اقدام به تغییر یا حذف پسورد با استفاده یک bootable image کنید.
کافیست CD/DVD نصب خود را درون درایو قرار دهید و Rescue Install System را انتخاب کنید یا از هر CD Rescue دیگری استفاده کنید حتی میتوانید از یک Live Linux Distro استفاده کنید هارد را mount کرده و فایل grub.conf را ویرایش و خط مربوط به پسورد را از آن حذف و سپس reboot کنید. سپس مجددا login کنید.
توجه : در مد Rescue هارد شما تحت ‘/mnt/sysimage‘ مانت میشود :
کد PHP:
# chroot /mnt/sysimage
# vi grub.conf (remove the password line)
# reboot
- روی bios خود پسورد بگذارید.
- ترتیب boot سیستم تان را به نحوی تغییر دهید که ابتدا هارد بالا بیاید و سپس به ترتیب (cd/dvd, network, usb)
- پسورد های خود را به اندازه کافی طولانی و سخت (غیرقابل حدس زدن) انتخاب کنید و به گونه ای باشد که به آسانی آن را به یاد بیاورید.
- تحت هیچ شرایطی پسورد خود را جایی یادداشت نکنید.
- در پسورد تان از حرف بزرگ، کوچک، اعداد و کاراکترهای خاص استفاده کنید تا به سختی هک بشوند.
همچنین توصیه میشود مطالعه کنید :
5 نمونه از بهترین روش ها برای امنیت و نگهداری سرورهای لینوکس
فعال کردن احراز هویت دو مرحله ای هنگام لاگین SSH (توسط Google Authenticator)
ارسال ایمیل هشدار برای ادمین سیستم ها هنگام ssh کردن با یوزر root
غیرفعال یا فعال کردن دسترسی login یوزر root به SSH
آموزش SSH کردن بدون پسورد با استفاده از public key در لینوکس
20 ترفند برای امنیت سرورهای CentOS - بخش 1
چگونه امنیت سیستم عامل لینوکس خود را برقرار کنیم
نحوه مقابله با باج افزار ها
استفاده از Pam_Tally2 برای Lock کردن و Unlock کردن login های Fail شده به SSH
هدف از این پست تنها اگاه کردن شما از این حقایق و همچنین نحوه امن کردن سیستم تان و همچنین جلوگیری از هک میباشد.
این مطلب صرفا برای امن کردن سرورهای لینوکسی از attack های فیزیکی مطرح شده و مسئولیت سوء استفاده کنندگان از آن برعهده سایت منطقه لینوکسی نمیباشد.
با تشکر
محمد هابیلی