بایگانی

بررسی حمله DOS و DDOS

در دنیای دیجیتال امروز، حملات سایبری یکی از مهم‌ترین چالش‌های امنیتی برای وب‌سایت‌ها و سرورها هستند. یکی از شایع‌ترین و مخرب‌ترین این حملات، حملات DOS و  DDOS است. در این مقاله، به زبان تخصصی اما قابل‌فهم، مفهوم، انواع، تفاوت‌ها، نمونه‌های فنی و راهکارهای مقابله با این حملات را بررسی خواهیم کرد.

حمله DOS و DDOS چیست؟

  • DOS مخفف Denial of Service به معنای «محروم‌سازی از سرویس» است.
  • DDOS نیز مخفف Distributed Denial of Service به معنای «محروم‌سازی توزیع‌شده از سرویس» می‌باشد.

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

تفاوت حملات DOS و DDOS

۱- منبع حمله

DOS از یک دستگاه انجام می‌شود، در حالی که DDOS از چندین دستگاه (بات‌نت) به‌صورت هم‌زمان انجام می‌گیرد.

۲- شدت و تأثیر

حمله DOS محدود و قابل کنترل است، اما DDOS بسیار گسترده، قدرتمند و مخرب‌تر است.

۳- شناسایی و مقابله

DOS راحت‌تر شناسایی و دفع می‌شود، در حالی که DDOS به دلیل ترافیک توزیع‌شده، شناسایی و مقابله با آن بسیار دشوارتر است.

۴- هدف‌گیری

DOS معمولاً یک سرویس خاص را هدف می‌گیرد، اما DDOS می‌تواند چندین سرویس یا کل زیرساخت شبکه را از کار بیندازد.

اهداف مهاجمان از انجام این حملات

انگیزه مهاجمان از اجرای حملات DOS و DDOS می‌تواند موارد زیر باشد:

  • مختل کردن رقبا در بازار
  • باج‌گیری دیجیتال از سازمان‌ها
  • تست آسیب‌پذیری شبکه‌ها
  • اعتراض‌های سیاسی یا اجتماعی (Hacktivism)
  • خرابکاری و ایجاد اختلال در زیرساخت‌های حیاتی

پیامدهای حمله DOS/DDOS برای کسب‌وکارها

  • کاهش شدید اعتبار برند
  • از دست رفتن ترافیک و فروش آنلاین
  • هزینه‌های بالای بازیابی و امنیت
  • جریمه‌های قانونی (در صورت نقض داده‌ها)
  • از دست دادن رتبه سئو در موتورهای جستجو

رایج‌ترین انواع حملات DOS و DDOS

۱- SYN Flood Attack

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

۲- UDP Flood Attack

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

۳- ICMP Flood (Ping Flood)

مهاجم بسته‌های ICMP Echo Request زیادی (پینگ) به سیستم قربانی ارسال می‌کند تا پهنای باند آن اشباع شود.

۴- HTTP GET/POST Flood

با ارسال تعداد زیادی درخواست GET یا POST به صفحات وب، وب‌سرور از دسترس خارج می‌شود.

۵- DNS Amplification

در این حمله، مهاجم درخواست‌های DNS را از منابع جعلی به سرور ارسال می‌کند و باعث می‌شود پاسخ‌های حجیم به قربانی ارسال شود.

۶- NTP Reflection

مشابه DNS Amplification، این حمله با بهره‌برداری از پروتکل NTP باعث ارسال ترافیک شدید به سرور قربانی می‌شود.

۷- SSL Exhaustion

با ارسال حجم زیادی درخواست handshake در پروتکل SSL/TLS، مهاجم منابع سرور را مصرف می‌کند.

۸- Application Layer Attacks

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

برخی نمونه‌های معروف حمله

۱- Buffer Overflow Attack

در این حمله، مهاجم با پر کردن حافظه‌ی بافر، اجرای کد مخرب در سیستم را ممکن می‌سازد. این تکنیک می‌تواند به اجرای کامل کد روی سرور منجر شود.

۲- Ping of Death

با ارسال بسته‌هایی بزرگ‌تر از حد مجاز (بیش از ۶۵۵۳۶ بایت)، سیستم هدف دچار crash یا reboot می‌شود. این حمله امروزه در اکثر سیستم‌ها بی‌اثر شده است.

۳- Smurf Attack

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

۴- Tear Drop Attack

در این حمله، بسته‌های داده‌ی معیوب و هم‌پوشان باعث اختلال در فرآیند بازسازی بسته در سیستم‌عامل هدف می‌شوند.

تکنولوژی‌های پشت حملات DDOS: Botnetها

در حملات DDOS، معمولاً از شبکه‌ای از سیستم‌های آلوده به بدافزار استفاده می‌شود که تحت فرمان یک کنترل‌کننده (Command & Control) قرار دارند. این سیستم‌ها ممکن است شامل کامپیوترهای خانگی، سرورهای هک‌شده یا حتی دستگاه‌های IoT مانند دوربین‌های امنیتی باشند. معروف‌ترین نمونه‌ها از Botnet، بات‌نت‌های Mirai و Reaper هستند.

چگونه از حملات DOS و DDOS محافظت کنیم؟

در دنیای امروزی، پیشگیری بسیار مهم‌تر از درمان است. برای مقابله با این حملات، باید مجموعه‌ای از راهکارهای فنی و استراتژیک به‌کار گرفت:

✅ استفاده از CDN و سرویس‌های ابری

شبکه‌های تحویل محتوا مانند Cloudflare یا Akamai می‌توانند ترافیک را توزیع کرده و از سرور اصلی محافظت کنند.

✅ مانیتورینگ ترافیک شبکه

استفاده از ابزارهایی مانند Zabbix، Nagios یا ELK Stack برای تشخیص الگوهای مشکوک و ترافیک غیرعادی.

✅ محدودیت در نرخ درخواست‌ها (Rate Limiting)

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

✅ تنظیمات فایروال پیشرفته (WAF)

فایروال‌های لایه اپلیکیشن مانند ModSecurity یا AWS WAF در فیلتر کردن ترافیک مشکوک مؤثر هستند.

✅ همکاری با شرکت‌های تخصصی امنیت سایبری

در موارد حساس، استفاده از خدمات شرکت‌های امنیتی مانند Arbor Networks یا Radware پیشنهاد می‌شود.

جمع‌بندی

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

احیای رمز ریشه لینوکس (Single-User Mode)

فراموشی رمز عبور کاربر ریشه (root) در لینوکس یکی از چالش‌های مهمی است که می‌تواند دسترسی مدیر سیستم را به سرور کاملاً قطع کند. به ویژه برای مدیران وب‌سایت‌ها، کسب‌وکارهای آنلاین، توسعه‌دهندگان، و شرکت‌هایی که از سرورهای اختصاصی یا مجازی لینوکسی استفاده می‌کنند، از دست دادن رمز ریشه می‌تواند باعث توقف خدمات، از دست رفتن زمان و ایجاد هزینه‌های اضافی شود.

در این مقاله، به صورت کامل و قدم‌به‌قدم به آموزش تغییر پسورد روت در لینوکس از طریق حالت Single-User Mode می‌پردازیم. این روش، یکی از امن‌ترین و سریع‌ترین راهکارها برای بازنشانی رمز root در شرایط اضطراری است و روی توزیع‌هایی مانند CentOS، RHEL و سایر سیستم‌های مبتنی بر Red Hat قابل استفاده است.

حالت Single-User Mode در لینوکس چیست؟

حالت Single User Mode یا «حالت تک‌کاربره» یکی از حالات بوت سیستم‌عامل لینوکس است که به کاربر اجازه می‌دهد بدون نیاز به احراز هویت، به محیط root دسترسی مستقیم پیدا کند. این حالت معمولاً برای انجام عملیات نگهداری، تعمیرات بحرانی یا تغییر رمز عبور root مورد استفاده قرار می‌گیرد.

در این حالت هیچ سرویس شبکه‌ای یا کاربر دیگری در حال اجرا نیست، بنابراین محیطی امن و کنترل‌شده برای انجام تغییرات سیستمی حساس فراهم می‌شود.

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

روش تغییر پسورد روت در حالت single mode linux برای گروه‌های زیر بسیار حیاتی است:

  • مدیران سرور و وب‌سایت‌های لینوکسی

  • توسعه‌دهندگان بک‌اند و DevOps

  • فریلنسرهای IT که پروژه‌های سرور محور دارند.

  • آژانس‌های سئو و دیجیتال مارکتینگ که سرور اختصاصی دارند.

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

  • افرادی که در حوزه ترید، فروشگاه‌های اینترنتی یا خدمات هاستینگ فعالیت می‌کنند.

پیش‌نیازهای احیای رمز روت لینوکس

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

  • دسترسی فیزیکی به سرور یا دسترسی از طریق KVM over IP ضروری است.

  • شما باید امکان ریستارت کردن سرور و دسترسی به محیط بوت (GRUB) را داشته باشید.

  • سیستم عامل مورد استفاده باید از حالت single user پشتیبانی کند (مانند CentOS، RHEL، Fedora و …).

مراحل تغییر پسورد روت در لینوکس (Linux Boot Single User Mode)

در ادامه، مراحل بازنشانی رمز root از طریق single-user mode را به‌صورت کامل توضیح می‌دهیم. در این مثال فرض می‌کنیم سیستم عامل مورد نظر CentOS است.

۱. ریستارت کردن سرور

Before Booting Kernel

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

۲. توقف بارگذاری خودکار GRUB

در حالت عادی، GRUB به‌صورت خودکار و طی چند ثانیه کرنل پیش‌فرض را بارگذاری می‌کند. شما باید با فشار دادن یکی از کلیدهای جهت‌دار (بالا یا پایین) این تایمر را متوقف کنید تا بتوانید وارد منوی تنظیمات کرنل شوید.

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

List of kernels available

۳. انتخاب کرنل و ورود به حالت ویرایش

پس از توقف تایمر GRUB، لیستی از نسخه‌های نصب‌شده کرنل‌ها نمایش داده می‌شود. کرنلی را که معمولاً با آن بوت می‌شوید انتخاب کرده و کلید “e” را فشار دهید تا وارد حالت ویرایش دستور بوت شوید.

Selecting VM Linuz

۴. ویرایش خط دستور بوت کرنل

در صفحه ویرایش، به دنبال خطی بگردید که با linux16 یا linux شروع می‌شود. این خط مشخص‌کننده پارامترهای بوت کرنل است. به انتهای این خط بروید، یک فاصله (space) اضافه کنید و عبارت زیر را بنویسید:

single

در برخی نسخه‌های جدیدتر لینوکس، به‌جای single از عبارت init=/bin/bash نیز استفاده می‌شود که مستقیم به شِل bash منتقل می‌شوید.

Entering Command for Single Mode

۵. بوت کردن سیستم در حالت تک‌کاربره

پس از افزودن عبارت single، کلید Ctrl + X یا F10 را بزنید تا سیستم در حالت Single User Mode بوت شود. در برخی نسخه‌ها با زدن کلید b نیز می‌توان عملیات بوت را انجام داد.

۶. تغییر رمز عبور ریشه (root)

پس از بوت شدن سیستم در حالت Single User Mode، شما به صورت مستقیم وارد محیط root می‌شوید بدون اینکه نیازی به وارد کردن رمز عبور قبلی باشد.

برای تغییر رمز عبور، کافی است دستور زیر را وارد کنید:

nginx
passwd root

سپس سیستم از شما درخواست می‌کند که رمز جدید را وارد و تایید کنید. حتماً رمز قوی و امن انتخاب کنید.

۷. ریبوت سیستم

پس از تغییر موفقیت‌آمیز رمز عبور، باید سیستم را ریستارت کنید تا وارد حالت عادی بوت شود. برای این کار، از دستور زیر استفاده کنید:

reboot

سیستم با رمز جدید بوت می‌شود و شما می‌توانید مجدداً با کاربر root وارد محیط لینوکس شوید.

Single User Mode

نکات امنیتی مهم

  • پس از اتمام کار، حتماً دسترسی به محیط فیزیکی یا KVM را محدود کنید تا افراد غیرمجاز نتوانند از همین روش برای دور زدن احراز هویت استفاده کنند.

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

  • بهتر است از فایل‌های پیکربندی مهم و دیتابیس‌ها قبل از هرگونه ریست یا تغییر رمز بکاپ تهیه کنید.

 

نتیجه‌گیری

در شرایطی که رمز root لینوکس فراموش شده یا دسترسی به آن غیرممکن است، استفاده از Single User Mode یکی از کاربردی‌ترین روش‌ها برای بازنشانی رمز عبور است. این روش ساده، سریع و امن بوده و نیاز به ابزار اضافی ندارد. با یادگیری دقیق مراحل بالا، می‌توانید بدون دردسر و بدون نیاز به نصب مجدد سیستم‌عامل، رمز root را تغییر داده و دسترسی کامل به سرور لینوکس خود را بازیابی کنید.