قابلیت Rate Limiting، یعنی شبکه یا سرور برای تعداد درخواستهایی که از سمت یه کاربر، IP یا کلاینت دریافت میکنه یه سقف میزاره؛ چون اگه این محدودیت وجود نداشته باشه، مهاجم میتونه در مدت خیلی کوتاه حجم زیادی Packet یا Request سمت سرویس بفرسته و منابع سرور، فایروال یا حتی تجهیزات شبکه رو درگیر کنه.
مثلاً فرض کن یه سرویس SSH روی پورت 22 داری، مهاجم شروع میکنه پشت سر هم Connection میزنه و رمزهای مختلف رو امتحان میکنه؛ اگر Rate Limiting داشته باشیم میتونیم بگیم هر IP مثلاً فقط چند Connection در دقیقه اجازه داشته باشه و بعد از اون درخواستهای اضافی Drop یا Reject بشن.
همین داستان برای HTTP و API هم هست؛ مثلاً روی پورت 443 یه وبسرور داریم و یه IP در چند ثانیه هزاران Request میفرسته، سیستم میتونه بعد از رسیدن به حد مشخص، درخواستهای بعدی رو محدود کنه و حتی پاسخ
429 Too Many Requests بده.نکته جالب اینه که Rate Limiting فقط برای Login نیست؛ توی شبکه میتونه برای Connectionهای TCP، درخواستهای DNS، API Callها، دسترسی به سرویسهای خاص و حتی بعضی Traffic Patternها استفاده بشه. مثلاً اگر یه کلاینت شروع کنه تعداد غیرعادی زیادی درخواست DNS بفرسته، میشه تعداد Queryها رو محدود کرد تا هم جلوی Abuse گرفته بشه و هم DNS Server زیر فشار نره. یا روی فایروال میتونیم تعداد Connectionهای جدید از یک Source IP به یک Destination Port رو محدود کنیم؛ مثلاً نذاریم یه IP در هر ثانیه صدها Connection جدید به پورت 22 یا 443 ایجاد کنه. این موضوع برای مقابله با حملات Brute Force، Port Scanning، SYN Flood در بعضی سناریوها، API Abuse و بعضی حملات DoS لایه Application خیلی کاربردیه.
البته یه نکته مهم وجود داره؛ Rate Limiting به معنی «ضد DDoS کامل» نیست. اگر مهاجم فقط از یک IP حمله کنه، محدودکردنش نسبتاً سادهتره، ولی اگر حمله از هزاران یا میلیونها IP مختلف انجام بشه، Rate Limiting روی تکتک IPها ممکنه کافی نباشه. اینجاست که تجهیزات و سرویسهایی مثل Firewall، WAF، Load Balancer، CDN و DDoS Protection وارد بازی میشن و میتونن Traffic رو قبل از اینکه به سرور اصلی برسه فیلتر یا محدود کنن. در واقع ایده اصلی Rate Limiting اینه که به شبکه اجازه ندی یک Source در مدت کوتاه رفتار غیرعادی داشته باشه و منابع سیستم رو با درخواستهای پشتسرهم مصرف کنه.
@Netwo0rk
