Blocking; su to root

Blocking; su to root

Blocking; su to root 

نحوه غیرفعالی کردن su  به root  بوسیله توابع PAM

فرمان su یا substitute user به معنی جانشین کاربری دیگر شدن می باشد . 

بعبارت ساده تر بخواهم بیان کنم معنی su  مثل این هست که من از روی کلید منزلم یک کپی میزنم

و به همسایه ام میدهم که تو هم حالا با این کلید من میتوانی وارد منزل من شوی ولی مثلا فقط

میتوانی به آشپزخانه وارد شوی و اگر توانستی وارد آشپزخانه شوی پس اجازه داره سر یخچال

هم بروی . در واقع قدرت و مالکیت یکسری چیزها را داریم به همسایه مان میدهیم .

با فرمان su کاری نظیر همین کار را انچام می دهیم . یعنی وقتی با فرمان su  به قدرت کاربری

دیگر دسترسی پیدا میکنیم بنابراین میتوانیم با قدرت او فرامین او را نیز اجرا کرده و هم قدرت

او شویم . حالا فرض کنید بتوانید به کاربر ارشد سیستم عامل یعنی root با فرمان su  دسترسی

پیدا کنید بنابراین میتوانید قدرت root را پیدا کرده و کلیه فرامینی که توسط root قابل اجرا بوده

را شما نیز اجرا نمایید. خب این موضوع هم جالب است و هم خطرناک . 

به منظور امنیت بیشتر در سیستم عامل بهتر است که هیچ کاربری اجازه su  کردن به کاربر

root  را نداشته باشد یا می توانیم بگوییم که چه کاربر یا کاربرانی فقط اجازه دارند به root 

با فرمان su  لاگین کنند و قدرت او را بدست آورند . بدین منظور مراحل زیر را انجام می دهیم :

 مرحله ا

 چنانچه بخواهید دسترسی به root را با فرمان su  از همه بگیرید یا فقط به تعدادی محدود

این اجاره را بدهید باید فایل  etc/pam.d/su/ را ویرایش کرده و خط زیر را از حالت comment

در بیاورید .

بعنوان نکته امنیتی پیشنهاد ما این است که دسترسی به کاربر root  را یا از همه بگیرید

یا آنرا حتما محدود به یکی دو کاربر نمایید . 

 

 vi /etc/pam.d/su 

خط زیر را از حالت comment در آورید یا uncomment  کنید . 

auth required /lib/security/pam_wheel.so use_uid

 بعد از این که خط بالا از حالت comment در آمد فایل etc/pam.d/su/ به شکل زیر قابل مشاهده است :

 

#%PAM-1.0

auth       sufficient   /lib/security/pam_rootok.so

auth       required     /lib/security/pam_wheel.so use_uid

auth       required     /lib/security/pam_stack.so service=system-auth

account    required     /lib/security/pam_stack.so service=system-auth

password   required     /lib/security/pam_stack.so service=system-auth

session    required     /lib/security/pam_stack.so service=system-auth

session    optional     /lib/security/pam_xauth.so

خط قرمز رنگ بالا می گوید که گروهی بنام wheel  در سیستم عامل داریم که قادر است به

root با فرمان su لاگین کند و قدرت اون را پیدا کند . 

گروه wheel غالبا در سیستم عامل وجود دارد و چنانچه فایل etc/group/ را مشاهده کنید

این گروه را می بینید. 

پس هر کاربری که عضو گروه wheel  باشد قادر است به root  با فرمان su  متصل شود .  

در ضمن شما نمی توانید از هر نام گروه دیگری بدین منظور استفاده نمایید . 

به منظور su  کردن به root  از ترکیب شماره tty  یا terminal type  کاربر به همراه

VC devices ها استفاده میشود تا اجازه لاگین کردن به کاربر root  صادر گردد و این امر

به منظور برقراری امنیت بیشتر می باشد . 

  مرحله ۲

خب بعد از اینکه گروه wheel  را در etc/pam.d/su/ بعنوان گروهی که اجازه داره به root  با su لاگین کند تعریف کردیم ، حالا می توانیم نام کاربر یا کاربرانی که میخواهیم بتوانند به root  با su  لاگین کنند را تعریف نماییم . 

حالا فرض کنید کاربری بنام admin دارید که میخواهید عضو گروه wheel  باشد و بتواند به root  با su  لاگین کند بدین منظور فرمان زیر را اجرا میکنید

 

[root@MisLinux /]# usermod -G10 admin

فرمان بالا می گوید که کاربر admin  دارای یک گروه ثانویه نیز با gid یا groupid ؛ ۱۰ می باشد

که فرض بر این است که wheel  دارای مقدار ۱۰ در لیست group ها می باشد .

با فرمان بالا کاربر admin  به لیست اعضا گروه wheel  که دارای مقدار عددی ۱۰ است

اضافه می شود . 

حالا اگر میخواهید نام کاربری دیگر را در لیست اضافه کنید مانند فرمان بالا نام او را به گروه

اضافه نمایید . 

نکته : ممکن هست که در محیط گرافیکی زمانیکه میخواهید با فرمان su  به root  لاگین کنید

مشکلی برای شما پیش آید و فکر کنید پس چرا نمیتوانم این کار را انجام دهم . این مشکل یا

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

یا ترمینال اشتباهی را استفاده میکنید . چرا که گفتیم به منظور لاگین کردن به root  با فرمان

su  اطلاعاتی در مورد نوع ترمینال نیز گردآوری و ذخیره میشود . 

 

 مجوز :

با اینکه با تعریف کاربران در گروه wheel  میتوانید به کاربر root  لاگین کنید اما تاکید ما

بر این است که از این قابلیت در سیستم عامل استفاده نکنید. 

زمانیکه کاربری را در گروه wheel تعریف میکنید در زمان لاگین کردن به root می بایست

پسورد root را وارد نماید . چنانچه نمیخواهید که کاربر در هنگام su  کردن به root  کلمه

رمز root را وارد کند باید خط زیر را در فایل etc/pam.d/su/  به صورت زیر  uncomment  کنید .

  

  (vi /etc/pam.d/su)  

           auth sufficient /lib/security/pam_wheel.so trust use_uid

بعد از این تغییر فایل etc/pam.d/su/ بصورت زیر قابل مشاهده است :

#%PAM-1.0

auth       sufficient   /lib/security/pam_rootok.so

auth       sufficient   /lib/security/pam_wheel.so trust use_uid

auth       required     /lib/security/pam_stack.so service=system-auth

account    required     /lib/security/pam_stack.so service=system-auth

password   required     /lib/security/pam_stack.so service=system-auth

session    required     /lib/security/pam_stack.so service=system-auth

session    optional     /lib/security/pam_xauth.so

 استفاده از دستور sudo  بجای su  به منظور لاگین کردن به root 

در سیستم عامل دستوری بنام sudo  داریم . این دستور این قابلیت را دارد که بتوان به کاربری

دیگر حتی root  لاگین کرد اما می توان محدودیت هایی در این دسترسی اعمال کرد .

مثلا می توانیم بگوییم که میتوانی به root لاگین کنی اما مثلا فقط میتوانی به فلان دستور

خاص دسترسی داشته باشی یا فقط می توانی به فلان دایرکتوری خاص دسترسی داشته باشی. 

اگر می خواهید که از فرمان sudo  به جهت لاگین کردن به root استفاده کنید دیگر نیازی به

استفاده از فرمان su  ندارید . بنابراین برای اینکه استفاده از قابلیت su  را برای کلیه کابران

غیرفعال کنیم کافیست که SUID مربوط به فرمان su  را از این فرمان برداریم بعبارتی اجازه

دسترسی به فرمان su  با تنظیم SUID را غیر فعال می کنیم . ما به شما پیشنهاد می دهیم

که به منظور برقراری امنیت بیشتر در serverهای خود این قابلیت را اعمال نمایید . 

بدین منظور کافیست که دستور یا برنامه sudo  را نصب نمایید . همچنین در این صورت دیگر

نیازی نیست که درفایل etc/pam.d/su/ تغییری ایجاد نمایید . و با فرمان زیر اجازه SUID را

از su  میگیریم . 

 

[root@MisLinux /]# chmod    a-s     /bin/su

 

 Please see the link below for reading about how to pam-controlling-access-time-to-services

 

 

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *