بازگشت به وبلاگ
ژانویه 19, 2026راهنماها

نحوه محافظت از VPS خود در برابر حملات DDoS: راهنمای عملی

راهنمای جامع محافظت از VPS خود در برابر حملات DDoS با استفاده از فایروال‌ها، محدودیت نرخ و سایر روش‌های اثبات شده.

نحوه محافظت از VPS خود در برابر حملات DDoS: راهنمای عملی

حملات DDoS (Distributed Denial of Service) می‌توانند سرور شما را در چند دقیقه آفلاین کنند و منجر به از دست دادن درآمد، نارضایتی مشتری و آسیب به اعتبار شود. در سال 2026، چنین حملاتی پیچیده‌تر و در دسترس‌تر شده‌اند. خوشبختانه، روش‌های محافظت مدرن نیز تکامل یافته‌اند. این راهنما به شما نشان می‌دهد که چگونه VPS Hiddence خود را از رایج‌ترین انواع حملات DDoS محافظت کنید.

حملات DDoS چیست؟

یک حمله DDoS زمانی رخ می‌دهد که چندین رایانه (botnet) به طور همزمان درخواست‌هایی به سرور شما ارسال می‌کنند و منابع آن را تحت فشار قرار می‌دهند و آن را برای کاربران قانونی غیرقابل دسترس می‌کنند.

انواع اصلی حملات DDoS

  • حملات حجمی (L3/L4): UDP flood، ICMP، SYN flood — پهنای باند شبکه را تحت فشار قرار می‌دهند
  • حملات لایه برنامه (L7): HTTP flood، Slowloris — لایه برنامه را هدف قرار می‌دهند
  • حملات پروتکل: بهره‌برداری از آسیب‌پذیری‌ها در پروتکل‌های شبکه

محافظت داخلی Hiddence

همه VPSهای Hiddence شامل محافظت DDoS لایه 3-4 (سطح شبکه) هستند. این به طور خودکار اکثر حملات حجمی را فیلتر می‌کند. با این حال، حملات لایه 7 (برنامه) نیاز به پیکربندی اضافی دارند.

مرحله 1: راه‌اندازی فایروال

اولین خط دفاعی پیکربندی صحیح فایروال است. UFW (Uncomplicated Firewall) یک ابزار ساده و مؤثر برای اوبونتو/دبیان است.

bash
# نصب UFW
sudo apt update && sudo apt install ufw -y

# مجاز کردن SSH (مهم! این کار را قبل از فعال کردن UFW انجام دهید)
sudo ufw allow 22/tcp

# مجاز کردن HTTP و HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# فعال کردن UFW
sudo ufw enable

# بررسی وضعیت
sudo ufw status verbose

# قوانین محافظتی پیشرفته:
# محدود کردن اتصالات SSH (محافظت در برابر brute force)
sudo ufw limit 22/tcp

# مسدود کردن ICMP ping floods
sudo nano /etc/ufw/before.rules
# بعد از *filter اضافه کنید:
-A ufw-before-input -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP

# محافظت در برابر SYN flood
sudo nano /etc/sysctl.conf
# اضافه کنید:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# اعمال تغییرات
sudo sysctl -p

مرحله 2: نصب Fail2Ban

Fail2Ban به طور خودکار آدرس‌های IP که فعالیت مشکوک نشان می‌دهند (چندین تلاش ناموفق ورود، اسکن پورت) را مسدود می‌کند.

bash
# نصب
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# پیکربندی برای محافظت SSH و HTTP
# ایجاد پیکربندی محلی
sudo nano /etc/fail2ban/jail.local

# اضافه کنید:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = ufw

[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log

[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log

# راه‌اندازی مجدد Fail2Ban
sudo systemctl restart fail2ban

# بررسی وضعیت
sudo fail2ban-client status

مرحله 3: محافظت Nginx

اگر از Nginx استفاده می‌کنید، محدودیت نرخ را برای محافظت در برابر حملات HTTP flood پیکربندی کنید.

bash
sudo nano /etc/nginx/nginx.conf

# به بلوک http اضافه کنید:
http {
    # محدودیت درخواست: 10 درخواست در ثانیه برای هر IP
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    
    # محدودیت اتصال
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    
    # محافظت Slowloris
    client_body_timeout 10s;
    client_header_timeout 10s;
    keepalive_timeout 5s 5s;
    send_timeout 10s;
    
    # بقیه پیکربندی...
}

# در بلوک server اضافه کنید:
server {
    location / {
        # اعمال محدودیت درخواست
        limit_req zone=one burst=20 nodelay;
        
        # محدودیت اتصال: حداکثر 10 برای هر IP
        limit_conn addr 10;
        
        # پیکربندی شما...
    }
}

# تست پیکربندی و بارگیری مجدد
sudo nginx -t
sudo systemctl reload nginx

مرحله 4: استفاده از CDN

برای حداکثر محافظت، از یک سرویس CDN مانند Cloudflare استفاده کنید. CDN به عنوان پروکسی عمل می‌کند، IP واقعی سرور شما را پنهان می‌کند و اکثر حملات DDoS را جذب می‌کند. مزایا: پنهان کردن IP واقعی، فیلتر خودکار ترافیک مخرب، توزیع بار، SSL/TLS رایگان، WAF برای محافظت L7.

  • در cloudflare.com ثبت‌نام کنید (طرح رایگان موجود است)
  • دامنه خود را اضافه کنید و رکوردهای NS را در ثبت‌کننده خود تغییر دهید
  • حالت 'Proxy' (ابر نارنجی) را برای رکوردهای DNS فعال کنید
  • حالت SSL را به 'Full (strict)' در بخش SSL/TLS تنظیم کنید
  • 'DDoS Protection' و 'Bot Fight Mode' را در تنظیمات امنیتی فعال کنید

مرحله 5: نظارت

نظارت منظم به تشخیص زودهنگام حملات کمک می‌کند.

bash
# نظارت بر اتصالات فعال
watch -n 1 'ss -s'

# مشاهده IPهای برتر بر اساس تعداد اتصال
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

# مشاهده لاگ‌ها به صورت لحظه‌ای
sudo tail -f /var/log/nginx/access.log
sudo journalctl -u nginx -f

# بررسی IPهای مسدود شده در Fail2Ban
sudo fail2ban-client status sshd

اقدامات اضطراری

اگر حمله در حال انجام است، اقدامات زیر را انجام دهید:

  • شناسایی منبع: از 'netstat' یا لاگ‌ها برای شناسایی IPهای حمله‌کننده استفاده کنید
  • مسدودسازی موقت: sudo ufw insert 1 deny from ATTACKING_IP
  • مسدود کردن کل زیرشبکه‌ها: sudo ufw deny from 123.45.0.0/16
  • محدود کردن نرخ: به طور موقت محدودیت‌های Nginx را به 1-5 req/s کاهش دهید
  • تماس با پشتیبانی: با پشتیبانی Hiddence برای فعال‌سازی محافظت پیشرفته تماس بگیرید
  • حالت 'Under Attack Mode' را در Cloudflare فعال کنید (در صورت استفاده)

بهترین شیوه‌ها

  • هرگز IP واقعی سرور خود را در صورت استفاده از CDN منتشر نکنید
  • به طور منظم سیستم را به‌روزرسانی کنید: sudo apt update && sudo apt upgrade
  • از کلیدهای SSH به جای رمز عبور برای دسترسی به سرور استفاده کنید
  • پورت پیش‌فرض SSH (22) را به غیر استاندارد تغییر دهید
  • پشتیبان‌گیری خودکار را برای بازیابی سریع راه‌اندازی کنید
  • از IPهای جداگانه برای سرویس‌های حیاتی استفاده کنید
  • لاگینگ را فعال کنید و به طور منظم لاگ‌ها را برای فعالیت مشکوک بررسی کنید
  • استفاده از مسدودسازی جغرافیایی را در نظر بگیرید اگر سرویس شما جهانی نیست