آموزش مقدمات لینوکس – بخش هفتم

آموزش مقدمات لینوکس

در این بخش از دوره آموزشی مقدمات لینوکس، به معرفی روش تغییر سطح دسترسی با UGO و همچنین دسترسی های SUID و SGID و تاثیرات آن ها بر امنیت لینوکس می پردازیم.

تغییر سطح دسترسی با UGO

اگرچه تعیین سطح دسترسی به روش عددی بیشتر مورد استفاده قرار می گیرد ولی روش سمبلیک یا UGO نیز طرفداران خود را دارد. در روش سمبلیک، UGO یک مخفف بوده و حرف U برای User یا همان Owner بوده حرف G برای Group و حرف O برگرفته از Other می باشد.

استفاده از روش UGO بسیار راحت است. ابتدا همانند روش عددی از دستور chmod استفاده کرده و پس از آن برای تغییر سطح دسترسی هر بخش از حرف مورد نظر آن که پیش تر به آن اشاره شد استفاده می نماییم. همچنین بوسیله علامات، نوع تغییر در سطح دسترسی را مشخص می کنیم:

علامت (-) منجر به حذف دسترسی می گردد.
علامت (+) منجر به اضافه نمودن دسترسی می گردد.
علامت (=) برای تنظیم یک دسترسی استفاده می شود.

برای استفاده از روش UGO ابتدا یکی از حروف آن یعنی U یا G یا O را وارد نموده و سپس بسته به نوعی تغییر سطح دسترسی که مد نظرمان می باشد از علامات بالا استفاده می نماییم و پس از آن حرف مربوط به سطح دسترسی (rwx) را قرار می دهیم و در ادامه نام فایل قرار می گیرد:

chmod u-w hachcat

دستور بالا دسترسی Write را از فایل hashcat برای کاربر u یا همان Owner حذف می کند. همچنین شما می تواند چند نوع سطح دسترسی را در یک دستور وارد نمایید:

chmod u+x, o+x hashcat

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

تنظیم سطوح دسترسی پیش فرض با Mask

لینوکس به صورت پیش فرض سطح دسترسی را به صورت خودکار به فایل ها و دایرکتوری ها اعمال می کند. این سطح دسترسی معمولا برای فایل ها 666 و برای فولدرها 777 می باشد. برای تغییر در این سطوح دسترسی پیش فرض از روش umask استفاده می شود.

روش umask نشان دهنده مجوزهایی است که می خواهید از مجوز پیش فرض بر روی فایل ها یا فولدرها حذف کنید. در این روش از سه عدد استفاده می شود که هر کدام برای تغییر در سطح دسترسی های مربوط به سه بخش rwx است. به تصویر زیر توجه نمایید:

umask

در مثال بالا برای umask عدد 022 تنظیم شده است. این بدین معنی است که مقدار 022 از مقدار پیش فرض که 666 برای فایل و 777 برای فولدرها می باشد کم شده و از این پس سطح دسترسی پیش فرض برای فایل ها در لینوکس 644 و دسترسی پیش فرض برای فولدرها در لینوکس 755 می باشد.

اعطای موقت مجوز root بوسیله SUID

همانطور که می دانید، یک کاربر تنها زمانی می تواند یک فایل را اجرا کند که دسترسی Execute را بر روی آن داشته باشد. اگر کاربر تنها دسترسی خواندن و نوشتن بر روی یک فایل را داشته باشد، نمی تواند آن را اجرا نماید. این مورد ممکن است ساده به نظر برسد ولی استثنائاتی هم در این مورد وجود دارد.
شما ممکن است با موردی مواجه شوید که در آن یک فایل برای اجرا نیاز به دسترسی root داشته باشد؛ حتی برای کاربران معمولی و غیر Root !

به عنوان مثال یک فایل که به کاربران اجازه می دهد تا کلمه عبور خود را تغییر دهند، نیاز به دسترسی به فایل /etc/shadow دارد که به منظور اجرای این فایل نیاز به دسترسی root می باشد و کاربرانی که دسترسی root را ندارند، امکان دسترسی به این فایل و اجرای آن را نخواهند داشت. در این مورد شما می توانید با تنظیم بیت SUID بر روی برنامه، دسترسی اجرا را به فایل اختصاص دهید.

در اصل، بیت SUID می گوید که هر کاربر می تواند فایل را با مجوزهای Owner آن اجرا کند اما این مجوزها فراتر از استفاده از آن فایل نیست. برای تنظیم بیت SUID کافی است تا عدد 4 را پیش از اعداد مربوط به سطح دسترسی معمولی قرار دهید به عنوان مثال اگر عدد سطح دسترسی برابر 644 باشد با اضافه نمودن مقدار SUID، مقدار نهایی برابر با 4664 می شود. برای انجام آن نیز از دستور chmod استفاده می شود:

chmod 4644 filename

اعطای موقت مجوز root بوسیله SGID

SGID هم مجوزهای موقت را اعطا می کند، اما مجوزهای اعطا شده توسط آن مربوط به گروه صاحب فایل می باشد. برای تنظیم بیت SGID کافی است عدد 2 را پیش از عدد سطح دسترسی معمول فایل قرار داد. بنابراین اگر عدد دسترسی برای یک فایل عدد 644 باشد، برای تنظیم بیت SGID، عدد نهایی برابر با 2644 می باشد.
برای تنظیم SGID هم از دستور chmod استفاده می گردد:

chmod 2644 filename

The Outmoded Sticky Bit

بیت Sticky یک بیت مجوزی است که می توانید آن را برای یک دایرکتوری تنظیم نمایید تا به کاربر امکان حذف یا تغییر نام فایل های داخل آن دایرکتوری را بدهد. بیت Sticky یک میراث از سیستم های قدیمی یونیکس بوده و سیستم های مدرن مانند لینوکس آن را نادیده می گیرند. به همین دلیل در این بخش ما بیشتر از این به آن نمی پردازیم ولی به دلیل اینکه شما باید حداقل آن را شنیده باشید در این بخش به آن اشاره شده است.

مجوزهای خاص و بالا بردن دسترسی

برای یک نفوذگر، مجوزهای خاص می تواند برای سوء استفاده از سیستم های لینوکس از طریق بالا بردن دسترسی مورد استفاده قرار گیرد و به موجب آن یک کاربر معمولی، امتیازات کاربر root و مجوزهای مرتبط با آن را به دست آورد.

یکی از راه های انجام این کار، بهره برداری از بیت SUID است. مدیران سیستم یا توسعه دهندگان نرم افزار ممکن است بیت SUID را بر روی یک برنامه تنظیم کنند تا به آن برنامه اجازه دسترسی به فایل های با امتیازات root را بدهند.

به عنوان مثال، اسکریپت هایی که نیاز به تغییر کلمه عبور را دارند، اغلب بیت SUID برای آن ها تنظیم شده است. نفوذگر می تواند از این مجوزها برای به دست آوردن امتیازات موقت root وانجام فعالیت های مخرب مانند دسترسی به کلمات عبور در فایل /etc/shadow استفاده نماید.

برای این منظور ما باید با استفاده از دستور find به دنبال فایل هایی که بیت SUID برای آن ها تنظیم شده است باشیم. یکی از ویژگی های دستور find نسبت به دستورات دیگر مانند locate و which امکان جست و جوی فایل هایی با بیت SUID می باشد.

آموزش دستورات کاربردی لینوکس

دستور زیر برای جست وجوی فایل هایی با دسترسی 4000 که مالک آن ها root می باشد مورد استفاده قرار می گیرد:

find / -user root -perm -4000

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

SUID in Linux

در ادامه وارد مسیر /usr/bin شده خروجی آن را به فایل هایی که با su شروع می شوند محدود می نماییم:

SUID in Linux

همانطور که در تصویر بالا قابل مشاهده می باشد، دسترسی مشخص شده برای فایل های su و sudo با فایل های دیگر کمی متفاوت بوده و در بخش اول از سطح دسترسی به جای حرف x از حرف s استفاده شده است. این مورد نشانگر تنظیم بودن SUID برای فایل های مذکور است.

این بدان معناست که هر فردی که فایل sudo را اجرا کند، از امتیازات کاربر root برخوردار است و این موضوع می تواند نگرانی های امنیتی را برای مدیران سیستم به همراه داشته و یک Attack Vector بالقوه باشد.

به عنوان مثال، برخی از برنامه ها برای انجام موفقیت آمیز وظایف خود نیاز به دسترسی به فایل /etc/shadow را دارند. اگر نفوذگر بتواند کنترل این برنامه را به دست بگیرد، با توجه به سطح دسترسی که این برنامه به فایل /etc/shadow دارد، می تواند از دسترسی آن برنامه برای دسترسی به کلمات عبور در سیستم لینوکس استفاده نماید.

در انتها توجه داشته باشید که لینوکس دارای یک سیستم امنیتی توسعه یافته است که از فایل ها و فولدرها در برابر دسترسی های غیرمجاز محافظت می کند. به همین منظور نفوذگران و البته متخصصان امنیت باید درک اساسی از این سیستم داشته باشند. در برخی موارد، نفوذگران می توانند از مجوزهای SUID و SGID برای افزایش امتیازات از یک کاربر معمولی به یک کاربر root استفاده نمایند.

درباره نویسنده: احسان نیک آور

ممکن است دوست داشته باشید