مسدودسازی آی پی مخرب؛ راهنمای عملی در کنترل‌پنل، htaccess و فایروال

آموزش گام‌به‌گام مسدودسازی آی پی مخرب در سه سطح: کنترل‌پنل cPanel و DirectAdmin، فایل htaccess و فایروال سرور با مثال‌های واقعی و خطاهای رایج.

۶ دقیقه به‌روزرسانی ۱۹ مهر ۱۴۰۵

چرا مسدودسازی آی پی مخرب باید اولین قدم باشد؟

هر روز هزاران درخواست مشکوک به سرورهای وب می‌رسد؛ از اسکن پورت‌ها و تلاش برای ورود به wp-login.php گرفته تا حملات brute-force روی SSH و MySQL. اگر لاگ‌های سرور خود را بررسی کرده باشید، احتمالاً الگوی تکراری را دیده‌اید: یک آی‌پی مشخص در بازه‌های کوتاه ده‌ها یا صدها درخواست ارسال می‌کند. در چنین شرایطی، مسدودسازی آی پی سریع‌ترین و مؤثرترین راه برای قطع کردن دسترسی مهاجم است.

در این مقاله سه سطح مسدودسازی را پوشش می‌دهیم: سطح کنترل‌پنل (مناسب کاربران اشتراکی)، سطح فایل .htaccess (برای سایت‌های روی آپاچی) و سطح فایروال سرور (برای کسانی که کنترل کامل VPS یا سرور اختصاصی دارند). هر روش مزایا و محدودیت‌های خودش را دارد و انتخاب درست به نوع هاستینگ و سطح دسترسی شما بستگی دارد.

سطح اول: مسدودسازی آی پی در کنترل‌پنل

اگر از هاست اشتراکی استفاده می‌کنید، اولین جایی که باید به آن سر بزنید کنترل‌پنل است. هر دو کنترل‌پنل رایج (cPanel و DirectAdmin) ابزار داخلی برای این کار دارند.

مسدودسازی در cPanel

در cPanel، ابزار IP Blocker را از بخش Security پیدا کنید. این ابزار بسیار ساده کار می‌کند:

  1. وارد IP Blocker شوید.
  2. در فیلد «IP Address or Domain»، آدرس موردنظر را وارد کنید. می‌توانید یک آی‌پی کامل مثل 185.220.101.34 یا یک بازه مثل 185.220.101. وارد کنید.
  3. روی Add کلیک کنید.

نکته مهم: اگر فقط یک آی‌پی را وارد کنید، دقیقاً همان آی‌پی مسدود می‌شود. اگر سه اکتت اول را وارد کنید (مثل 185.220.101.)، کل زیرشبکه کلاس C مسدود می‌شود که می‌تواند ۲۵۴ آی‌پی را شامل شود. این کار برای مسدودسازی کامل یک رنج مخرب مفید است، اما مراقب باشید کاربران عادی که ممکن است در همان محدوده باشند را هم از دست ندهید.

مسدودسازی در DirectAdmin

در DirectAdmin، مسیر کمی متفاوت است:

  1. از منوی اصلی به Extra Features بروید.
  2. گزینه IP Blocking را انتخاب کنید.
  3. آی‌پی یا رنج را وارد کرده و روی Add بزنید.

DirectAdmin به شما اجازه می‌دهد یک پیام خطای سفارشی هم برای کاربران مسدودشده تعریف کنید. این پیام معمولاً به‌صورت 403 Forbidden نمایش داده می‌شود.

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

سطح دوم: مسدودسازی آی پی با htaccess

اگر سایت شما روی آپاچی یا لایت‌اسپید اجرا می‌شود، فایل .htaccess ابزار قدرتمندی برای کنترل دسترسی است. این روش مستقل از کنترل‌پنل عمل می‌کند و برای سایت‌هایی که روی سرور مجازی (VPS) با دسترسی root اجرا می‌شوند هم کاربردی است.

سینتکس پایه

برای مسدودسازی یک آی‌پی خاص، کد زیر را به انتهای فایل .htaccess در ریشه سایت اضافه کنید:

<RequireAll>
    Require all granted
    Require not ip 185.220.101.34
</RequireAll>

اگر می‌خواهید چند آی‌پی را مسدود کنید، می‌توانید چند خط Require not ip اضافه کنید:

<RequireAll>
    Require all granted
    Require not ip 185.220.101.34
    Require not ip 203.0.113.7
    Require not ip 198.51.100.0/24
</RequireAll>

توجه کنید که 198.51.100.0/24 یک رنج کامل را مسدود می‌کند. این سینتکس در آپاچی ۲.۴ و بالاتر پشتیبانی می‌شود.

روش قدیمی (سازگار با آپاچی ۲.۲)

اگر سرور شما هنوز از آپاچی ۲.۲ استفاده می‌کند (که توصیه نمی‌شود)، سینتکس متفاوت است:

Order Allow,Deny
Allow from all
Deny from 185.220.101.34
Deny from 203.0.113.7

این روش در آپاچی ۲.۴ هم کار می‌کند اما منسوخ شده است. اگر امکانش را دارید، از سینتکس جدید استفاده کنید.

مسدودسازی بر اساس User-Agent

گاهی مهاجم از یک ابزار خاص استفاده می‌کند که User-Agent مشخصی دارد. می‌توانید این ابزارها را هم مسدود کنید:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (nikto|sqlmap|masscan) [NC]
RewriteRule .* - [F,L]
</IfModule>

این کد ابزارهای معروف اسکن امنیتی مثل nikto و sqlmap را مسدود می‌کند. اما مراقب باشید: برخی موتورهای جستجو هم User-Agent خاص خودشان را دارند و نباید اشتباهاً آنها را مسدود کنید.

اشتباه رایج: قرار دادن کد مسدودسازی در .htaccess ریشه سایت، فقط روی آن دامنه اعمال می‌شود. اگر چند دامنه روی یک هاست دارید، باید کد را در .htaccess هر دامنه جداگانه قرار دهید. همچنین اگر سایت شما از nginx استفاده می‌کند، فایل .htaccess اصلاً کار نمی‌کند و باید از روش فایروال استفاده کنید.

سطح سوم: مسدودسازی آی پی در فایروال سرور

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

استفاده از iptables (روش کلاسیک)

برای مسدودسازی یک آی‌پی با iptables:

iptables -A INPUT -s 185.220.101.34 -j DROP

برای مسدودسازی یک رنج کامل:

iptables -A INPUT -s 198.51.100.0/24 -j DROP

برای ذخیره‌سازی قوانین (تا بعد از ریبوت باقی بمانند):

iptables-save > /etc/iptables/rules.v4

برای حذف یک قانون، ابتدا شماره خط آن را پیدا کنید:

iptables -L INPUT --line-numbers

سپس قانون موردنظر را حذف کنید:

iptables -D INPUT 3

استفاده از UFW (روش ساده‌تر)

اگر از اوبونتو یا دبیان استفاده می‌کنید، ufw رابط کاربری ساده‌تری برای iptables است:

ufw deny from 185.220.101.34

برای مسدودسازی رنج:

ufw deny from 198.51.100.0/24

برای بررسی قوانین فعال:

ufw status numbered

و برای حذف قانون شماره ۲:

ufw delete 2

استفاده از fail2ban برای مسدودسازی خودکار

مسدودسازی دستی خوب است، اما اگر حملات مداوم باشند، ابزار fail2ban می‌تواند به‌صورت خودکار آی‌پی‌های متخلف را شناسایی و مسدود کند. این ابزار لاگ‌های SSH، Apache، Nginx و بسیاری سرویس‌های دیگر را مانیتور می‌کند.

نصب و راه‌اندازی پایه:

apt install fail2ban   # در دبیان/اوبونتو
yum install fail2ban   # در CentOS/RHEL

سپس یک فایل پیکربندی محلی ایجاد کنید:

nano /etc/fail2ban/jail.local

و محتوای زیر را اضافه کنید:

[sshd]
enabled = true
port = ssh
maxretry = 3
bantime = 3600

[apache-auth]
enabled = true
port = http,https
maxretry = 5
bantime = 3600

این تنظیمات به‌ترتیب: بعد از ۳ تلاش ناموفق SSH، آی‌پی به مدت ۱ ساعت مسدود می‌شود و بعد از ۵ تلاش ناموفق برای ورود به بخش محافظت‌شده آپاچی، همان جریمه اعمال می‌شود.

اشتباه رایج: مسدودسازی آی پی خودتان! اگر از یک آی‌پی داینامیک (مثل اینترنت خانگی) به سرور وصل می‌شوید، ممکن است بعد از تغییر آی‌پی توسط ISP، خودتان را مسدود کنید. قبل از اعمال قانون، حتماً آی‌پی فعلی خود را بررسی کنید و اگر لازم بود، از ufw allow from YOUR_IP استفاده کنید.

کدام روش را انتخاب کنیم؟

انتخاب روش مسدودسازی آی پی به شرایط شما بستگی دارد:

  • هاست اشتراکی: از کنترل‌پنل استفاده کنید. ساده است و نیازی به دانش فنی عمیق ندارد.
  • سایت روی VPS با آپاچی: ترکیبی از .htaccess برای سایت و ufw برای سرور بهترین نتیجه را می‌دهد.
  • سرور با ترافیک بالا: حتماً از فایروال استفاده کنید. مسدودسازی در سطح وب‌سرور، منابع را مصرف می‌کند.
  • حملات مداوم: fail2ban را راه‌اندازی کنید تا دیگر مجبور نباشید هر روز به‌صورت دستی آی‌پی‌ها را مسدود کنید.

جمع‌بندی و نکات نهایی

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

  1. قبل از مسدودسازی، لاگ‌ها را بررسی کنید و مطمئن شوید آی‌پی واقعاً مخرب است.
  2. مسدودسازی رنج‌های بزرگ را با احتیاط انجام دهید؛ ممکن است کاربران واقعی را هم از دست بدهید.
  3. قوانین فایروال را بعد از هر تغییر تست کنید تا مطمئن شوید سایت شما از دید کاربران عادی در دسترس است.
  4. برای حفاظت بلندمدت، ترکیبی از مسدودسازی دستی و ابزارهای خودکار مثل fail2ban را به کار بگیرید.

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

آیا این مطلب برایتان مفید بود؟