بمب چنگالی چیست و چگونه می توان جلوی آن را گرفت؟

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

اگر از بمب واقعی نمی ترسید، باید از بمب چنگالی بترسید، شما می توانید برای خراب کردن یک کامپیوتر:(){ :|:& };: را در ترمینالتایپ کنید. لازم نیست که برای این کار یک کاربر حرفه ای باشید. به این فرمان بمب چنگالی می گویند. قبل از این که بدانید چگونه کار می کند باید اول بدانید که بمب چنگالی دقیقا چیست. 

بمب چنگالی چیست؟
البته بمب چنگالی به این معنی نیست که وقتی که آن را در ترمینال اجرا کنید به سمت شما چنگال غذاخوری پرتاب کند. از نظر نیکسولوژی (و یونیکس) ، چنگال به معنی ایجاد یک پروسه جدید است. به طور مشابه، وقتی که یک پروسه جدید با استفاده از " fork" یا چنگال می سازید ( این قابلیت در ماشین های لینوکس/یونیکس عمل می کند)، این پروسه از تصویر اصلی کپی می شود و اصولا جانشین پروسه اصلی می شود. 


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

function_name()
{
Commands
{

> بمب چنگالی چگونه کار می کند؟ 
":" نام تابع است که به دنبال آن " ()" و "}" برای بازکردن تابع می آید، سپس " :|:" به بش فرمان می دهد که تابع ":" اجرا شود و "|" خروجی را به همان تابع ":" می دهد و پروسه را به پیش زمینه تعریف شده با "&" منتقل می کند، در نتیجه نمی توان آن را با " Ctrl + C" از بین برد. علامت "{" و سپس " :;" باعث می شود که این پروسه ادامه داشته باشد. 
برای اجرای این بمب تنها چیزی که لازم است این است که :(){ :|:& };: را در ترمینال تایپ کنید و اینتر را بزنید. آنقدر سرعت شما پایین می آید که تنها کاری که می توانید بکنید ریست کردن است. زمانی که سیستم شما از پا در می آید به سرعت پردازنده شما، تعداد هسته های پردازش موجود و تعداد رم نصب شده بستگی دارد. گرچه اندازه تعویض پارتیشن نیز یک عامل موثر است، اگر توسط بمب استفاده شود، سیستم خیلی دیر به شما پاسخ می دهد. 
تکنیک ساخت پروسه های جدید روی ویندوز نیز عمل می کند و این مشکل می تواند در دیگر زبان های برنامه نویسی سیستمی مانند C و C++ نیز دردسر ساز شود، برای مثال کد زیر را کامپایل کنید و آن را اجرا کنید تا خودتان بفهمید. 

  FORK BOMB IN C
  

  #include
  

  int main(void) {
  

      for(;;)
  

      fork();
  

      return 0;
  

  {

اگر از بمب واقعی نمی ترسید، باید از بمب چنگالی بترسید، شما می توانید برای خراب کردن یک کامپیوتر:(){ :|:& };: را در ترمینالتایپ کنید. لازم نیست که برای این کار یک کاربر حرفه ای باشید. به این فرمان بمب چنگالی می گویند. قبل از این که بدانید چگونه کار می کند باید اول بدانید که بمب چنگالی دقیقا چیست. 

بمب چنگالی چیست؟
البته بمب چنگالی به این معنی نیست که وقتی که آن را در ترمینال اجرا کنید به سمت شما چنگال غذاخوری پرتاب کند. از نظر نیکسولوژی (و یونیکس) ، چنگال به معنی ایجاد یک پروسه جدید است. به طور مشابه، وقتی که یک پروسه جدید با استفاده از " fork" یا چنگال می سازید ( این قابلیت در ماشین های لینوکس/یونیکس عمل می کند)، این پروسه از تصویر اصلی کپی می شود و اصولا جانشین پروسه اصلی می شود. 


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

  function_name()
  

  {
  

  Commands
  

  {
  

    

> بمب چنگالی چگونه کار می کند؟ 
":" نام تابع است که به دنبال آن " ()" و "}" برای بازکردن تابع می آید، سپس " :|:" به بش فرمان می دهد که تابع ":" اجرا شود و "|" خروجی را به همان تابع ":" می دهد و پروسه را به پیش زمینه تعریف شده با "&" منتقل می کند، در نتیجه نمی توان آن را با " Ctrl + C" از بین برد. علامت "{" و سپس " :;" باعث می شود که این پروسه ادامه داشته باشد. 
برای اجرای این بمب تنها چیزی که لازم است این است که :(){ :|:& };: را در ترمینال تایپ کنید و اینتر را بزنید. آنقدر سرعت شما پایین می آید که تنها کاری که می توانید بکنید ریست کردن است. زمانی که سیستم شما از پا در می آید به سرعت پردازنده شما، تعداد هسته های پردازش موجود و تعداد رم نصب شده بستگی دارد. گرچه اندازه تعویض پارتیشن نیز یک عامل موثر است، اگر توسط بمب استفاده شود، سیستم خیلی دیر به شما پاسخ می دهد. 
تکنیک ساخت پروسه های جدید روی ویندوز نیز عمل می کند و این مشکل می تواند در دیگر زبان های برنامه نویسی سیستمی مانند C و C++ نیز دردسر ساز شود، برای مثال کد زیر را کامپایل کنید و آن را اجرا کنید تا خودتان بفهمید. 
FORK BOMB IN C
#include
int main(void) {
    for(;;)
    fork();
    return 0;
{
چگونه در برابر بمب چنگالی امنیت داشته باشیم؟ 
بمب چنگالی سیستم را با ایجاد تعداد بی شماری پروسه از کار می اندازد. بترین قسمت این است که برای ایجاد این بمب نیاز نیست که یک کاربر حرفه ای باشید. برای حفظ امنیت در برابر بمب چنگالی تعداد پروسه هایی که یک کاربر می تواند ایجاد کند را محدود کنید، می توانید برای یک کاربر فقط امکان ایجاد 1000 تا 4000 پروسه را فراهم کنید. معمولا یک کاربر می تواند روی 300-200 پروسه در یک زمان کار کند. با این حال برای کسانی که چندین کار را در یک زمان انجام می دهند 1000 ممکن است کم باشد. 

 

Understanding /etc/security/limits.conf file 
هر خط محدودیتی را برای کاربر تعریف می کند: 

که: 
o     می تواند موارد زیر باشد: 
•    یک نام کاربری
•    یک نام گروه، با ترکیب @group
•    فرانویسه*، برای وروی پیش فرض
•    فرانویس %، که می توان آن را با ترکیب %group استفاده کرد، برای محدود کردن حداکثر ورودی 

o     می تواند دو قدر داشته باشد: 
•    “soft” برای اجرا محدودیت های نرم
•     “hard” برای اجرای محدودیت های سخت 

o     می تواند یکی از این موارد باشد: 
•    core-  اندازه فایل هسته ای را محدود می کند ( KB) 

o     می تواند برای یکی از موارد زیر استفاده شود:
•    core - اندازه فایل هسته ای را محدود می کند ( KB)
•    data - اندازه دیتا را به حداکثر می رساند ( KB)
•    fsize – بیشینه اندازه فایل ( KB)
•    Memlock- فضای آدرس قفل شده در حافظه بیشینه
•    Nofile- تعداد بیشینه فایل های باز 
•    Rss- اندازه مجموعه ساکن ( KB)
•    Stack- اندازه پشته بیشینه (KB)
•    Cpu- زمان سی پی یو بیشینه (MIN)
•    Nproc- تعداد بیشینه پروسه ها 
•    As -محدودیت فضای آدرس
•    Maxlogins- بیشینه ورود برای این کاربر 
•    Maxsyslogins- بیشینه ورود روی سیستم 
•    Priority- اولویت برای اجرای پروسه کاربر 
•    Locks- تعداد فایل های قفل شده که کاربر می تواند داشته باشد 
•    Sigpending- بیشینه تعداد سیگنال های در حال انتظار 
•    Msgqueue- حافظه بیشینه استفاده شده توسط صف های پیام POSIX
•    Nice- بیشینه تعداد اولویت ها 
•    Rtprio- اولویت زمان واقعی 
•    Chroot- روت را به دایرکتوری تغییر می دهد. 
برای محدود کردن تعداد پروسه ها بر اساس کاربران، می توانید  file /etc/security/limits.conf را باز کرده و خط زیر را به آن اضافه کنید: 
mohammad hard nproc 4000
این کار باعث می شود که حساب یک کاربر به بیش از 4000 پروسه محدود شود. فایل را ذخیره کنید و سیستم را ریبوت کنید و بمب چنگالی را اجرا کنید. حال سیستم باید بتواند جلوی حمله را بگیرد. 
اگر یک بمب چنگالی از قبل اجرا شده باشد و محدودیت برای پروسه ها فعال باشد، می توانید به عنوان روت وارد شوید و همه پروسه های بش را ببندید تا بمب چنگاری

اگر از بمب واقعی نمی ترسید، باید از بمب چنگالی بترسید، شما می توانید برای خراب کردن یک کامپیوتر:(){ :|:& };: را در ترمینالتایپ کنید. لازم نیست که برای این کار یک کاربر حرفه ای باشید. به این فرمان بمب چنگالی می گویند. قبل از این که بدانید چگونه کار می کند باید اول بدانید که بمب چنگالی دقیقا چیست. 

بمب چنگالی چیست؟
البته بمب چنگالی به این معنی نیست که وقتی که آن را در ترمینال اجرا کنید به سمت شما چنگال غذاخوری پرتاب کند. از نظر نیکسولوژی (و یونیکس) ، چنگال به معنی ایجاد یک پروسه جدید است. به طور مشابه، وقتی که یک پروسه جدید با استفاده از " fork" یا چنگال می سازید ( این قابلیت در ماشین های لینوکس/یونیکس عمل می کند)، این پروسه از تصویر اصلی کپی می شود و اصولا جانشین پروسه اصلی می شود. 


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

  function_name()
  

  {
  

  Commands
  

  {
  

    

> بمب چنگالی چگونه کار می کند؟ 
":" نام تابع است که به دنبال آن " ()" و "}" برای بازکردن تابع می آید، سپس " :|:" به بش فرمان می دهد که تابع ":" اجرا شود و "|" خروجی را به همان تابع ":" می دهد و پروسه را به پیش زمینه تعریف شده با "&" منتقل می کند، در نتیجه نمی توان آن را با " Ctrl + C" از بین برد. علامت "{" و سپس " :;" باعث می شود که این پروسه ادامه داشته باشد. 
برای اجرای این بمب تنها چیزی که لازم است این است که :(){ :|:& };: را در ترمینال تایپ کنید و اینتر را بزنید. آنقدر سرعت شما پایین می آید که تنها کاری که می توانید بکنید ریست کردن است. زمانی که سیستم شما از پا در می آید به سرعت پردازنده شما، تعداد هسته های پردازش موجود و تعداد رم نصب شده بستگی دارد. گرچه اندازه تعویض پارتیشن نیز یک عامل موثر است، اگر توسط بمب استفاده شود، سیستم خیلی دیر به شما پاسخ می دهد. 
تکنیک ساخت پروسه های جدید روی ویندوز نیز عمل می کند و این مشکل می تواند در دیگر زبان های برنامه نویسی سیستمی مانند C و C++ نیز دردسر ساز شود، برای مثال کد زیر را کامپایل کنید و آن را اجرا کنید تا خودتان بفهمید. 
FORK BOMB IN C
#include
int main(void) {
    for(;;)
    fork();
    return 0;
{
چگونه در برابر بمب چنگالی امنیت داشته باشیم؟ 
بمب چنگالی سیستم را با ایجاد تعداد بی شماری پروسه از کار می اندازد. بترین قسمت این است که برای ایجاد این بمب نیاز نیست که یک کاربر حرفه ای باشید. برای حفظ امنیت در برابر بمب چنگالی تعداد پروسه هایی که یک کاربر می تواند ایجاد کند را محدود کنید، می توانید برای یک کاربر فقط امکان ایجاد 1000 تا 4000 پروسه را فراهم کنید. معمولا یک کاربر می تواند روی 300-200 پروسه در یک زمان کار کند. با این حال برای کسانی که چندین کار را در یک زمان انجام می دهند 1000 ممکن است کم باشد. 

 

Understanding /etc/security/limits.conf file 
هر خط محدودیتی را برای کاربر تعریف می کند: 

که: 
o     می تواند موارد زیر باشد: 
•    یک نام کاربری
•    یک نام گروه، با ترکیب @group
•    فرانویسه*، برای وروی پیش فرض
•    فرانویس %، که می توان آن را با ترکیب %group استفاده کرد، برای محدود کردن حداکثر ورودی 

o     می تواند دو قدر داشته باشد: 
•    “soft” برای اجرا محدودیت های نرم
•     “hard” برای اجرای محدودیت های سخت 

o     می تواند یکی از این موارد باشد: 
•    core-  اندازه فایل هسته ای را محدود می کند ( KB) 

o     می تواند برای یکی از موارد زیر استفاده شود:
•    core - اندازه فایل هسته ای را محدود می کند ( KB)
•    data - اندازه دیتا را به حداکثر می رساند ( KB)
•    fsize – بیشینه اندازه فایل ( KB)
•    Memlock- فضای آدرس قفل شده در حافظه بیشینه
•    Nofile- تعداد بیشینه فایل های باز 
•    Rss- اندازه مجموعه ساکن ( KB)
•    Stack- اندازه پشته بیشینه (KB)
•    Cpu- زمان سی پی یو بیشینه (MIN)
•    Nproc- تعداد بیشینه پروسه ها 
•    As -محدودیت فضای آدرس
•    Maxlogins- بیشینه ورود برای این کاربر 
•    Maxsyslogins- بیشینه ورود روی سیستم 
•    Priority- اولویت برای اجرای پروسه کاربر 
•    Locks- تعداد فایل های قفل شده که کاربر می تواند داشته باشد 
•    Sigpending- بیشینه تعداد سیگنال های در حال انتظار 
•    Msgqueue- حافظه بیشینه استفاده شده توسط صف های پیام POSIX
•    Nice- بیشینه تعداد اولویت ها 
•    Rtprio- اولویت زمان واقعی 
•    Chroot- روت را به دایرکتوری تغییر می دهد. 
برای محدود کردن تعداد پروسه ها بر اساس کاربران، می توانید  file /etc/security/limits.conf را باز کرده و خط زیر را به آن اضافه کنید: 

اگر از بمب واقعی نمی ترسید، باید از بمب چنگالی بترسید، شما می توانید برای خراب کردن یک کامپیوتر:(){ :|:& };: را در ترمینالتایپ کنید. لازم نیست که برای این کار یک کاربر حرفه ای باشید. به این فرمان بمب چنگالی می گویند. قبل از این که بدانید چگونه کار می کند باید اول بدانید که بمب چنگالی دقیقا چیست. 

بمب چنگالی چیست؟
البته بمب چنگالی به این معنی نیست که وقتی که آن را در ترمینال اجرا کنید به سمت شما چنگال غذاخوری پرتاب کند. از نظر نیکسولوژی (و یونیکس) ، چنگال به معنی ایجاد یک پروسه جدید است. به طور مشابه، وقتی که یک پروسه جدید با استفاده از " fork" یا چنگال می سازید ( این قابلیت در ماشین های لینوکس/یونیکس عمل می کند)، این پروسه از تصویر اصلی کپی می شود و اصولا جانشین پروسه اصلی می شود. 


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

  function_name()
  

  {
  

  Commands
  

  {
  

    

> بمب چنگالی چگونه کار می کند؟ 
":" نام تابع است که به دنبال آن " ()" و "}" برای بازکردن تابع می آید، سپس " :|:" به بش فرمان می دهد که تابع ":" اجرا شود و "|" خروجی را به همان تابع ":" می دهد و پروسه را به پیش زمینه تعریف شده با "&" منتقل می کند، در نتیجه نمی توان آن را با " Ctrl + C" از بین برد. علامت "{" و سپس " :;" باعث می شود که این پروسه ادامه داشته باشد. 
برای اجرای این بمب تنها چیزی که لازم است این است که :(){ :|:& };: را در ترمینال تایپ کنید و اینتر را بزنید. آنقدر سرعت شما پایین می آید که تنها کاری که می توانید بکنید ریست کردن است. زمانی که سیستم شما از پا در می آید به سرعت پردازنده شما، تعداد هسته های پردازش موجود و تعداد رم نصب شده بستگی دارد. گرچه اندازه تعویض پارتیشن نیز یک عامل موثر است، اگر توسط بمب استفاده شود، سیستم خیلی دیر به شما پاسخ می دهد. 
تکنیک ساخت پروسه های جدید روی ویندوز نیز عمل می کند و این مشکل می تواند در دیگر زبان های برنامه نویسی سیستمی مانند C و C++ نیز دردسر ساز شود، برای مثال کد زیر را کامپایل کنید و آن را اجرا کنید تا خودتان بفهمید. 
FORK BOMB IN C
#include
int main(void) {
    for(;;)
    fork();
    return 0;
{
چگونه در برابر بمب چنگالی امنیت داشته باشیم؟ 
بمب چنگالی سیستم را با ایجاد تعداد بی شماری پروسه از کار می اندازد. بترین قسمت این است که برای ایجاد این بمب نیاز نیست که یک کاربر حرفه ای باشید. برای حفظ امنیت در برابر بمب چنگالی تعداد پروسه هایی که یک کاربر می تواند ایجاد کند را محدود کنید، می توانید برای یک کاربر فقط امکان ایجاد 1000 تا 4000 پروسه را فراهم کنید. معمولا یک کاربر می تواند روی 300-200 پروسه در یک زمان کار کند. با این حال برای کسانی که چندین کار را در یک زمان انجام می دهند 1000 ممکن است کم باشد. 

 

Understanding /etc/security/limits.conf file 
هر خط محدودیتی را برای کاربر تعریف می کند: 

که: 
o     می تواند موارد زیر باشد: 
•    یک نام کاربری
•    یک نام گروه، با ترکیب @group
•    فرانویسه*، برای وروی پیش فرض
•    فرانویس %، که می توان آن را با ترکیب %group استفاده کرد، برای محدود کردن حداکثر ورودی 

o     می تواند دو قدر داشته باشد: 
•    “soft” برای اجرا محدودیت های نرم
•     “hard” برای اجرای محدودیت های سخت 

o     می تواند یکی از این موارد باشد: 
•    core-  اندازه فایل هسته ای را محدود می کند ( KB) 

o     می تواند برای یکی از موارد زیر استفاده شود:
•    core - اندازه فایل هسته ای را محدود می کند ( KB)
•    data - اندازه دیتا را به حداکثر می رساند ( KB)
•    fsize – بیشینه اندازه فایل ( KB)
•    Memlock- فضای آدرس قفل شده در حافظه بیشینه
•    Nofile- تعداد بیشینه فایل های باز 
•    Rss- اندازه مجموعه ساکن ( KB)
•    Stack- اندازه پشته بیشینه (KB)
•    Cpu- زمان سی پی یو بیشینه (MIN)
•    Nproc- تعداد بیشینه پروسه ها 
•    As -محدودیت فضای آدرس
•    Maxlogins- بیشینه ورود برای این کاربر 
•    Maxsyslogins- بیشینه ورود روی سیستم 
•    Priority- اولویت برای اجرای پروسه کاربر 
•    Locks- تعداد فایل های قفل شده که کاربر می تواند داشته باشد 
•    Sigpending- بیشینه تعداد سیگنال های در حال انتظار 
•    Msgqueue- حافظه بیشینه استفاده شده توسط صف های پیام POSIX
•    Nice- بیشینه تعداد اولویت ها 
•    Rtprio- اولویت زمان واقعی 
•    Chroot- روت را به دایرکتوری تغییر می دهد. 
برای محدود کردن تعداد پروسه ها بر اساس کاربران، می توانید  file /etc/security/limits.conf را باز کرده و خط زیر را به آن اضافه کنید: 
mohammad hard nproc 4000
این کار باعث می شود که حساب یک کاربر به بیش از 4000 پروسه محدود شود. فایل را ذخیره کنید و سیستم را ریبوت کنید و بمب چنگالی را اجرا کنید. حال سیستم باید بتواند جلوی حمله را بگیرد. 
اگر یک بمب چنگالی از قبل اجرا شده باشد و محدودیت برای پروسه ها فعال باشد، می توانید به عنوان روت وارد شوید و همه پروسه های بش را ببندید تا بمب چنگالی را خنثی کنید. در صورتی که بمب چنگالی توسط یک کاربر محلی فعال شده باشد و تعداد پروسه ها را برای آن کاربر فعال نکرده اید، اما هنوز کمی زمان دارید نباید از فرمان زیر استفاده کنید: 
killall -9 Script_Name$
که به خاطر طبیعت بمب چنگالی کار نمی کند. دلیل این است که killall آن را قفل نمی کند در نتیجه هرکدام از آن ها که از بین می رود یکی جدید جای آن را می گیرد. 
در عوض می توانید از فرمان زیر استفاده کنید: 
$ exec killall -9 ScritName 
$ exec killall STOP ScriptName

نکته: این محدودیت ها تاثیری روی کاربر حرفه ای یا هر پروسه با قابلیت های CAP_SYS_ADMIN یا CAP_SYS_RESOURCE با این نوع محدودیت روی سیستم مبتنی برندارد. 

mohammad hard nproc 4000
این کار باعث می شود که حساب یک کاربر به بیش از 4000 پروسه محدود شود. فایل را ذخیره کنید و سیستم را ریبوت کنید و بمب چنگالی را اجرا کنید. حال سیستم باید بتواند جلوی حمله را بگیرد. 
اگر یک بمب چنگالی از قبل اجرا شده باشد و محدودیت برای پروسه ها فعال باشد، می توانید به عنوان روت وارد شوید و همه پروسه های بش را ببندید تا بمب چنگاری را خنثی کنید. در صورتی که بمب چنگالی توسط یک کاربر محلی فعال شده باشد و تعداد پروسه ها را برای آن کاربر فعال نکرده اید، اما هنوز کمی زمان دارید نباید از فرمان زیر استفاده کنید: 
killall -9 Script_Name$
که به خاطر طبیعت بمب چنگالی کار نمی کند. دلیل این است که killall آن را قفل نمی کند در نتیجه هرکدام از آن ها که از بین می رود یکی جدید جای آن را می گیرد. 
در عوض می توانید از فرمان زیر استفاده کنید: 
$ exec killall -9 ScritName 
$ exec killall STOP ScriptName

نکته: این محدودیت ها تاثیری روی کاربر حرفه ای یا هر پروسه با قابلیت های CAP_SYS_ADMIN یا CAP_SYS_RESOURCE با این نوع محدودیت روی سیستم مبتنی برندارد. 

را خنثی کنید. در صورتی که بمب چنگالی توسط یک کاربر محلی فعال شده باشد و تعداد پروسه ها را برای آن کاربر فعال نکرده اید، اما هنوز کمی زمان دارید نباید از فرمان زیر استفاده کنید: 
killall -9 Script_Name$
که به خاطر طبیعت بمب چنگالی کار نمی کند. دلیل این است که killall آن را قفل نمی کند در نتیجه هرکدام از آن ها که از بین می رود یکی جدید جای آن را می گیرد. 
در عوض می توانید از فرمان زیر استفاده کنید: 
$ exec killall -9 ScritName 
$ exec killall STOP ScriptName

نکته: این محدودیت ها تاثیری روی کاربر حرفه ای یا هر پروسه با قابلیت های CAP_SYS_ADMIN یا CAP_SYS_RESOURCE با این نوع محدودیت روی سیستم مبتنی برندارد. 

چگونه در برابر بمب چنگالی امنیت داشته باشیم؟ 
بمب چنگالی سیستم را با ایجاد تعداد بی شماری پروسه از کار می اندازد. بترین قسمت این است که برای ایجاد این بمب نیاز نیست که یک کاربر حرفه ای باشید. برای حفظ امنیت در برابر بمب چنگالی تعداد پروسه هایی که یک کاربر می تواند ایجاد کند را محدود کنید، می توانید برای یک کاربر فقط امکان ایجاد 1000 تا 4000 پروسه را فراهم کنید. معمولا یک کاربر می تواند روی 300-200 پروسه در یک زمان کار کند. با این حال برای کسانی که چندین کار را در یک زمان انجام می دهند 1000 ممکن است کم باشد. 

 

 

 

Understanding /etc/security/limits.conf file 


هر خط محدودیتی را برای کاربر تعریف می کند: 

که: 
o     می تواند موارد زیر باشد: 
•    یک نام کاربری
•    یک نام گروه، با ترکیب @group
•    فرانویسه*، برای وروی پیش فرض
•    فرانویس %، که می توان آن را با ترکیب %group استفاده کرد، برای محدود کردن حداکثر ورودی 

 

o     می تواند دو قدر داشته باشد: 
•    “soft” برای اجرا محدودیت های نرم
•     “hard” برای اجرای محدودیت های سخت 

o     می تواند یکی از این موارد باشد: 
•    core-  اندازه فایل هسته ای را محدود می کند ( KB) 

o     می تواند برای یکی از موارد زیر استفاده شود:
•    core - اندازه فایل هسته ای را محدود می کند ( KB)
•    data - اندازه دیتا را به حداکثر می رساند ( KB)
•    fsize – بیشینه اندازه فایل ( KB)
•    Memlock- فضای آدرس قفل شده در حافظه بیشینه
•    Nofile- تعداد بیشینه فایل های باز 
•    Rss- اندازه مجموعه ساکن ( KB)
•    Stack- اندازه پشته بیشینه (KB)
•    Cpu- زمان سی پی یو بیشینه (MIN)
•    Nproc- تعداد بیشینه پروسه ها 
•    As -محدودیت فضای آدرس
•    Maxlogins- بیشینه ورود برای این کاربر 
•    Maxsyslogins- بیشینه ورود روی سیستم 
•    Priority- اولویت برای اجرای پروسه کاربر 
•    Locks- تعداد فایل های قفل شده که کاربر می تواند داشته باشد 
•    Sigpending- بیشینه تعداد سیگنال های در حال انتظار 
•    Msgqueue- حافظه بیشینه استفاده شده توسط صف های پیام POSIX
•    Nice- بیشینه تعداد اولویت ها 
•    Rtprio- اولویت زمان واقعی 
•    Chroot- روت را به دایرکتوری تغییر می دهد. 
برای محدود کردن تعداد پروسه ها بر اساس کاربران، می توانید  file /etc/security/limits.conf را باز کرده و خط زیر را به آن اضافه کنید: 

 mohammad hard nproc 4000 


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

 

killall -9 Script_Name$


که به خاطر طبیعت بمب چنگالی کار نمی کند. دلیل این است که killall آن را قفل نمی کند در نتیجه هرکدام از آن ها که از بین می رود یکی جدید جای آن را می گیرد. 
در عوض می توانید از فرمان زیر استفاده کنید: 

 

 

$ exec killall -9 ScritName 

 

 

$ exec killall STOP ScriptName 

 

 

نکته: این محدودیت ها تاثیری روی کاربر حرفه ای یا هر پروسه با قابلیت های CAP_SYS_ADMIN یا CAP_SYS_RESOURCE با این نوع محدودیت روی سیستم مبتنی برندارد. 

منبع: unixmen

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

ارسال نظر


شخصی سازی Close
شما در این صفحه قادر به شخصی سازی نمیباشید