اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

10 مورد از تنظیمات مفید Sudoers برای تعریف sudo در لینوکس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    10 مورد از تنظیمات مفید Sudoers برای تعریف sudo در لینوکس

    در لینوکس و سیستم عامل های unix بیس تنها کاربر root میتواند تمامی دستورات را اجرا کند و همچنین عملیات حیاتی خاص روی سیستم همانند نصب و آپدیت، حذف پکیج ها، ایجاد users و groups تغییر فایل های کانفیگ مهم سیستم و ... را انجام دهد.

    به هر حال یک مدیر سیستم که نقش کاربر root را دارد میتواند به کاربرهای عادی سیستم و با استفاده از دستور sudo و کمی تنظیمات این جواز را بدهد که بعضی دستورات را اجرا کند و یا تعدادی از عملیات حیاتی سیستم را شامل مواردی که در بالا ذکر شد انجام دهد.


    توصیه میشود مطالعه کنید :

    تفاوت بین دستور su و sudo در linux و نحوه تنظیمات sudo

    بی احترامی sudo به کاربرانی که پسورد اشتباه وارد میکنند



    همچنین مدیر سیستم میتواند پسورد کاربر root را share کند (که این روش اصلا توصیه نمیشود) بنابراین کاربر عادی سیستم به یوزر root و از طریق دستور su دسترسی خواهد داشت.

    sudo به یک کاربر مجاز این امکان را میدهد که دستورات را همانند root (یا کاربر دیگر) همانطور که توسط policy امنیتی مشخص شده است اجرا کند :
    • فایل /etc/sudoers خوانده و بررسی میشود همچنین یوزر مورد نظر و پرمیژن های او مورد بررسی قرار میگیرند.
    • سپس از یوزر مورد نظر یک پسورد خواسته میشود معمولا پسورد کاربر یا میتواند با تگ NOPASSWD نادیده گرفته شود.
    • بعد از ان sudo یک child proccess ایجاد میکند و در آن setuid() را برای سوییچ کردن به کاربر مورد نظر فرا میخواند.
    • سپس یک شل یا دستوری که به عنوان argument در child proccess بالا داده شده را اجرا میکند.


    در زیر 10 مورد از تنظیمات فایل /etc/sudoers برای تغییر رفتار دستور sudo با استفاده از ورودی های default را مشاهده میکنید.
    کد PHP:
    sudo cat /etc/sudoers 
    کد PHP:
    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # Please consider adding local content in /etc/sudoers.d/ instead of
    # directly modifying this file.
    #
    # See the man page for details on how to write a sudoers file.
    #
    Defaults    env_reset
    Defaults    mail_badpass
    Defaults    secure_path
    ="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    Defaults    logfile="/var/log/sudo.log"
    Defaults    lecture="always"
    Defaults    badpass_message="Password is wrong, please try again"
    Defaults    passwd_tries=5
    Defaults    insults
    Defaults    log_input
    ,log_output 
    انواع ورودی های Default
    کد PHP:
    Defaults                parameter,   parameter_list     #affect all users on any host
    Defaults@Host_List      parameter,   parameter_list     #affects all users on a specific host
    Defaults:User_List      parameter,   parameter_list     #affects a specific user
    Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command
    Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user 
    پارامترها در بالا ممکن است flags, integer values, strings و یا list باشد. شما باید دقت کنید که flag ها به طور نسبی boolean (صفر و یک) هستند و میتوان آنها را با استفاده از عملگر "!" غیر فعال کرد و list ها 2 عملگر اختصاصی اضافی دارند : += (اضافه کردن به list) و -= (حذف از list)
    کد PHP:
    Defaults     parameter
    OR
    Defaults     parameter=value
    OR
    Defaults     parameter -=value  
    Defaults     parameter 
    +=value  
    OR
    Defaults     !parameter 


    1 - تعریف یک مسیر امن

    این همان مسیری هست که برای هر کامندی که با sudo اجرا شود استفاده میگردد، که از 2 اهمیت برخوردار است :
    • هنگامی که یک ادمین سیستم به کاربران sudo اعتماد ندارد استفاده میشود و به منظور داشتن یک متغییر محیطی path امن میباشد.
    • برای جداسازی root path (مسیر کاربر root) و user path (مسیر کاربر عادی) استفاده میشود و تنها کاربرانی که توسط exempt_group مشخص شده اند از این تنظیمات تاثیر نمی پذیرند.


    برای تعریف آن خط زیر را اضافه کنید.
    کد PHP:
    Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" 


    2 - فعال کردن sudo روی TTY در session لاگین یوزر

    برای اینکه از یک TTY واقعی (نه از طریق متدهایی مانند cron یا اسکریپ های cgi-bin) فراخوانی sudo را فعال کنیم خط زیر را به تنظیمات اضافه میکنیم.
    کد PHP:
    Defaults  requiretty 


    3 - اجرای دستور sudo با استفاده از یک pty

    در زمان کمی، attacker ها میتوانند یک نرم افزار مخرب (همانند یک ویروس یا بدافزار) را با استفاده از sudo اجرا کنند، که میتواند دوباره یک پراسس بک گراند را ایجاد کند که در ترمینال کاربر حتی زمانیکه برنامه اصلی اجرای کار خود را به پایان میرساند، باقی میماند.

    برای جلوگیری از این چنین سناریوهایی شما میتوانید تنظیم کنید که sudo کامندهای دیگر را تنها از یک psudo-pty و با استفاده از پارامتر use_pty اجرا کند، چه I/O logging فعال باشد و چه فعال نباشد.
    کد PHP:
    Defaults  use_pty 


    4 - ایجاد یک فایل log برای sudo

    به صورت پیش فرض sudo از طریق syslog(3) لاگ می اندازد. به هر حال برای مشخص کردن یک فایل log custom از پارامتر log file همانند زیر استفاده کنید.
    کد PHP:
    Defaults  logfile="/var/log/sudo.log" 
    برای لاگ کردن hostname و سال چهار رقمی در فایل custom از پارامترهای log_host و log_year به ترتیب و همانند زیر استفاده کنید.
    کد PHP:
    Defaults  log_hostlog_yearlogfile="/var/log/sudo.log" 
    در زیر نمونه ای از یک لاگ فایل sudo مشاهده میکند.
    ایجاد کاربر sudo در لینوکس





    5 - log کردن input/output دستور sudo

    پارامترهای log_input و log_output به sudo این امکان را میدهند تا یک دستور را pseudo-tty اجرا کند و همه input های کاربر و همه output های ارسال شده به صفحه را به ترتیب لاگ کند.

    دایرکتور پیش فرض لاگ ورودی/خروجی /var/log/sudo-io میباشد و اگر یک session sequence number وجود داشته باشد در این دایرکتوری ذخیره میشود. شما میتونید یک دایرکتوری custom برای این امر و از طریق پارامتر iolog_dir مشخص کنید.
    کد PHP:
    Defaults   log_inputlog_output 
    چندین escape sequence نیز پشتیبانی میشوند همانند %{seq} که به یک شماره sequence با base-36 و سعودی یکنواخت گسترش میابد. همانند 000001 که هر دو عدد برای تشکیل یک دایرکتوری جدید استفاده میشود. به طور مثال 00/00/01 در دستور زیر را مشاهده کنید.
    کد PHP:
    cd /var/log/sudo-io/
    ls
    cd  00/00/01
    ls
    cat log 
    اضافه کردن یک یوزر root در لینوکس




    شما میتوانید ما بقی فایل های درون آن دایرکتوری را با استفاده از دستور cat مشاهده کنید.



    6 - Lecture کردن به کاربران Sudo

    برای lecture کردن به کاربران sudo درباره کاربرد پسورد روی سیستم از پارامتر lecture همانند زیر استفاده میشود.

    برای این پارامتر 3 مقدار زیر استفاده میشود :
    • always : همیشه به یک یوزر lecture کند.
    • once : تنها در اولین بار که یک کاربر دستور sudo را اجرا میکند به او lecture کند. (این اپشن زمانی که هیچ مقداری ست نشود استفاده میشود)
    • never : هرگز به یوزر lecture نمیکند.


    کد PHP:
    Defaults  lecture="always" 
    علاوه بر این شما میتوانید یک فایل lecture دستی با استفاده از پارامتر lecture_file تعریف کنید و پیغام مناسب را درون فایل قرار دهید :
    کد PHP:
    Defaults  lecture_file="/path/to/file" 
    تنظیمات sudo در لینوکس





    7 - نمایش پیغام های Custom زمانی که شما پسورد اشتباهی برای sudo وارد کنید

    زمانی که یک یوزر یک پسورد اشتباه وارد کند یک پیغام خاص در کامند لاین نمایش داده میشود. پیغام پیش فرض "sorry, try again" میباشد شما میتوانید این پیغام را با استفاده از پارامتر badpass_message همانند زیر تغییر دهید.
    کد PHP:
    Defaults  badpass_message="Password is wrong, please try again" 


    8 - افزایش محدودیت تعداد دفعات پسورد در sudo

    پارامتر passwd_tries برای مشخص کردن تعداد دفعاتی که یک کاربر میتواند برای وارد کردن پسوردش تلاش کند استفاده میشود.

    مقدار پیش فرض 3 میباشد.
    کد PHP:
    Defaults   passwd_tries=
    محدود کردن لاگین کاربران در لینوکس




    برای تعریف کردن time out پسورد (مقدار پیش فرض 5 دقیقه میباشد) از پارامتر passw_timeoute استفاده کنید. خط زیر را به فایل اضافه کنید.
    کد PHP:
    Defaults   passwd_timeout=


    9 - تنظیمات برای توهین به هنگام وارد کردن پسورد اشتباه

    در مواردی که یک کاربر پسورد اشتباه وارد میکند sudo میتواند یکسری توهین و بی احترامی روی ترمینال نمایش دهد که با استفاده از پارامتر insult امکان پذیر است. که این گزینه به صورت اتوماتیک پارامتر badpass_message را غیر فعال میکند.
    کد PHP:
    Defaults  insults 
    توهین لینوکس به کاربران






    10 - یادگیری تنظیمات بیشتر Sudo

    علاوه بر این شما میتوانید تنظیمات بیشتر دستور sudo را با مطالعه کردن پست زیر یاد بگیرید.

    مدیریت کاربران و سطح دسترسی آنها به فایل ها، Attribute ها و فعال کردن دسترسی sudo روی Account ها



    همین بود! شما میتوانید تنظیمات مفید sudo و یا ترفند های جالب در این زمینه را با ما به اشتراک بگذارید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-02-2021, 12:10 PM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X