چرا مسدودسازی آی پی مخرب باید اولین قدم باشد؟
هر روز هزاران درخواست مشکوک به سرورهای وب میرسد؛ از اسکن پورتها و تلاش برای ورود به wp-login.php گرفته تا حملات brute-force روی SSH و MySQL. اگر لاگهای سرور خود را بررسی کرده باشید، احتمالاً الگوی تکراری را دیدهاید: یک آیپی مشخص در بازههای کوتاه دهها یا صدها درخواست ارسال میکند. در چنین شرایطی، مسدودسازی آی پی سریعترین و مؤثرترین راه برای قطع کردن دسترسی مهاجم است.
در این مقاله سه سطح مسدودسازی را پوشش میدهیم: سطح کنترلپنل (مناسب کاربران اشتراکی)، سطح فایل .htaccess (برای سایتهای روی آپاچی) و سطح فایروال سرور (برای کسانی که کنترل کامل VPS یا سرور اختصاصی دارند). هر روش مزایا و محدودیتهای خودش را دارد و انتخاب درست به نوع هاستینگ و سطح دسترسی شما بستگی دارد.
سطح اول: مسدودسازی آی پی در کنترلپنل
اگر از هاست اشتراکی استفاده میکنید، اولین جایی که باید به آن سر بزنید کنترلپنل است. هر دو کنترلپنل رایج (cPanel و DirectAdmin) ابزار داخلی برای این کار دارند.
مسدودسازی در cPanel
در cPanel، ابزار IP Blocker را از بخش Security پیدا کنید. این ابزار بسیار ساده کار میکند:
- وارد
IP Blockerشوید. - در فیلد «IP Address or Domain»، آدرس موردنظر را وارد کنید. میتوانید یک آیپی کامل مثل
185.220.101.34یا یک بازه مثل185.220.101.وارد کنید. - روی Add کلیک کنید.
نکته مهم: اگر فقط یک آیپی را وارد کنید، دقیقاً همان آیپی مسدود میشود. اگر سه اکتت اول را وارد کنید (مثل 185.220.101.)، کل زیرشبکه کلاس C مسدود میشود که میتواند ۲۵۴ آیپی را شامل شود. این کار برای مسدودسازی کامل یک رنج مخرب مفید است، اما مراقب باشید کاربران عادی که ممکن است در همان محدوده باشند را هم از دست ندهید.
مسدودسازی در DirectAdmin
در DirectAdmin، مسیر کمی متفاوت است:
- از منوی اصلی به Extra Features بروید.
- گزینه IP Blocking را انتخاب کنید.
- آیپی یا رنج را وارد کرده و روی 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، آیپی به مدت ۱ ساعت مسدود میشود و بعد از ۵ تلاش ناموفق برای ورود به بخش محافظتشده آپاچی، همان جریمه اعمال میشود.
ufw allow from YOUR_IP استفاده کنید.
کدام روش را انتخاب کنیم؟
انتخاب روش مسدودسازی آی پی به شرایط شما بستگی دارد:
- هاست اشتراکی: از کنترلپنل استفاده کنید. ساده است و نیازی به دانش فنی عمیق ندارد.
- سایت روی VPS با آپاچی: ترکیبی از
.htaccessبرای سایت وufwبرای سرور بهترین نتیجه را میدهد. - سرور با ترافیک بالا: حتماً از فایروال استفاده کنید. مسدودسازی در سطح وبسرور، منابع را مصرف میکند.
- حملات مداوم:
fail2banرا راهاندازی کنید تا دیگر مجبور نباشید هر روز بهصورت دستی آیپیها را مسدود کنید.
جمعبندی و نکات نهایی
مسدودسازی آی پی مخرب یک مهارت ضروری برای هر مدیر سایتی است. با سه روشی که در این مقاله بررسی کردیم، میتوانید از سادهترین (کنترلپنل) تا پیشرفتهترین (فایروال) سطح را پوشش دهید. به یاد داشته باشید:
- قبل از مسدودسازی، لاگها را بررسی کنید و مطمئن شوید آیپی واقعاً مخرب است.
- مسدودسازی رنجهای بزرگ را با احتیاط انجام دهید؛ ممکن است کاربران واقعی را هم از دست بدهید.
- قوانین فایروال را بعد از هر تغییر تست کنید تا مطمئن شوید سایت شما از دید کاربران عادی در دسترس است.
- برای حفاظت بلندمدت، ترکیبی از مسدودسازی دستی و ابزارهای خودکار مثل fail2ban را به کار بگیرید.
اگر سرور شما تحت حملات سنگین قرار دارد و مدیریت امنیت بهصورت دستی دشوار شده، میتوانید از خدمات مدیریت سرور و فایروالهای تحت مدیریت که برخی ارائهدهندگان هاستینگ مثل سرورنت ارائه میدهند استفاده کنید تا تیم فنی بهصورت شبانهروزی امنیت زیرساخت شما را پایش کند. اما در هر صورت، دانستن این تکنیکها به شما کمک میکند در شرایط اضطراری سریع واکنش نشان دهید.