خانه - سرویس
Kaspersky DDoS Protection عملیات مستمر کسب و کار شما. سرویس جدید: محافظت در برابر حملات DDoS محافظت در برابر حملات DDoS

این برای کاربران سرویس های سرور اختصاصی و سرور میزبان و همچنین برای مشتریانی که رک های سرور را اجاره می کنند در نظر گرفته شده است.
ما در این مقاله به طور مفصل نحوه حفاظت را شرح خواهیم داد.

حملات DDoS: مرجع سریع

مخفف DDoS مخفف Distributed Denial of Service - یک حمله انکار سرویس توزیع شده است. حمله DDoS اختلال در عملکرد ماشین مورد حمله با ارسال درخواست از میزبان های متعدد به آن است.

به طور معمول، حملات DDoS از طریق یک بات نت انجام می شود - شبکه ای از رایانه هایی که بدافزار روی آنها نصب شده است (به این حالت زامبی سازی می گویند).

برخی از انواع حملات را می توان بدون بات نت انجام داد (مثلاً UDP flood).

ما در مورد طبقه بندی حملات DDoS با جزئیات بیشتری صحبت نخواهیم کرد - یک خواننده علاقه مند می تواند به راحتی مطالب متعددی را در مورد این موضوع در اینترنت پیدا کند. تکنیک‌های حفاظتی DDoS موجود برای ما جالب‌تر است. در ادامه به بررسی آنها خواهیم پرداخت.

روش های حفاظت از DDoS

روش های محافظت در برابر حملات DDoS به دو گروه بزرگ تقسیم می شوند: روش های پیشگیری و روش های پاسخ.

برای جلوگیری از حملات DDoS، معمولاً از روش های سخت افزاری برای محافظت از محیط شبکه استفاده می شود - یک فایروال در ترکیب با یک سیستم تشخیص نفوذ (IDS). با این حال، آنها به معنای دقیق کلمه محافظت نمی کنند.

سازماندهی یک حمله DDoS در چارچوب بسته های مجاز توسط فایروال کاملاً ممکن است. وقتی صحبت از IDS می شود، آنها معمولاً در چارچوب امضا و تجزیه و تحلیل آماری کار می کنند و بسته های دریافتی را با الگوهای ترافیک موجود مقایسه می کنند. اگر حمله ای با ارسال بسته های شبکه معمولی که به صورت جداگانه مخرب نیستند انجام شود، همه IDS قادر به شناسایی آن نخواهند بود.

علاوه بر این، هر دو فایروال و IDS اغلب دستگاه های کنترل جلسه هستند، بنابراین خود آنها می توانند هدف حمله قرار گیرند.

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

روش‌های واکنش در شرایطی استفاده می‌شوند که حمله از قبل شروع شده و باید متوقف شود (یا حداقل پیامدهای آن به حداقل برسد).
اگر هدف حمله یک ماشین واحد باشد، می توانید آدرس IP آن را به سادگی تغییر دهید. سپس آدرس جدید را می توان تنها به قابل اعتمادترین کاربران خارجی داد. این راه حل را به سختی می توان ایده آل نامید، اما کاملاً مؤثر است.

در برخی موارد، تکنیک های فیلتر کردن کمک می کند. با تجزیه و تحلیل ترافیک مخرب، می توانید امضای خاصی را در آن شناسایی کنید. بر اساس نتایج تجزیه و تحلیل، می توانید یک روتر ACL یا قوانین فایروال بسازید.
علاوه بر این، بیشتر ترافیک حمله اغلب از یک ISP خاص یا مسیریاب ستون فقرات می آید. در چنین شرایطی، یک راه حل ممکن مسدود کردن مسیری است که ترافیک مشکوک از آن می آید (البته باید در نظر داشت که ترافیک قانونی در این مورد نیز مسدود می شود).

اگر هیچ‌کدام از روش‌های ذکر شده در بالا کمکی نکرد و کار دیگری نمی‌توان انجام داد، به اصطلاح سیاه‌چاله استفاده می‌شود - هدایت ترافیک به یک رابط ناموجود (به یک "سیاه چاله"). به عنوان یک قاعده، این منجر به این واقعیت می شود که سرور مورد حمله برای مدتی از شبکه خارجی غیر قابل دسترسی است. تنها به همین دلیل، سیاه‌هولینگ را به سختی می‌توان یک روش حفاظت کامل نامید: در واقع، این فقط به سازمان‌دهندگان حمله کمک می‌کند تا به سرعت به هدف خود دست یابند - غیرقابل دسترس کردن منبع مورد حمله.

در سال‌های اخیر، نرم‌افزار و راه‌حل‌های سخت‌افزاری یکپارچه برای حفاظت از DDoS گسترده شده‌اند. مزیت آنها این است که می توانند ترافیک مخرب را بدون ایجاد مشکل در دسترسی به سرویس مورد حمله برای کاربران قانونی مسدود کنند. این بازار سیستم‌های سخت‌افزاری و نرم‌افزاری را برای محافظت از DDoS از Cisco، Arbor Networks، F5، Juniper و دیگران ارائه می‌دهد.

خدمات حفاظتی DDoS ما نیز بر اساس یک مجموعه نرم افزاری و سخت افزاری تخصصی پیاده سازی شده است. این به طور مشترک با شرکای ما - شرکت Servicepipe ارائه می شود.

سیستم حفاظتی DDoS

سیستم حفاظتی DDoS مورد استفاده نه یک، بلکه چندین سیستم سخت افزاری و نرم افزاری از جمله Arbor Pravail و F5 را شامل می شود. تمیز کردن و تجزیه و تحلیل ترافیک به طور مستقیم در شبکه با استفاده از ابزارهای نرم افزاری تخصصی انجام می شود.

این سیستم در برابر انواع حملات زیر محافظت می کند:

  • سیل TCP;
  • سیل SYN;
  • ترکیبات نامشروع پرچم های TCP.
  • حملات به جلسات TCP مانند TCP Idle، Slow TCP و موارد دیگر.
  • حملات به جلسات HTTP (Slowloris، Pyloris، و غیره)؛
  • سیل HTTP؛
  • سیل DNS؛
  • مسمومیت کش DNS;
  • سیل UDP؛
  • سیل ICMP;
  • حملات قطعه IP، TCP و UDP.
  • حملات به VoIP و SIP

در صورت شناسایی حملات، می توان از اقدامات متقابل زیر استفاده کرد:

  • لیست بسته نامعتبر - فیلتر کردن بسته هایی که با RFC مطابقت ندارند.
  • ایجاد لیست سیاه و سفید از آدرس های IPv4 و IPv6.
  • لیست های فیلتر GeoIP - فیلتر کردن ترافیک بر اساس کشور (ترافیک از کشورهایی که بیشترین تعداد حملات DDoS از آنجا انجام می شود را مسدود می کند).
    GeoIP Policing - پلیس ترافیک بر اساس کشور (نظارت بر ترافیک ورودی و محدود کردن ترافیک از کشورهایی که بیشترین تعداد حملات DDoS از آنجا می‌آیند).
  • تشخیص زامبی انعطاف پذیر - شناسایی زامبی ها و ایجاد پروفایل های ترافیک قانونی.
  • TCP SYN Authentication - مقابله با سیل TCP از طریق احراز هویت مشتری.
  • DNS Authentication - مقابله با سیل DNS از طریق احراز هویت مشتری.
  • دامنه DNS - اعتبار سنجی پرس و جوهای DNS با استفاده از عبارات منظم.
  • DNS بد شکل - بررسی درخواست های DNS برای انطباق با RFC.
  • محدود کردن نرخ DNS - محدود کردن تعداد درخواست‌های DNS از یک آدرس IP (مناسب فقط برای منابع با ترافیک کم: در کشور ما، ارائه‌دهندگان اغلب از NAT استفاده می‌کنند. یک مورد کاملاً معمولی زمانی است که زیرشبکه خاکستری /16 از طریق اینترنت به اینترنت دسترسی پیدا می‌کند. یک IP و تمام درخواست‌های DNS از یک آدرس می‌آیند).
  • DNS NXDomain Rate Limiting - اعتبارسنجی پاسخ های DNS. این اقدام متقابل برای حملاتی در نظر گرفته شده است که در آن حافظه پنهان سرورهای DNS با ورودی های نامعتبر پر شده است. هدف آن ردیابی درخواست هایی با نام DNS غیر موجود است.
  • DNS Regular Expression - فیلتر کردن پرس و جوهای DNS با استفاده از عبارات منظم.
  • تنظیم مجدد اتصال TCP - از طولانی شدن اتصالات TCP جلوگیری می کند.
  • Payload Regular Expression - فیلتر کردن ترافیک با استفاده از یک عبارت منظم در رابطه با بسته های Payload.
  • HTTP بد شکل - مسدود کردن ترافیک HTTP که با RFC مطابقت ندارد.
  • محدود کردن نرخ HTTP - محدود کردن تعداد درخواست های HTTP از یک آدرس IP.
  • محدوده HTTP - اعتبار سنجی درخواست های HTTP با استفاده از عبارات منظم.
  • مذاکره SSL - مسدود کردن ترافیک SSL که با RFC مطابقت ندارد.
  • بیان منظم AIF و HTTP/URL - استفاده از امضاهای AIF در ترافیک مورد بررسی.
  • SIP بد شکل - مسدود کردن ترافیک SIP که با RFC مطابقت ندارد.
  • محدود کردن درخواست SIP - محدود کردن تعداد درخواست‌های SIP از یک آدرس IP.

چگونه کار می کند

برای مشتریانی که خدمات حفاظت DDoS را سفارش می دهند، آدرس های IP محافظت شده را ارائه می دهیم (یک آدرس در تعرفه اصلی گنجانده شده است، آدرس های اضافی را می توان از طریق کنترل پنل سفارش داد). همچنین یک خط ویژه برای ترافیک حفاظت شده اختصاص می دهیم. ترافیک اینترنت از طریق شبکه‌ای از شرکای ما به آدرس‌های محافظت‌شده می‌رود، جایی که مراحل پاکسازی را طی می‌کند.
تمام ترافیک نامشروع در شبکه شریک حذف می شود. مشتریان فقط ترافیک پاک شده را دریافت می کنند. سپس ترافیک خروجی از طریق زیرساخت Selectel وارد اینترنت می شود.

مسیر تردد پاک شده در نمودار زیر نشان داده شده است:

مزایای

در میان مزایای سیستم حفاظتی DDoS ما ابتدا باید موارد زیر را برجسته کنیم:

  • اتصال سریع: راه اندازی کامل حفاظت DDoS 1 تا 2 روز کاری طول می کشد.
  • قیمت های مقرون به صرفه و طرح تعرفه شفاف: فقط ترافیک پاک شده ورودی مشمول پرداخت است.
  • بدون نیاز به پیکربندی پیچیده در سمت مشتری: فقط یک آدرس IP محافظت شده را با نام مستعار یا در یک رابط حلقه بک ثبت کنید.

این سرویس در حال حاضر برای سفارش در کنترل پنل در دسترس است (بخش "خدمات شبکه").
هنگام سفارش، باید یک پرسشنامه ویژه را پر کنید و موارد زیر را مشخص کنید:

  • هدف اصلی استفاده از سرور؛
  • تعداد آدرس های IP که باید محافظت شوند؛
  • اقدامات حفاظتی مورد نظر DDoS

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

برای محبوب ترین موارد استفاده از سرور (وب سرور، سرور برنامه، سرور DNS)، ما قالب های حفاظتی ویژه ای را برای اکثر مشتریان آماده کرده ایم.

"حفاظت DDoS" یک سرویس جدید است و برای توسعه بیشتر آن دریافت بازخورد از مشتریان برای ما بسیار مهم است. قدردان هر گونه نظر، پیشنهاد و خواسته ای خواهیم بود. ما سعی خواهیم کرد در کارهای بعدی جالب ترین ایده ها را در نظر بگیریم.

DDoS برای کسب و کارها هزینه دارد 40000 دلار در ساعت.

SUCURI

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

محافظت در برابر حملات DDoS در بسته آنتی ویروس و فایروال گنجانده شده است. در صورت نیاز حفاظت جامع از سایت، در این صورت آنتی ویروس وب سایت برای شما مناسب است که در برابر تهدیدات آنلاین از جمله حملات DDoS محافظت می کند و خدمات زیر را نیز شامل می شود:

  • شناسایی و حذف کدهای مخرب؛
  • کنترل امنیتی؛
  • بهینه سازی سرعت؛
  • حفاظت از نیروی بی رحم؛
  • محافظت در برابر آسیب‌پذیری‌های روز صفر؛
  • محافظت در برابر ربات های ناخواسته
SUCURI حملات سطح 3، 4 و 7 را شناسایی و مسدود می کند. هزینه خدمات از 19,88 دلار در ماه

علی بابا

Anti-DDoS Pro از Alibaba به شما کمک می کند در برابر حملات DDoS محافظت کنید. Anti-DDoS Pro حملات قدرتمند را تا 2 ترابیت بر ثانیه دفع می کند و از پروتکل های TCP/UDP/HTTP/HTTPS پشتیبانی می کند.

می توان از Anti-DDoS استفاده کرد نه فقطدر صورت قرار گرفتن در Alibaba، و همچنین برای AWS، Azure، Google Cloud و غیره.

MYRA

حفاظت Myra DDoS یک راه حل کاملاً خودکار برای وب سایت ها، سرورهای DNS، برنامه های کاربردی وب و زیرساخت است. سازگاری کامل با انواع CMS و سیستم های تجارت الکترونیکی دارد.

MYRA در آلمان میزبانی می شود، بنابراین داده ها مطابق با قانون حفاظت از داده های فدرال آلمان پردازش می شوند.

حمله DoS و DDoS یک تأثیر خارجی تهاجمی بر منابع محاسباتی یک سرور یا ایستگاه کاری است که با هدف شکست دومی انجام می شود. منظور ما از شکست، خرابی فیزیکی یک ماشین نیست، بلکه عدم دسترسی به منابع آن برای کاربران با حسن نیت است - امتناع سیستم از سرویس دهی به آنها ( Dلغو o f اس ervice، که مخفف DoS از آن آمده است).

اگر چنین حمله ای از یک رایانه انجام شود، به عنوان DoS (DoS) طبقه بندی می شود، اگر از چندین - DDoS (DiDoS یا DDoS)، که به این معنی است "دیتوزیع می شود Dلغو o f اسسرویس" - انکار خدمات توزیع شده. در مرحله بعد، در مورد اینکه چرا مهاجمان چنین حملاتی را انجام می دهند، چه هستند، چه آسیبی به حمله شده وارد می کنند و چگونه مهاجمان می توانند از منابع خود محافظت کنند، صحبت خواهیم کرد.

چه کسانی ممکن است از حملات DoS و DDoS رنج ببرند؟

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

نموداری که ماهیت یک حمله DDoS را نشان می دهد:

حملات DoS و DDoS اغلب با تحریک رقبای نادرست انجام می شود. بنابراین، با "خراش" وب سایت یک فروشگاه آنلاین که محصول مشابهی را ارائه می دهد، می توانید به طور موقت یک "انحصارگر" شوید و مشتریان آن را برای خود بگیرید. با "کنار گذاشتن" یک سرور شرکتی، می توانید کار یک شرکت رقیب را مختل کنید و در نتیجه موقعیت آن را در بازار کاهش دهید.

حملات در مقیاس بزرگ که می توانند خسارت قابل توجهی ایجاد کنند، معمولاً توسط مجرمان سایبری حرفه ای با هزینه زیادی انجام می شوند. اما نه همیشه. منابع شما می‌توانند توسط هکرهای آماتور خانگی به دلیل علاقه، انتقام‌جویان از میان کارمندان اخراج شده و به سادگی کسانی که دیدگاه‌های شما را در مورد زندگی مشترک ندارند مورد حمله قرار گیرند.

گاهی اوقات ضربه با هدف اخاذی انجام می شود، در حالی که مهاجم آشکارا از صاحب منبع پول می خواهد تا حمله را متوقف کند.

سرورهای شرکت‌های دولتی و سازمان‌های معروف اغلب توسط گروه‌های ناشناس از هکرهای بسیار ماهر مورد حمله قرار می‌گیرند تا بر مقامات تأثیر بگذارند یا اعتراض عمومی را ایجاد کنند.

حملات چگونه انجام می شود

اصل عملیاتی حملات DoS و DDoS ارسال یک جریان بزرگ اطلاعات به سرور است که حداکثر (تا جایی که توانایی هکر اجازه می دهد) منابع محاسباتی پردازنده، RAM را بارگیری می کند، کانال های ارتباطی را مسدود می کند یا فضای دیسک را پر می کند. . ماشین مورد حمله قادر به پردازش داده های دریافتی نیست و پاسخ به درخواست های کاربر را متوقف می کند.

این همان چیزی است که عملکرد معمولی سرور در برنامه Logstalgia به نظر می رسد:

اثربخشی حملات تک DOS خیلی زیاد نیست. علاوه بر این، حمله از رایانه شخصی، مهاجم را در معرض خطر شناسایی و دستگیر شدن قرار می دهد. حملات توزیع شده (DDoS) که از شبکه‌های به اصطلاح زامبی یا بات‌نت‌ها انجام می‌شوند، سود بسیار بیشتری را ارائه می‌کنند.

به این صورت است که وب سایت Norse-corp.com فعالیت بات نت را نشان می دهد:

شبکه زامبی (بات نت) به گروهی از رایانه ها گفته می شود که هیچ ارتباط فیزیکی با یکدیگر ندارند. وجه مشترک آنها این است که همه آنها تحت کنترل یک مهاجم هستند. کنترل از طریق یک برنامه تروجان انجام می شود که در حال حاضر ممکن است به هیچ وجه خود را نشان ندهد. هنگام انجام یک حمله، هکر به رایانه های آلوده دستور می دهد تا درخواست هایی را به وب سایت یا سرور قربانی ارسال کنند. و او که تاب تحمل فشار را ندارد از جواب دادن باز می ماند.

Logstalgia یک حمله DDoS را به این صورت نشان می دهد:

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

روش های حمله و دفاع

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

سیل

سیل به زبان ساده، اطلاعاتی است که معنایی ندارد. در زمینه حملات DoS/DDoS، سیل بهمنی از درخواست‌های خالی و بی‌معنی در یک سطح یا سطح دیگر است که گره دریافت‌کننده مجبور به پردازش آن‌ها می‌شود.

هدف اصلی استفاده از flooding مسدود کردن کامل کانال های ارتباطی و اشباع حداکثری پهنای باند است.

انواع سیل:

  • سیل MAC - تأثیر بر ارتباطات شبکه (مسدود کردن پورت ها با جریان داده).
  • سیل ICMP - غرق شدن قربانی با درخواست های پژواک سرویس با استفاده از یک شبکه زامبی یا ارسال درخواست "از طرف" گره مورد حمله به طوری که همه اعضای بات نت به طور همزمان یک پاسخ اکو برای آن ارسال کنند (حمله Smurf). یک مورد خاص از ICMP flood، ping flood (ارسال درخواست های پینگ به سرور) است.
  • SYN flood - ارسال درخواست های SYN متعدد به قربانی، سرریز شدن صف اتصال TCP با ایجاد تعداد زیادی اتصال نیمه باز (در انتظار تایید مشتری).
  • سیل UDP - طبق طرح حمله Smurf عمل می کند، جایی که دیتاگرام های UDP به جای بسته های ICMP ارسال می شوند.
  • سیل HTTP - پر شدن سرور با پیام های HTTP متعدد. یک گزینه پیچیده تر، سیل HTTPS است، که در آن داده های ارسالی از قبل رمزگذاری شده اند و قبل از اینکه گره مورد حمله آن را پردازش کند، باید آن را رمزگشایی کند.


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

  • سوئیچ های شبکه را برای بررسی اعتبار و فیلتر کردن آدرس های MAC پیکربندی کنید.
  • پردازش درخواست های ICMP echo را محدود یا غیرفعال کنید.
  • مسدود کردن بسته‌هایی که از یک آدرس یا دامنه خاص می‌آیند و دلیلی برای مشکوک بودن به غیرقابل اعتماد بودن آن می‌دهد.
  • محدودیتی برای تعداد اتصالات نیمه باز با یک آدرس تعیین کنید، زمان نگهداری آنها را کاهش دهید و صف اتصالات TCP را طولانی کنید.
  • خدمات UDP را از دریافت ترافیک از خارج غیرفعال کنید یا تعداد اتصالات UDP را محدود کنید.
  • از CAPTCHA، تاخیرها و سایر تکنیک های محافظت از ربات استفاده کنید.
  • حداکثر تعداد اتصالات HTTP را افزایش دهید، کش درخواست را با استفاده از nginx پیکربندی کنید.
  • ظرفیت کانال شبکه را افزایش دهید.
  • در صورت امکان، یک سرور جداگانه برای مدیریت رمزنگاری (در صورت استفاده) اختصاص دهید.
  • ایجاد یک کانال پشتیبان برای دسترسی مدیریت به سرور در شرایط اضطراری.

اضافه بار سخت افزاری

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

  • ایجاد یک اسکریپت که حجم عظیمی از اطلاعات متنی بی معنی را در یک انجمن یا وب سایت ارسال می کند که در آن کاربران این فرصت را دارند که نظرات خود را تا پر شدن کل فضای دیسک ارسال کنند.
  • همین مورد، فقط لاگ های سرور درایو را پر می کند.
  • بارگذاری سایتی که در آن نوعی تغییر شکل داده های وارد شده انجام می شود و به طور مداوم این داده ها را پردازش می کند (ارسال بسته های به اصطلاح "سنگین").
  • بارگیری پردازنده یا حافظه با اجرای کد از طریق رابط CGI (پشتیبانی از CGI به شما امکان می دهد هر برنامه خارجی را روی سرور اجرا کنید).
  • راه اندازی سیستم امنیتی، غیرقابل دسترس کردن سرور از بیرون و غیره.


چگونه از خود در برابر بارگذاری بیش از حد منابع سخت افزاری محافظت کنید

  • عملکرد سخت افزار و فضای دیسک را افزایش دهید. هنگامی که سرور به طور معمول کار می کند، حداقل 25-30٪ از منابع باید رایگان باقی بماند.
  • قبل از ارسال آن به سرور از سیستم های تجزیه و تحلیل ترافیک و فیلترینگ استفاده کنید.
  • محدود کردن استفاده از منابع سخت افزاری توسط اجزای سیستم (تعیین سهمیه).
  • فایل های گزارش سرور را در یک درایو جداگانه ذخیره کنید.
  • منابع را در چندین سرور مستقل از یکدیگر توزیع کنید. به طوری که اگر یک قسمت از کار بیفتد، بقیه فعال می مانند.

آسیب پذیری در سیستم عامل، نرم افزار، سیستم عامل دستگاه

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

هنگامی که یک هکر یک آسیب پذیری را کشف کرد (خطایی در نرم افزاری که می تواند برای اختلال در عملکرد سیستم استفاده شود)، تنها کاری که باید انجام دهد ایجاد و اجرای یک اکسپلویت است - برنامه ای که از این آسیب پذیری سوء استفاده می کند.

سوء استفاده از آسیب‌پذیری‌ها همیشه به‌منظور انکار سرویس نیست. اگر هکر خوش شانس باشد، می تواند کنترل منبع را به دست آورد و از این "هدیه سرنوشت" به صلاحدید خود استفاده کند. به عنوان مثال، از آن برای توزیع بدافزار، سرقت و از بین بردن اطلاعات و غیره استفاده کنید.

روش های مقابله با بهره برداری از آسیب پذیری های نرم افزاری

  • به‌روزرسانی‌هایی را نصب کنید که آسیب‌پذیری‌های سیستم‌عامل و برنامه‌ها را پوشش می‌دهند.
  • تمام سرویس‌های در نظر گرفته شده برای حل وظایف اداری را از دسترسی شخص ثالث جدا کنید.
  • از ابزارهای نظارت مستمر بر عملکرد سیستم عامل سرور و برنامه ها (تحلیل رفتار و غیره) استفاده کنید.
  • از برنامه های بالقوه آسیب پذیر (رایگان، خودنوشته، به ندرت به روز شده) به نفع برنامه های اثبات شده و به خوبی محافظت شده خودداری کنید.
  • از ابزارهای آماده برای محافظت از سیستم ها در برابر حملات DoS و DDoS استفاده کنید که هم در قالب سیستم های سخت افزاری و هم نرم افزاری وجود دارد.

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

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

  • رفتار غیر طبیعی برنامه های کاربردی سرور یا سیستم عامل (تجمیع، خاتمه با خطا و غیره).
  • بار روی پردازنده، رم و فضای ذخیره سازی در مقایسه با سطح اصلی به شدت افزایش می یابد.
  • حجم ترافیک در یک یا چند پورت به میزان قابل توجهی افزایش می یابد.
  • درخواست های متعددی از سوی مشتریان برای منابع یکسان وجود دارد (باز کردن یک صفحه وب سایت، دانلود یک فایل).
  • تجزیه و تحلیل گزارش های سرور، فایروال و دستگاه های شبکه تعداد زیادی درخواست یکنواخت از آدرس های مختلف را نشان می دهد که اغلب به یک پورت یا سرویس خاص هدایت می شوند. به خصوص اگر هدف سایت مخاطبان محدودی باشد (مثلاً روسی زبان)، و درخواست هایی از سراسر جهان ارائه شود. تجزیه و تحلیل کیفی ترافیک نشان می دهد که درخواست ها برای مشتریان معنای عملی ندارند.

تمام موارد فوق نشانه صد در صد حمله نیست، اما همیشه دلیلی برای توجه به مشکل و انجام اقدامات حفاظتی مناسب است.

و امروز می خواهم به شما بگویم که چگونه محافظت در برابر حملات ddos ​​انجام می شود ، زیرا خرابی سرور حتی برای مدت کوتاهی می تواند منجر به مشکلات شود. دوره های طولانی از کار افتادگی می تواند تأثیر منفی بر رتبه بندی موتورهای جستجو بگذارد، این قبلاً یک بار برای من اتفاق افتاده است و من هنوز دارم عواقب آن را درو می کنم ...


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

من حدس می زنم که این افزونه نیز مشکل داشته باشد. پشتیبان گیری وردپرس در Dropbox، که از سایت شما در DropBox نسخه پشتیبان تهیه می کند. این افزونه به طور کلی مفید است، اما من دیگر به آن نیازی ندارم، زیرا دائماً از کل سرور نسخه پشتیبان تهیه می کنم. اگر هاست ساده ای دارید، توصیه می کنم آن را نصب کنید.

بنابراین، این افزونه دقیقاً در شب برای من روشن می شود و شروع به دانلود یک نسخه پشتیبان می کند. و از آنجایی که سرور از قبل مورد حمله قرار گرفته است، بار اضافی روی دیسک منجر به یخ زدن می شود. علاوه بر این، سرور من خیلی قدرتمند نیست، اگر یک سرور ترمینال بخرم، احتمالاً حملات کوچک آنقدر خطرناک نخواهند بود. این یک تئوری در حال حاضر است، بیایید آن را بررسی کنیم. اما به احتمال زیاد من هنوز تحت یک حمله ddos ​​هستم.

حمله DDoS چیست؟

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

به عنوان مثال، یک فروشگاه اینترنتی ساده می تواند بسیار گران باشد، و رقبا سعی می کنند با این روش غیر صادقانه، جایی را در زیر نور خورشید پاک کنند. یا هکرها به سادگی سرور را از این طریق غیرفعال می کنند تا در این لحظه . یا شاید این فقط یک پسر مدرسه ای است که در حال بازی کردن است و برنامه هایی را برای ddos ​​آزمایش می کند:)

در این مقاله می‌خواهم در مورد نحوه محافظت از سرور در برابر حمله DDoS صحبت کنم (البته نه خیلی بزرگ، اما هنوز). چگونه می توان همه اینها را انجام داد؟

چگونه از سرور در برابر حملات DDOS محافظت کنیم؟

همه چیز در سطح وب سرور آپاچی با نصب یک ماژول اضافی انجام می شود. از طریق SSH به سرور متصل شوید و ماژول را نصب کنید:

Sudo apt-get install libapache2-mod-evasive

ماژول نصب شده است، اکنون باید یک فایل ایجاد کنید mod-evasive.confدر پوشه /etc/apache2/mods-available/و کد زیر را در آن وارد کنید:

DOSHashTableSize 4096 DOSPageCount 5 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10

در اینجا شما می توانید پارامترها را به صلاحدید خود تنظیم کنید، و معنی آنها به این صورت است:

DOSHashTableSize: این اندازه جدول هش است که درخواست های سرور WWW را پردازش می کند.

DOSPageCount: تعداد درخواست های یک صفحه از همان IP در بازه زمانی مشخص شده.

DOSSiteCount: تعداد درخواست ها به تمام صفحات دامنه؛ اگر بیش از 50 درخواست از یک IP به صفحات مختلف دامنه دریافت شود، چنین IP مسدود می شود.

DOSPageInterval: فاصله برای دستورالعمل DOSPageCount (در ثانیه)

DOSSiteInterval: فاصله برای دستورالعمل DOSSiteCount (در ثانیه)

دوره مسدود کردن DOS: مدت زمان مسدود کردن IP (در ثانیه)

DOSEmail Notify: می تواند برای اطلاع رسانی استفاده شود، یک پیام ایمیل ارسال می کند که فلان IP مسدود شده است. DOSSystemCommand: این دستورالعمل برای اجرای برخی از دستورات شما در مواقعی که IP مسدود شده است استفاده می شود.

DOSWhiteList: فهرست آدرس‌های IP سفید، همچنین بر اساس ماسک (به عنوان مثال 127.0.0.*)

پس از این، سرور آپاچی را مجددا راه اندازی کنید:

راه اندازی مجدد سرویس Sudo apache2

اکنون می توانید عملکرد ماژول را با تلاش برای سازماندهی یک حمله کوچک DDoS از رایانه خود بررسی کنید. شما لینوکس روی کامپیوتر خود دارید، درست است؟ خوب پس، فقط آن را از یک درایو فلش اجرا کنید :) نحوه نصب لینوکس را بر روی درایو فلش بخوانید.

حمله ساده DIY DDOS

یک نوع فایل ایجاد کنید ddos.plدر پوشه خانه خود و کد زیر را در آنجا وارد کنید:

#!/usr/bin/perl # test.pl: اسکریپت کوچک برای آزمایش اثربخشی mod_dosevasive از IO::Socket; use strict; for(0..100) (my($response); my($SOCKET) = new IO::Socket::INET(Proto => "tcp", PeerAddr=> "saitowed.ru:80")؛ if (! تعریف شده $SOCKET) (die $!; ) $SOCKET "GET /?$_" را چاپ کنید HTTP/1.0nn"؛ $response =<$SOCKET>; چاپ $response; بستن ($SOCKET)؛ )

حالا فایل را قابل اجرا می کنیم:

Chmod 777 ddos.pl

در کد این فایل من یک وبلاگ آشنا - saitowed.ru را قرار دادم تا اسکریپت را روی آن آزمایش کنم. ما آن را با دستور اجرا می کنیم:

./ddos.pl

ما چه می بینیم؟

می بینیم که سرور او به راحتی درخواست های متعدد ما را پاس می کند و این بد است. اکنون وب سایت خود را در کد اسکریپت وارد می کنم.

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

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

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

حقیقت تلخ این است که هر کسی می تواند با استفاده از حمله Slowloris، که به طور کامل آپاچی را می کشد، یا با سازماندهی یک سیل به اصطلاح SYN با استفاده از مزرعه ای از سرورهای مجازی که در یک دقیقه در ابر آمازون EC2 ایجاد شده اند، بسیاری از سایت ها را از بین ببرد. تمام توصیه‌های بیشتر ما در مورد محافظت از DDoS خودتان انجام دهید، بر اساس شرایط مهم زیر است.

1. استفاده از ویندوز سرور را متوقف کنید

تمرین نشان می دهد که سایتی که روی ویندوز اجرا می شود (2003 یا 2008 - مهم نیست) در صورت DDoS محکوم به فنا است. دلیل شکست در پشته شبکه ویندوز نهفته است: هنگامی که اتصالات زیادی وجود دارد، سرور مطمئناً شروع به پاسخ ضعیف می کند. ما نمی دانیم که چرا Windows Server در چنین مواقعی اینقدر منزجر کننده کار می کند، اما بیش از یک یا دو بار با آن مواجه شده ایم. به همین دلیل، این مقاله بر روی ابزارهای محافظت در برابر حملات DDoS در مواردی که سرور بر روی لینوکس در حال اجرا است تمرکز خواهد کرد. اگر صاحب خوش شانس یک هسته نسبتا مدرن هستید (از 2.6 شروع می شود)، ابزار اصلی iptables و ابزارهای ipset (برای افزودن سریع آدرس های IP) خواهند بود که با آن می توانید به سرعت ربات ها را ممنوع کنید. یکی دیگر از کلیدهای موفقیت، پشته شبکه ای است که به درستی آماده شده است، که بعداً در مورد آن نیز صحبت خواهیم کرد.

2. با آپاچی جدا شوید

دومین شرط مهم رها شدن آپاچی است. اگر آپاچی را اجرا می کنید، حداقل یک پروکسی کش در جلوی آن نصب کنید - nginx یا lighttpd. آپاچی برای انتقال فایل ها بسیار دشوار است و بدتر از آن، در سطح اساسی (یعنی غیرقابل جبران) در برابر خطرناک ترین حمله Slowloris آسیب پذیر است که به شما امکان می دهد تقریباً از طریق تلفن همراه سرور را تحت تأثیر قرار دهید. برای مبارزه با انواع مختلف. انواع Slowloris، کاربران آپاچی ابتدا یک پچ Anti-slowloris.diff، سپس mod_noloris، سپس mod_antiloris، mod_limitipconn، mod_reqtimeout... اما اگر می‌خواهید شب‌ها آرام بخوابید، استفاده از سرور HTTP که مصون است، آسان‌تر است. به Slowloris در سطح معماری کد. بنابراین، تمام دستور العمل های بعدی ما بر این فرض استوار است که nginx در قسمت جلویی استفاده می شود.

مبارزه با DDoS

اگر DDoS رسید چه باید کرد؟ یک تکنیک سنتی دفاع شخصی این است که فایل لاگ سرور HTTP را بخوانید، یک الگوی grep بنویسید (گرفتن درخواست‌های ربات) و ممنوع کردن همه افرادی که تحت آن قرار می‌گیرند. اگر خوش شانس باشید این تکنیک جواب می دهد. دو نوع بات نت وجود دارد، هر دو خطرناک، اما به روش های مختلف. یکی به طور کامل بلافاصله به سایت می آید، دیگری به تدریج. اولی همه چیز را به یکباره می کشد، اما همه چیز در لاگ ها ظاهر می شود، و اگر آنها را گرم کنید و همه آدرس های IP را ممنوع کنید، برنده هستید. بات نت دوم به آرامی و با دقت به سایت حمله می کند، اما ممکن است مجبور شوید آن را به مدت 24 ساعت مسدود کنید. برای هر مدیری مهم است که بداند: اگر قصد دارید با grep مبارزه کنید، باید آماده باشید که چند روز را به مبارزه با حمله اختصاص دهید. در زیر نکاتی در مورد محل قرار دادن نی از قبل برای کاهش درد افتادن آورده شده است.

3. از ماژول testcookie استفاده کنید

شاید مهمترین، موثرترین و عملیاتی ترین دستور العمل در این مقاله باشد. اگر DDoS به سایت شما بیاید، موثرترین راه برای مقابله با آن می تواند ماژول testcookie-nginx باشد که توسط habrauser @kyprizel توسعه یافته است. ایده ساده است. اغلب، ربات‌هایی که HTTP flooding را پیاده‌سازی می‌کنند، کاملا احمقانه هستند و مکانیسم‌های کوکی و تغییر مسیر HTTP ندارند. گاهی اوقات با موارد پیشرفته‌تری روبرو می‌شوید - آنها می‌توانند از کوکی‌ها استفاده کنند و تغییر مسیرها را پردازش کنند، اما تقریباً هرگز یک ربات DoS یک موتور جاوا اسکریپت کامل را حمل نمی‌کند (اگرچه این کار روز به روز رایج‌تر می‌شود). Testcookie-nginx به عنوان یک فیلتر سریع بین ربات ها و باطن در طول حمله L7 DDoS عمل می کند و به شما امکان می دهد درخواست های ناخواسته را فیلتر کنید. چه چیزی شامل این چک ها می شود؟ آیا مشتری می داند که چگونه HTTP Redirect را انجام دهد، آیا از جاوا اسکریپت پشتیبانی می کند، آیا مرورگری است که ادعا می کند (از آنجایی که جاوا اسکریپت در همه جا متفاوت است و اگر مشتری بگوید که مثلاً فایرفاکس است، ما می توانیم این را بررسی کنیم). تأیید با استفاده از کوکی ها با روش های مختلف اجرا می شود:

  • "Set-Cookie" + تغییر مسیر با استفاده از مکان HTTP 301.
  • "Set-Cookie" + تغییر مسیر با استفاده از تازه سازی متا HTML.
  • هر قالب، و شما می توانید از جاوا اسکریپت استفاده کنید.

برای جلوگیری از تجزیه خودکار، کوکی اعتبارسنجی را می توان با AES-128 رمزگذاری کرد و بعداً در سمت کلاینت جاوا اسکریپت رمزگشایی کرد. نسخه جدید ماژول دارای قابلیت تنظیم کوکی ها از طریق Flash است که به شما امکان می دهد به طور موثر ربات ها را فیلتر کنید (که معمولاً فلش از آنها پشتیبانی نمی کند) اما با این حال دسترسی بسیاری از کاربران قانونی را نیز مسدود می کند. در واقع، همه دستگاه های تلفن همراه). قابل توجه است که شروع استفاده از testcookie-nginx بسیار آسان است. توسعه دهنده، به ویژه، چندین مثال واضح از استفاده (برای موارد حمله مختلف) با نمونه هایی از تنظیمات برای nginx ارائه می دهد.

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

  • همه ربات ها از جمله Googlebot را برش می دهد. اگر قصد دارید تست کوکی را به صورت دائمی نگه دارید، مطمئن شوید که از نتایج جستجو محو نخواهید شد.
  • مشکلاتی را برای کاربران با لینک ها، w3m و مرورگرهای مشابه ایجاد می کند.
  • در برابر ربات های مجهز به موتور مرورگر کامل با جاوا اسکریپت محافظت نمی کند.

به طور خلاصه، testcookie_module جهانی نیست. اما در مواردی مانند ابزارهای اولیه در جاوا و سی شارپ کمک می کند. به این ترتیب بخشی از تهدید را قطع می کنید.

4. کد 444

هدف DDoSers اغلب منابع فشرده ترین بخش سایت است. یک مثال معمولی جستجو است که پرس و جوهای پیچیده پایگاه داده را انجام می دهد. به طور طبیعی، مهاجمان می توانند با بارگذاری چند ده هزار درخواست به طور همزمان در موتور جستجو از این مزیت استفاده کنند. چه می توانیم انجام دهیم؟ جستجو را به طور موقت غیرفعال کنید. اگرچه ممکن است مشتریان نتوانند با استفاده از ابزارهای داخلی اطلاعات مورد نیاز خود را جستجو کنند، اما تا زمانی که ریشه همه مشکلات را پیدا نکنید، کل سایت اصلی فعال خواهد بود. Nginx از کد 444 غیر استاندارد پشتیبانی می کند که به شما امکان می دهد به سادگی اتصال را ببندید و در پاسخ چیزی را برنگردانید:

مکان /جستجو (بازگشت 444؛ )

به این ترتیب، به عنوان مثال، می توانید به سرعت فیلترینگ توسط URL را پیاده سازی کنید. اگر مطمئن هستید که درخواست‌های مربوط به مکان /جستجو فقط از ربات‌ها می‌آیند (مثلاً اطمینان شما بر این اساس است که سایت شما اصلاً بخش جستجو ندارد)، می‌توانید بسته ipset را روی سرور نصب کرده و بن کنید. ربات ها با یک اسکریپت ساده پوسته:

Ipset -N ban iphash tail -f access.log | هنگام خواندن LINE; تکرار "$LINE" | \ cut -d""" -f3 | cut -d" " -f2 | grep -q 444 && ipset -A ban "$(L%% *)"؛ انجام شد

اگر فرمت فایل لاگ غیر استاندارد است (ترکیب نشده) یا باید بر اساس معیارهایی غیر از وضعیت پاسخ آن را ممنوع کنید، ممکن است لازم باشد cut را با یک عبارت معمولی جایگزین کنید.

5. ما با موقعیت جغرافیایی ممنوع می کنیم

کد پاسخ غیر استاندارد 444 همچنین می تواند برای ممنوع کردن سریع مشتریان بر اساس ویژگی های جغرافیایی مفید باشد. شما می توانید به شدت کشورهای خاصی را که باعث ناراحتی شما می شوند محدود کنید. به عنوان مثال، بعید است که یک فروشگاه آنلاین دوربین از روستوف-آن-دون کاربران زیادی در مصر داشته باشد. این روش خیلی خوبی نیست (به بیان صریح، منزجر کننده)، زیرا داده های GeoIP نادرست است و روستوفی ها گاهی اوقات برای تعطیلات به مصر پرواز می کنند. اما اگر چیزی برای از دست دادن ندارید، دستورالعمل ها را دنبال کنید:

  1. ماژول GeoIP را به nginx (wiki.nginx.org/HttpGeoipModule) وصل کنید.
  2. نمایش اطلاعات ارجاع جغرافیایی در گزارش دسترسی.
  3. در مرحله بعد، با تغییر اسکریپت پوسته بالا، Accesslog nginx را اجرا کنید و کلاینت هایی که از نظر جغرافیایی حذف شده اند را به ممنوعیت اضافه کنید.

برای مثال، اگر ربات‌ها بیشتر از چین بودند، این ممکن است کمک کند.

6. شبکه عصبی (PoC)

در نهایت، می‌توانید تجربه کاربر habra @SaveTheRbtz را تکرار کنید که شبکه عصبی PyBrain را گرفته، لاگ را در آن قرار داده و درخواست‌ها را تجزیه و تحلیل کرده است (habrahabr.ru/post/136237). روش کار می کند، اگرچه جهانی نیست :). اما اگر واقعاً درون سایت خود را می دانید - و شما به عنوان یک مدیر سیستم باید - پس این شانس را دارید که در غم انگیزترین موقعیت ها چنین جعبه ابزاری مبتنی بر شبکه های عصبی، آموزش و اطلاعات جمع آوری شده از قبل به شما کمک کند. در این مورد، داشتن access.log قبل از شروع DDoS بسیار مفید است، زیرا تقریباً 100٪ از مشتریان قانونی را توصیف می کند و بنابراین یک مجموعه داده عالی برای آموزش یک شبکه عصبی است. علاوه بر این، ربات ها همیشه در گزارش قابل مشاهده نیستند. .

تشخیص مشکل

سایت کار نمی کند - چرا؟ آیا DDoSed است یا این یک باگ موتور است که برنامه نویس متوجه آن نشده است؟ مهم نیست به دنبال پاسخ برای این سوال نباشید. اگر فکر می‌کنید که سایت شما ممکن است مورد حمله قرار گرفته باشد، با شرکت‌هایی تماس بگیرید که در برابر حملات محافظت می‌کنند - تعدادی از خدمات ضد DDoS روزهای اول پس از اتصال رایگان ارائه می‌دهند - و دیگر وقت خود را برای یافتن علائم تلف نکنید. روی مشکل تمرکز کنید. اگر سایتی کند است یا اصلاً باز نمی شود، مشکلی در عملکرد آن وجود دارد، و - چه حمله DDoS وجود داشته باشد یا نه - این مسئولیت شما به عنوان یک متخصص است که بفهمید چه چیزی باعث آن شده است. بارها شاهد بوده ایم که چگونه یک شرکت که به دلیل حمله DDoS در عملکرد وب سایت خود با مشکل مواجه شده است، به جای جستجوی نقاط ضعف در موتور وب سایت، اقدام به ارسال بیانیه هایی به وزارت کشور برای یافتن و مجازات مهاجمان می کند. این اشتباهات را نکنید یافتن مجرمان سایبری فرآیندی دشوار و طولانی است که به دلیل ساختار و اصول عملیاتی اینترنت پیچیده است و مشکل عملکرد سایت باید به سرعت حل شود. از متخصصان فنی برای یافتن دلیل کاهش عملکرد سایت استفاده کنید و وکلا می توانند بیانیه ای بنویسند.

7. از پروفایلر و دیباگر استفاده کنید

برای رایج ترین پلت فرم ایجاد وب سایت - PHP + MySQL - می توان با استفاده از ابزارهای زیر گلوگاه را پیدا کرد:

  • نمایه ساز Xdebug نشان می دهد که برنامه بیشترین زمان را برای کدام تماس ها صرف می کند.
  • اشکال‌زدای داخلی APD و خروجی اشکال‌زدایی در گزارش خطا به شما کمک می‌کند تا بدانید دقیقاً چه کدی این تماس‌ها را انجام می‌دهد.
  • در بیشتر موارد، سگ در پیچیدگی و سنگینی پرس و جوهای پایگاه داده مدفون می شود. دستورالعمل توضیح SQL تعبیه شده در موتور پایگاه داده در اینجا کمک خواهد کرد.

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

مثال برای PHP است، اما این ایده برای هر پلتفرمی معتبر است. توسعه‌دهنده‌ای که محصولات نرم‌افزاری را به هر زبان برنامه‌نویسی می‌نویسد باید بتواند به سرعت هم از اشکال‌زدا و هم از نمایه‌گر استفاده کند. از قبل تمرین کنید!

8. خطاها را تجزیه و تحلیل کنید

حجم ترافیک، زمان پاسخگویی سرور و تعداد خطاها را تجزیه و تحلیل کنید. برای انجام این کار، به گزارش ها نگاه کنید. در nginx زمان پاسخ سرور توسط دو متغیر request_time و upstream_response_time در لاگ ثبت می شود. اولین مورد کل زمان اجرای درخواست، از جمله تاخیرهای شبکه بین کاربر و سرور است. دومی نشان می دهد که باطن (Apache, php_fpm, uwsgi...) چه مدت درخواست را اجرا کرده است. مقدار upstream_response_time برای سایت هایی با محتوای پویا زیاد و ارتباط فعال بین frontend و پایگاه داده بسیار مهم است؛ نباید از آن غافل شد. می توانید از پیکربندی زیر به عنوان فرمت گزارش استفاده کنید:

Log_format xakep_log "$remote_addr - $remote_user [$time_local] " ""$request" $status $body_bytes_sent """$http_referer" "$http_user_agent" $request_time \ $upstream_response_time";

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

9. درخواست ها را در هر ثانیه پیگیری کنید

همچنین به تعداد درخواست ها در ثانیه نگاه کنید. در مورد nginx، می توانید تقریباً این مقدار را با دستور پوسته زیر تخمین بزنید (متغیر ACCESS_LOG شامل مسیر ورود به سیستم درخواست nginx در قالب ترکیبی است):

پژواک $(($(fgrep -c "$(env LC_ALL=C تاریخ --date=@$(($(تاریخ \ +%s)-60)) +%d/%b/%Y:%H: %M)" "$ACCESS_LOG")/60))

در مقایسه با سطح عادی برای این زمان از روز، تعداد درخواست‌ها در ثانیه می‌تواند کاهش یا افزایش یابد. اگر یک بات نت بزرگ وارد شده باشد، رشد می کنند و اگر بات نت ورودی سایت را خراب کرده باشد، سقوط می کنند و برای کاربران قانونی کاملاً غیرقابل دسترسی است و در عین حال بات نت درخواست ایستا نمی کند، اما کاربران قانونی درخواست می کنند. افت تعداد درخواست ها دقیقاً به دلیل استاتیک مشاهده می شود. اما، به هر حال، ما در مورد تغییرات جدی در شاخص ها صحبت می کنیم. هنگامی که این اتفاق به طور ناگهانی رخ می دهد - در حالی که سعی می کنید مشکل را به تنهایی حل کنید و اگر بلافاصله آن را در گزارش مشاهده نکردید، بهتر است به سرعت موتور را بررسی کنید و در همان زمان با متخصصان تماس بگیرید.

10. tcpdump را فراموش نکنید

بسیاری از مردم فراموش می کنند که tcpdump یک ابزار تشخیصی عالی است. من برای شما چند مثال می زنم. در دسامبر 2011، یک باگ در هسته لینوکس هنگامی که یک اتصال TCP را باز کرد، زمانی که پرچم های بخش TCP SYN و RST تنظیم شدند، کشف شد. اولین گزارش اشکال توسط مدیر سیستم از روسیه ارسال شد که منبع آن با این روش مورد حمله قرار گرفت - مهاجمان قبل از کل جهان از آسیب پذیری مطلع شدند. بدیهی است که این تشخیص به او کمک کرد. مثال دیگر: nginx یک ویژگی نه چندان خوشایند دارد - فقط پس از پردازش کامل درخواست در گزارش می نویسد. شرایطی وجود دارد که سایت از کار افتاده است، هیچ چیز کار نمی کند و چیزی در گزارش ها وجود ندارد. این به این دلیل است که تمام درخواست هایی که در حال حاضر در حال بارگیری سرور هستند هنوز تکمیل نشده اند. Tcpdump در اینجا نیز کمک خواهد کرد.

آنقدر خوب است که به مردم توصیه کردم تا زمانی که مطمئن نشده اند همه چیز درست است از پروتکل های باینری استفاده نکنند - بالاخره پروتکل های متنی با tcpdump به راحتی اشکال زدایی می کنند، اما پروتکل های باینری اینطور نیستند. ابزار - به عنوان وسیله ای برای حفظ تولید» و او ترسناک است. به راحتی می تواند چندین بسته را به طور همزمان از دست بدهد و تاریخچه کاربری شما را خراب کند. نگاه کردن به خروجی آن راحت است و برای تشخیص دستی و ممنوعیت مفید است، اما سعی کنید چیز مهمی را بر اساس آن قرار ندهید. یکی دیگر از ابزارهای مورد علاقه برای "دفن کردن درخواست ها" - ngrep - معمولاً به طور پیش فرض سعی می کند حدود دو گیگابایت حافظه غیرقابل تعویض درخواست کند و تنها پس از آن شروع به کاهش نیازهای آن می کند.

11. حمله کنم یا نه؟

چگونه یک حمله DDoS را از تأثیر یک کمپین تبلیغاتی تشخیص دهیم؟ این سوال ممکن است خنده دار به نظر برسد، اما موضوع از پیچیدگی کمتری برخوردار نیست. موارد کاملا خنده دار وجود دارد. بعضی از بچه های خوب، وقتی به خودشان فشار آوردند و کش را کاملاً خراب کردند، سایت برای چند روز از کار افتاد. معلوم شد که چندین ماه است که این سایت بی سر و صدا توسط برخی آلمانی ها دیتامین شده است و قبل از بهینه سازی کش، صفحات سایت این آلمانی ها با تمام عکس ها زمان زیادی برای بارگذاری طول می کشد. هنگامی که صفحه شروع به ارائه فوری از حافظه پنهان کرد، ربات که هیچ مهلت زمانی نداشت، بلافاصله شروع به جمع آوری آنها کرد. سخت بود. این مورد مخصوصاً به این دلیل دشوار است که اگر خودتان تنظیمات را تغییر دادید (کش کردن را روشن کردید) و پس از آن سایت از کار افتاد، پس از نظر شما و رئیستان چه کسی مقصر است؟ دقیقا. اگر افزایش شدیدی در تعداد درخواست‌ها مشاهده کردید، به عنوان مثال به گوگل آنالیتیکس نگاه کنید که چه کسی از چه صفحاتی بازدید کرده است.

تنظیم وب سرور

چه نکات کلیدی دیگری وجود دارد؟ البته می توانید nginx پیش فرض را نصب کنید و امیدوار باشید که همه چیز درست شود. با این حال، همه چیز همیشه خوب پیش نمی رود. بنابراین، مدیر هر سروری باید زمان زیادی را به تنظیم دقیق و تنظیم nginx اختصاص دهد.

12. محدود کردن منابع (اندازه های بافر) در nginx

اول چه چیزی را باید به خاطر بسپارید؟ هر منبع محدودیتی دارد. اول از همه، این مربوط به RAM است. بنابراین، اندازه هدرها و تمام بافرهای استفاده شده باید به مقادیر کافی برای مشتری و کل سرور محدود شود. آنها باید در پیکربندی nginx ثبت شوند.

  • client_header_buffer_size_ _ اندازه بافر را برای خواندن هدر درخواست مشتری تنظیم می کند. اگر خط درخواست یا فیلد هدر درخواست به طور کامل در این بافر قرار نگیرد، بافرهای بزرگ‌تری تخصیص داده می‌شوند که توسط دستورالعمل large_client_header_buffers مشخص شده‌اند.
  • large_client_header_buffersحداکثر تعداد و اندازه بافرها را برای خواندن هدر درخواست مشتری بزرگ تنظیم می کند.
  • client_body_buffer_sizeاندازه بافر را برای خواندن بدنه درخواست مشتری تنظیم می کند. اگر بدنه درخواست بزرگتر از بافر مشخص شده باشد، کل بدنه درخواست یا تنها بخشی از آن در یک فایل موقت نوشته می شود.
  • client_max_body_sizeحداکثر اندازه مجاز درخواست مشتری را که در قسمت "طول محتوا" سرصفحه درخواست مشخص شده است، تنظیم می کند. اگر اندازه بزرگتر از اندازه مشخص شده باشد، خطای 413 (Request Entity Too Large) به مشتری بازگردانده می شود.

13. تنظیم تایم اوت در nginx

زمان نیز یک منبع است. بنابراین، مرحله مهم بعدی باید تنظیم تمام زمان‌ها باشد، که باز هم مشخص کردن دقیق آن در تنظیمات nginx بسیار مهم است.

  • reset_timedout_connection روشن است.به برخورد با سوکت های گیر کرده در فاز FIN-WAIT کمک می کند.
  • client_header_timeoutمهلت زمانی را هنگام خواندن سرصفحه درخواست مشتری تنظیم می کند.
  • client_body_timeoutمهلت زمانی را هنگام خواندن متن درخواست مشتری تنظیم می کند.
  • keepalive_timeoutبازه زمانی را تنظیم می کند که در طی آن اتصال keep-alive به مشتری از سمت سرور بسته نشود. بسیاری از مردم از تعیین ارزش های بزرگ در اینجا می ترسند، اما ما مطمئن نیستیم که این ترس موجه باشد. به صورت اختیاری، می‌توانید مقدار زمان‌بندی را در هدر Keep-Alive HTTP تنظیم کنید، اما اینترنت اکسپلورر به دلیل نادیده گرفتن این مقدار مشهور است.
  • send_timeoutزمان ارسال پاسخ به مشتری را تعیین می کند. اگر پس از این مدت مشتری چیزی را قبول نکرد، اتصال بسته خواهد شد.

بلافاصله این سوال مطرح می شود: چه پارامترهایی از بافرها و بازه های زمانی صحیح هستند؟ هیچ دستور العمل جهانی در اینجا وجود ندارد؛ هر موقعیتی خاص خود را دارد. اما یک رویکرد اثبات شده وجود دارد. لازم است حداقل مقادیری را تنظیم کنید که در آن سایت عملیاتی می شود (در زمان صلح)، یعنی صفحات ارائه می شوند و درخواست ها پردازش می شوند. این فقط با آزمایش مشخص می شود - هم از رایانه های رومیزی و هم از دستگاه های تلفن همراه. الگوریتم برای یافتن مقادیر هر پارامتر (اندازه بافر یا تایم اوت):

  1. ما از نظر ریاضی حداقل مقدار پارامتر را تنظیم می کنیم.
  2. ما شروع به اجرای تست های سایت می کنیم.
  3. اگر تمام عملکرد سایت بدون مشکل کار کند، پارامتر تعریف می شود. اگر نه، مقدار پارامتر را افزایش دهید و به مرحله 2 بروید.
  4. اگر مقدار پارامتر حتی از مقدار پیش فرض هم بیشتر شود، این دلیلی برای بحث در تیم توسعه است.

در برخی موارد، تجدید نظر در این پارامترها باید به بازسازی/طراحی مجدد سایت منجر شود. به عنوان مثال، اگر سایتی بدون درخواست‌های نظرسنجی طولانی مدت سه دقیقه‌ای AJAX کار نمی‌کند، نیازی به افزایش تایم اوت نیست، بلکه نظرسنجی طولانی را با چیز دیگری جایگزین کنید - یک بات نت از 20 هزار دستگاه، که به مدت سه دقیقه روی درخواست‌ها معلق است. سرور ارزان متوسط ​​را به راحتی از بین می برد.

14. محدود کردن اتصالات در nginx (limit_conn و limit_req)

Nginx همچنین توانایی محدود کردن اتصالات، درخواست ها و غیره را دارد. اگر مطمئن نیستید که بخش خاصی از سایت شما چگونه رفتار می کند، در حالت ایده آل باید آن را آزمایش کنید، بفهمید که چه تعداد از درخواست ها را مدیریت می کند و این را در پیکربندی nginx بنویسید. وقتی سایت خراب است و شما می توانید بیایید و آن را بردارید یک چیز است. و وقتی آنقدر پایین می‌آید که سرور به سوآپ می‌رود، موضوع کاملاً متفاوت است. در این مورد، راه‌اندازی مجدد آسان‌تر از منتظر ماندن برای بازگشت پیروزمندانه اوست.

بیایید فرض کنیم که سایت دارای بخش هایی با نام های توصیفی /download و /search است. در عین حال ما:

  • ما نمی‌خواهیم ربات‌ها (یا افرادی با مدیران دانلود بازگشتی بیش از حد متعصب) جدول اتصال TCP ما را با دانلودهای خود پر کنند.
  • ما نمی‌خواهیم ربات‌ها (یا خزنده‌های موتور جستجو تصادفی) منابع محاسباتی DBMS را با انبوهی از جست‌وجوها خسته کنند.

برای این اهداف، پیکربندی زیر کار خواهد کرد:

Http ( limit_conn_zone $binary_remote_addr zone=download_c:10m; limit_req_zone $binary_remote_addr zone=search_r:10m \ rate=1r/s؛ سرور ( location /download/ ( limit_conn download_c 1; # other configuration zone ( limit_ location / search_r burst=5؛ # مکان پیکربندی دیگر ) ))

معمولاً تعیین محدودیت‌های limit_conn و limit_req برای مکان‌هایی که اسکریپت‌هایی که اجرای آنها پرهزینه است، مستقیماً منطقی است (مثال یک جستجو را نشان می‌دهد، و این دلیل خوبی دارد). محدودیت ها باید بر اساس نتایج تست بار و رگرسیون و همچنین عقل سلیم انتخاب شوند.

به پارامتر 10m در مثال توجه کنید. یعنی یک دیکشنری با بافر 10 مگابایت و نه یک مگابایت بیشتر برای محاسبه این حد اختصاص داده می شود. در این پیکربندی، این امکان نظارت بر 320000 جلسه TCP را فراهم می کند. برای بهینه سازی ردپای حافظه، از متغیر $binary_remote_addr به عنوان کلید در فرهنگ لغت استفاده می شود که حاوی آدرس IP کاربر به صورت باینری است و حافظه کمتری نسبت به متغیر رشته معمولی $remote_addr اشغال می کند. لازم به ذکر است که پارامتر دوم برای دستورالعمل limit_req_zone می تواند نه تنها IP، بلکه هر متغیر nginx دیگری در این زمینه موجود باشد - به عنوان مثال، در مواردی که نمی خواهید حالت ملایم تری برای پروکسی ارائه دهید، شما می توانید از $binary_remote_addr$http_user_agent یا $binary_remote_addr$http_cookie_myc00kiez استفاده کنید - اما باید از چنین ساختارهایی با احتیاط استفاده کنید، زیرا برخلاف $binary_remote_addr 32 بیتی، این متغیرها می توانند به میزان قابل توجهی طولانی تر شوند و "10m" به طور ناگهانی به شما پایان می دهد.

روندهای DDoS

  1. قدرت حملات شبکه و لایه انتقال به طور مداوم در حال افزایش است. پتانسیل یک حمله سیل متوسط ​​SYN در حال حاضر به 10 میلیون بسته در ثانیه رسیده است.
  2. حملات به DNS اخیراً مورد تقاضا بوده است. سیل UDP با پرس و جوهای DNS معتبر با آدرس های IP منبع جعلی یکی از ساده ترین حملات برای پیاده سازی و مقابله با آن دشوار است. بسیاری از شرکت های بزرگ روسی (از جمله شرکت های میزبان) اخیراً در نتیجه حملات به سرورهای DNS خود با مشکلاتی روبرو شده اند. هرچه جلوتر بروید، چنین حملاتی بیشتر می شود و قدرت آنها افزایش می یابد.
  3. با قضاوت بر اساس علائم خارجی، اکثر بات نت ها به صورت مرکزی کنترل نمی شوند، بلکه از طریق یک شبکه همتا به همتا کنترل می شوند. این به مهاجمان این فرصت را می‌دهد تا اقدامات بات‌نت را در طول زمان همگام‌سازی کنند - اگر قبلاً دستورات کنترلی در بات‌نت 5 هزار ماشینی در ده‌ها دقیقه توزیع می‌شدند، اکنون ثانیه‌ها به حساب می‌آیند و سایت شما ممکن است به طور غیرمنتظره‌ای صد برابر افزایش فوری تعداد درخواست‌ها را تجربه کند. .
  4. سهم ربات های مجهز به موتور مرورگر کامل با جاوا اسکریپت هنوز کم است، اما دائما در حال افزایش است. دفع چنین حمله ای با وسایل بداهه داخلی دشوارتر است، بنابراین افرادی که انجام می دهند باید این روند را با احتیاط تماشا کنند.

آماده سازی سیستم عامل

علاوه بر تنظیم دقیق nginx، باید از تنظیمات پشته شبکه سیستم نیز مراقبت کنید. حداقل، فوراً net.ipv4.tcp_syncookies را در sysctl فعال کنید تا فوراً از خود در برابر یک حمله SYN-flood کوچک محافظت کنید.

15. هسته را تنظیم کنید

به تنظیمات پیشرفته تر قسمت شبکه (کرنل) باز هم در مورد تایم اوت ها و حافظه توجه کنید. مهمتر و کم اهمیت تر هستند. اول از همه، باید به این موارد توجه کنید:

  • net.ipv4.tcp_fin_timeoutزمانی که سوکت در فاز TCP FIN-WAIT-2 (در انتظار بخش FIN/ACK) صرف می کند.
  • net.ipv4.tcp_(,r,w)memسوکت TCP اندازه بافر را دریافت می کند. سه مقدار: حداقل، پیش فرض و حداکثر.
  • net.core.(r,w)mem_maxهمین امر در مورد بافرهای غیر TCP نیز صدق می کند.

با کانال 100 مگابیت بر ثانیه، مقادیر پیش فرض هنوز هم به نوعی مناسب هستند. اما اگر حداقل یک گیگابیت در ثانیه در دسترس دارید، بهتر است از چیزی مانند:

Sysctl -w net.core.rmem_max=8388608 sysctl -w net.core.wmem_max=8388608 sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608" sysctl_core.wmem_max = 8388608 886 "08" sysctl - w net.ipv4.tcp_fin_timeout=10

16. ویرایش /proc/sys/net/**

کاوش تمام پارامترها در /proc/sys/net/** ایده آل است. ما باید ببینیم که آنها چقدر با موارد پیش فرض متفاوت هستند و درک کنیم که چقدر به اندازه کافی تنظیم شده اند. یک توسعه‌دهنده لینوکس (یا مدیر سیستم) که عملکرد سرویس اینترنت تحت کنترل خود را درک می‌کند و می‌خواهد آن را بهینه کند، باید مستندات تمام پارامترهای پشته شبکه هسته را با علاقه بخواند. شاید او متغیرهای خاص سایت را در آنجا پیدا کند که نه تنها به محافظت از سایت در برابر نفوذگران کمک می کند، بلکه عملکرد آن را نیز سرعت می بخشد.

نترس!

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



 


خواندن:



چرا یک لپ تاپ به یک SSD کوچک نیاز دارد و آیا ارزش نصب ویندوز روی آن را دارد؟

چرا یک لپ تاپ به یک SSD کوچک نیاز دارد و آیا ارزش نصب ویندوز روی آن را دارد؟

درایو SSD چقدر برای بازی ها مهم است ، چه تأثیری دارد و چه فایده ای از این فناوری دارد - این همان چیزی است که در مقاله ما مورد بحث قرار خواهد گرفت. حالت جامد...

تعمیر فلش مموری با استفاده از برنامه ها نحوه تعمیر پورت USB در لپ تاپ

تعمیر فلش مموری با استفاده از برنامه ها نحوه تعمیر پورت USB در لپ تاپ

چگونه پورت USB را تعمیر کنیم؟ پاسخ تکنسین: هنگام استفاده از رایانه، درگاه‌های USB اغلب خراب می‌شوند. اول از همه شکست می خورند...

ساختار دیسک آسیب دیده است، خواندن غیرممکن است، چه باید بکنم؟

ساختار دیسک آسیب دیده است، خواندن غیرممکن است، چه باید بکنم؟

رایانه های شخصی کاربران اغلب اطلاعات مهم را ذخیره می کنند - اسناد، عکس ها، فیلم ها، اما پشتیبان گیری از داده ها معمولاً ...

کامپیوتر از چه چیزی تشکیل شده است؟

کامپیوتر از چه چیزی تشکیل شده است؟

تاریخ انتشار: 1396/01/14 با سلام خدمت دوستان امروز به طور مفصل به طراحی واحد سیستم کامپیوتر می پردازیم. بیایید بفهمیم چه ...

فید-تصویر RSS