در لینوکس، لینک های hard و soft به فایل ها ارجاع داده میشوند که بسیار مهم هستند و اگر به خوبی از آنها محافظت نشود هکرها یا کاربران خبیث سیستم میتوانند هر گونه آسیبی به آنها وارد کنند.
symlink race یکی از آسیب پذیری رایج است، که نوعی آسیب پذیری امنیتی در نرم افزار میباشد و هنگامی که یک برنامه به صورت غیر امن فایل هایی را ایجاد میکند (مخصوصا فایل های موقت) و کاربر خبیث سیستم میتواند یک symbolic link (یا soft) به آن فایل ها ایجاد کند که این نوع آسیب پذیری به وقوع میپیوندند.
همچنین توصیه میشود مطالعه کنید : نحوه ایجاد یک لینک Hard و Symbolic در Linux (به زودی)
عملا چنین اتفاقی می افتد : یک برنامه بررسی میکند که آیا یک فایل temp وجود دارد یا ندارد، در شرایطی که وجود نداشته باشند فایل را ایجاد میکند اما در مدت زمان کوتاهی بین بررسی فایل و ایجاد آن، یک هکر میتواند یک symbolic link به یک فایل بزند و او مجاز به دسترسی نمیباشد.
سپس زمانیکه برنامه با سطوح دسترسی صحیح اجرا میشوند فایل را با نام یکسانی همانند آنچه که توسط هکر ایجاد شده، میسازد و عینا فایل مقصد (فایل لینک شده) که هکر قصد دسترسی به آنرا دارد ایجاد میکند. علاوه بر این برای دزدیدن اطلاعات حساس از اکانت روت یا اجرا کردن یک برنامه مخرب روی سیستم به هکر مسیر میدهد.
بنابراین در این مقاله ما به شما نحوه امن کردن لینک های هارد و سافت از دسترسی کابران خرابکار یا هکر ها در توزیع های CentOS/RedHat 7 را نمایش خواهیم داد.
روی CentOS/RHEL 7 یک ابزار امنیتی حیاتی و جود دارد که تنها لینک هایی را مجاز میداند که توسط یک برنامه ایجاد یا دنبال میشوند در صورتی که یک سری شرط ها همانند آنجه که در زیر توضیح داده شده، برقرار شوند.
برای Hard Links
برای اینکه یک کاربر سیستمی بتواند یک لینک ایجاد کند باید یکی از شرط های زیر برقرار باشد.
برای Symbolic Links
Process ها تنها مجاز به دنبال کردن لینک هایی هستند که خارج از دایرکتوریهای قابل write توسط همه (کاربران دیگر (other) امکان write (نوشتن) در آن را دارند) هستند و sticky bits دارند و یا یکی از شروط زیر رد مورد آنها صدق میکند.
فعال یا غیرفعال کردن محافظت روی لینک های Hard و Symbolic
به طرز مهمی این قابلیت به صورت پیش فرض با استفاده از پارامترهای Kernel در فایل /usr/lib/sysctl.d/50-default.conf فعال میشود (مقدار 1 به معنی فعال بودن است)
به هر حال و به هر دلیلی اگر شما بخواهید این ابزار امنیتی را غیرفعال کنید باید یک فایل به نام /etc/sysctl.d/51-no-protect-links.conf و با محتویات دو آپشن کرنل زیر ایجاد کنید. (مقدار 0 به معنی غیر فعال بودن است)
به 51 نوشته شده در نام فایل (51-no-protect-links.conf) دقت کنید، که باید بعد از فایل پیش فرض و به منظور override شدن تنظیمات پیش فرض فراخوانی شود.
فایل را ذخیره و از آن خارج شوید سپس از دستور زیر برای اعمال تغییرات استفاده کنید. (این دستور در حقیقت تنظیمات را از هر فایل کانفیگ سیستمی لود میکند)
همچنین توصیه میشود که مقالات زیر را مطالعه فرمایید.
نحوه محافظت از یک فایل Vim از طریق Password گذاشتن روی آن در Linux (به زودی)
5 مثال از دستور chattr برای غیر قابل ویرایش کردن فایل های مهم در Linux
هرگونه سوال یا نظری را در رابطه با موضوع این پست در همینجا با ما به اشتراک بگذارید.
symlink race یکی از آسیب پذیری رایج است، که نوعی آسیب پذیری امنیتی در نرم افزار میباشد و هنگامی که یک برنامه به صورت غیر امن فایل هایی را ایجاد میکند (مخصوصا فایل های موقت) و کاربر خبیث سیستم میتواند یک symbolic link (یا soft) به آن فایل ها ایجاد کند که این نوع آسیب پذیری به وقوع میپیوندند.
همچنین توصیه میشود مطالعه کنید : نحوه ایجاد یک لینک Hard و Symbolic در Linux (به زودی)
عملا چنین اتفاقی می افتد : یک برنامه بررسی میکند که آیا یک فایل temp وجود دارد یا ندارد، در شرایطی که وجود نداشته باشند فایل را ایجاد میکند اما در مدت زمان کوتاهی بین بررسی فایل و ایجاد آن، یک هکر میتواند یک symbolic link به یک فایل بزند و او مجاز به دسترسی نمیباشد.
سپس زمانیکه برنامه با سطوح دسترسی صحیح اجرا میشوند فایل را با نام یکسانی همانند آنچه که توسط هکر ایجاد شده، میسازد و عینا فایل مقصد (فایل لینک شده) که هکر قصد دسترسی به آنرا دارد ایجاد میکند. علاوه بر این برای دزدیدن اطلاعات حساس از اکانت روت یا اجرا کردن یک برنامه مخرب روی سیستم به هکر مسیر میدهد.
بنابراین در این مقاله ما به شما نحوه امن کردن لینک های هارد و سافت از دسترسی کابران خرابکار یا هکر ها در توزیع های CentOS/RedHat 7 را نمایش خواهیم داد.
روی CentOS/RHEL 7 یک ابزار امنیتی حیاتی و جود دارد که تنها لینک هایی را مجاز میداند که توسط یک برنامه ایجاد یا دنبال میشوند در صورتی که یک سری شرط ها همانند آنجه که در زیر توضیح داده شده، برقرار شوند.
برای Hard Links
برای اینکه یک کاربر سیستمی بتواند یک لینک ایجاد کند باید یکی از شرط های زیر برقرار باشد.
- کاربر تنها بتواند به فایل های خودش (فایل هایی که Owner (مالک) آنهاست) لینک بزند.
- کاربر ابتدا باید به فایلی که میخواهد به ان لینک بزند، دسترسی read و write داشته باشد.
برای Symbolic Links
Process ها تنها مجاز به دنبال کردن لینک هایی هستند که خارج از دایرکتوریهای قابل write توسط همه (کاربران دیگر (other) امکان write (نوشتن) در آن را دارند) هستند و sticky bits دارند و یا یکی از شروط زیر رد مورد آنها صدق میکند.
- پروسسی که symbolic link را دنبال میکند در حقیقت owner همان symbolic link است.
- مالک (Owner) دایرکتوری، همچنین مالک symbolic link نیز میباشد.
فعال یا غیرفعال کردن محافظت روی لینک های Hard و Symbolic
به طرز مهمی این قابلیت به صورت پیش فرض با استفاده از پارامترهای Kernel در فایل /usr/lib/sysctl.d/50-default.conf فعال میشود (مقدار 1 به معنی فعال بودن است)
کد PHP:
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
به 51 نوشته شده در نام فایل (51-no-protect-links.conf) دقت کنید، که باید بعد از فایل پیش فرض و به منظور override شدن تنظیمات پیش فرض فراخوانی شود.
کد PHP:
fs.protected_hardlinks = 0
fs.protected_symlinks = 0
کد PHP:
# sysctl --system
OR
# sysctl -p #on older systems
همچنین توصیه میشود که مقالات زیر را مطالعه فرمایید.
نحوه محافظت از یک فایل Vim از طریق Password گذاشتن روی آن در Linux (به زودی)
5 مثال از دستور chattr برای غیر قابل ویرایش کردن فایل های مهم در Linux
هرگونه سوال یا نظری را در رابطه با موضوع این پست در همینجا با ما به اشتراک بگذارید.