
۲ روش مسدود کردن IP با htaccess و حذف امتیاز آی پی خارجی
مسدود کردن IP با htaccess دسترسی یک آدرس یا محدوده مشخص را به سایت محدود میکند. ابزار IP Blocker در cPanel هم راهی ساده برای مدیریت این محدودیت از داخل کنترلپنل است. البته این روشها IP واقعی کاربر یا سرور را مخفی نمیکنند و اعتبار آن را تغییر نمیدهند. در این آموزش از مجله پارس […]
۲ روش مسدود کردن IP با htaccess و حذف امتیاز آی پی خارجی
مسدود کردن IP با htaccess دسترسی یک آدرس یا محدوده مشخص را به سایت محدود میکند. ابزار IP Blocker در cPanel هم راهی ساده برای مدیریت این محدودیت از داخل کنترلپنل است. البته این روشها IP واقعی کاربر یا سرور را مخفی نمیکنند و اعتبار آن را تغییر نمیدهند.
در این آموزش از مجله پارس هاست، روش بلاککردن IP، محدودکردن رنج IPv4 و IPv6، رفع مسدودیت و آزمایش قوانین را بررسی میکنیم.
مسدود کردن IP چه کاربردی دارد؟
وقتی یک IP درخواستهای مشکوک و پرتعداد ارسال میکند، مسدودسازی آن به کنترل دسترسی کمک میکند. البته تعداد زیاد درخواست بهتنهایی نشانه حمله نیست؛ چند کاربر واقعی هم ممکن است از یک IP عمومی مشترک استفاده کنند.
پیش از تصمیمگیری، این رفتارها را در لاگ بررسی کنید:
- تلاش مکرر برای ورود به پنل مدیریت
- ارسال اسپم یا درخواستهای خودکار غیرعادی
- درخواست پرتعداد به مسیرهای حساس
- مصرف غیرعادی منابع از یک آدرس یا شبکه
- تلاش برای دسترسی به بخشهای محدود سایت
مسدودسازی دستی برای کنترل چند آدرس مشخص کاربرد دارد. اگر مهاجم مرتب IP عوض کند یا درخواستها را از شبکهای گسترده بفرستد، به کنترلهای دیگری نیاز دارید.

برای آشنایی با کنترل ارتباطهای شبکه و تفاوت آن با محدودیتهای وبسرور، مقاله فایروال چیست را بخوانید.
حذف امتیاز آی پی خارجی چه تفاوتی با مسدود کردن IP دارد؟
«حذف امتیاز آی پی خارجی» اصطلاح مشخصی در تنظیمات کنترل دسترسی وبسرور نیست. اگر منظورتان محدودکردن دسترسی آیپیهای خارجی به سایت است، باید از ابزار محدودسازی جغرافیایی یا فهرست بهروز رنجهای IP استفاده کنید. فایل htaccess بهتنهایی کشور IP را تشخیص نمیدهد؛ فقط آدرسها و محدودههایی را که مشخص میکنید، مسدود میکند. این کار امتیاز، اعتبار یا موقعیت جغرافیایی IP را تغییر نمیدهد.
قبل از بلاککردن IP چه چیزهایی را بررسی کنیم؟
ابتدا IP مبدا را در Access Log پیدا کنید و مسیر، زمان، تعداد درخواستها و کدهای پاسخ را کنار هم ببینید. یک درخواست به صفحه ورود یا دریافت خطای ۴۰۴، بهتنهایی دلیل کافی برای مسدودسازی نیست.
این سه بررسی احتمال خطا را کاهش میدهند:
- مطمئن شوید آدرس متعلق به سرویس ضروری سایت، درگاه پرداخت یا ابزار پایش نیست.
- اگر احتمال میدهید درخواست متعلق به خزنده موتور جستجوست، هویت آن را بررسی کنید؛ نام User-Agent کافی نیست.
- اگر CDN یا پراکسی دارید، مطمئن شوید لاگ، IP واقعی بازدیدکننده را ثبت میکند.
مسدودکردن یک IP مشترک یا رنج بزرگ ممکن است دسترسی کاربران واقعی را هم قطع کند.
فایل htaccess روی چه سرورهایی کار میکند؟
وجود فایل .htaccess بهتنهایی به معنی اجرای دستورهای آن نیست. وبسرور، تنظیمات مدیر سرور و مسیر عبور درخواست تعیین میکنند قانون کجا اثر داشته باشد.
| محیط | وضعیت اجرای محدودیت |
| Apache 2.4 | با ماژولها و مجوزهای لازم، دستورهای این آموزش را اجرا میکند |
| Nginx مستقل | فایل .htaccess را نمیخواند؛ محدودیت باید در تنظیمات Nginx یا لایه دیگری اعمال شود |
| Nginx مقابل Apache | قانون Apache فقط درخواستهایی را کنترل میکند که به Apache میرسند |
| LiteSpeed Web Server | از بسیاری از تنظیمات Apache پشتیبانی میکند؛ سازگاری دستورها به محصول و تنظیمات بستگی دارد |
| سایر وبسرورها | باید مستندات و تنظیمات همان محصول را بررسی کنید |
در Apache، مدیر سرور باید اجرای دستورهای کنترل دسترسی را در مسیر موردنظر مجاز کند؛ مثلا از طریق AllowOverride AuthConfig یا تنظیم مناسب AllowOverrideList. اگر هر دو تنظیم AllowOverride و AllowOverrideList برابر None باشند، Apache فایل .htaccess را نادیده میگیرد. اگر فایل را بخواند اما دستور داخل آن مجاز نباشد، ممکن است خطای پیکربندی رخ دهد. جزئیات این تنظیمات در مستندات رسمی Apache وجود دارد.
در معماری Nginx مقابل Apache، ممکن است Nginx فایلهای استاتیک را مستقیم تحویل دهد یا پاسخ را از کش برگرداند. در این حالت، قانون Apache لزوما همه درخواستها را پوشش نمیدهد.
کدهای ادامه برای Apache 2.4 هستند. اگر هاست شما از LiteSpeed استفاده میکند، سازگاری دستورها را با پشتیبانی بررسی و نتیجه را آزمایش کنید.
روش اول: مسدود کردن IP با htaccess
پیش از ویرایش، یک نسخه پشتیبان از فایل .htaccess دانلود کنید. اگر فایل از قبل قوانین امنیتی یا محدودیت دسترسی دارد، کد تازه را بدون بررسی کنار آنها قرار ندهید؛ ترکیب قوانین ممکن است نتیجه دسترسی را تغییر دهد.
همچنین کدهای این آموزش را داخل بلوکهای خودکار برنامه، مثل محدوده BEGIN WordPress و END WordPress، قرار ندهید.
۱. پیدا کردن فایل htaccess
در سی پنل وارد File Manager شوید و پوشه اصلی دامنه را باز کنید. برای دامنه اصلی، این مسیر معمولا public_html است؛ دامنههای دیگر ممکن است مسیر متفاوتی داشته باشند.

اگر فایل را نمیبینید:
- وارد بخش Settings شوید.
- گزینه Show Hidden Files (dotfiles) را فعال کنید.
- فایل .htaccess را پیدا کنید.

- با گزینه Edit آن را باز کنید.

اگر فایل وجود ندارد، پیش از ساخت آن از شرکت میزبان بپرسید آیا وبسرور اجرای دستورهای .htaccess را در مسیر موردنظر مجاز میداند.
قوانین فایل معمولا روی پوشه محل آن و زیرپوشهها اثر دارند؛ با این حال، تنظیمات مسیرهای پایینتر و نحوه ترکیب قوانین ممکن است نتیجه را تغییر دهند.
۲. مسدود کردن یک IP
برای محدودکردن یک آدرس و بازگذاشتن دسترسی سایر IPها، از ساختار زیر استفاده کنید:
<RequireAll>
Require all granted
Require not ip 203.0.113.25
</RequireAll>
آدرس ۲۰۳٫۰٫۱۱۳٫۲۵ را با IP موردنظر جایگزین کنید. آدرسهای این آموزش مخصوص مثال و مستندسازی هستند؛ آنها را بهعنوان IP مهاجم ثبت نکنید.
در این ساختار، شرط مثبت Require all granted دسترسی عمومی را مجاز میکند و شرط منفی، IP مشخص را از این دسترسی کنار میگذارد. دستور Require not ip را بهتنهایی ننویسید.
۳. مسدود کردن چند IP
برای محدودکردن چند آدرس، آنها را در همان بلوک وارد کنید:
<RequireAll>
Require all granted
Require not ip 203.0.113.25
Require not ip 198.51.100.18
Require not ip 192.0.2.10
</RequireAll>
این کد هر سه آدرس را رد میکند. پیش از افزودن آدرس تازه، فهرست قبلی را بررسی کنید تا قوانین تکراری نسازید.
۴. مسدود کردن رنج IP
برای محدودکردن یک شبکه، رنج را با قالب CIDR بنویسید:
<RequireAll>
Require all granted
Require not ip 203.0.113.0/24
</RequireAll>
محدوده ۲۰۳٫۰٫۱۱۳٫۰/۲۴ آدرسهای ۲۰۳٫۰٫۱۱۳٫۰ تا ۲۰۳٫۰٫۱۱۳٫۲۵۵ را پوشش میدهد. مسدودکردن آن به معنی بستن دسترسی یک کشور نیست؛ هر رنج ممکن است به کاربران و سرویسهای متعددی تعلق داشته باشد.
Apache برای کنترل دسترسی مبتنی بر IP از آدرس کامل، محدوده شبکه و قالب CIDR پشتیبانی میکند. نمونههای بیشتر در مستندات کنترل دسترسی Apache وجود دارد.
۵. مسدود کردن IPv6
برای IPv6 هم از همین ساختار استفاده کنید:
<RequireAll>
Require all granted
Require not ip 2001:db8::1
</RequireAll>
آدرس نمونه را با IPv6 موردنظر جایگزین کنید. برای محدودکردن یک شبکه IPv6 هم باید پیشوند شبکه و طول آن را دقیق وارد کنید؛ انتخاب محدوده بزرگ ممکن است دسترسی تعداد زیادی کاربر را قطع کند.
اگر اتصال کاربر هم IPv4 و هم IPv6 دارد، مسدودکردن یکی لزوما دیگری را محدود نمیکند. هنگام آزمایش، IP واقعی درخواست را در لاگ بررسی کنید.
۶. اجازه دسترسی فقط به IPهای مشخص
اگر میخواهید یک پوشه فقط برای آدرسهای مورداعتماد باز باشد، از فهرست مجاز استفاده کنید:
Require ip 203.0.113.25 198.51.100.18
در محدوده این قانون و در نبود قوانین دیگری که نتیجه را تغییر دهند، فقط دو آدرس بالا اجازه دسترسی دارند. این تنظیم برای پوشههای محدود کاربرد دارد؛ قراردادن آن در ریشه سایت عمومی، دسترسی سایر بازدیدکنندگان را قطع میکند.
اگر IP اتصال شما تغییر میکند، این روش ممکن است دسترسی خودتان را هم ببندد. مسیر بازگشت از طریق File Manager را در دسترس نگه دارید.
۷. رفع مسدودیت IP در htaccess
برای آزادکردن یک IP، خط Require not ip مربوط به همان آدرس یا رنج را حذف و فایل را ذخیره کنید. سایر قوانین فایل را تغییر ندهید و سپس دسترسی را دوباره آزمایش کنید.
اگر تنها قانون منفی داخل بلوک را حذف کنید و فقط Require all granted باقی بماند، آن بلوک دیگر IP خاصی را مسدود نمیکند.
این روش مربوط به قوانین مسدودسازی است. اگر از فهرست مجاز بخش قبل استفاده میکنید، برای دسترسی یک IP جدید باید آدرس آن را به دستور Require ip اضافه کنید.
چرا کدهای قدیمی Allow و Deny را ترکیب نکنیم؟
بعضی آموزشها از دستورهای Order، Allow و Deny استفاده میکنند. این دستورها به مدل قدیمی کنترل دسترسی Apache تعلق دارند و در Apache 2.4 برای سازگاری با تنظیمات قدیمی به ماژول mod_access_compat نیاز دارند.
برای تنظیمات تازه، از ساختار Require استفاده کنید. اگر فایل فعلی دستورهای قدیمی دارد، ابتدا قوانین موجود را بررسی کنید. ترکیب دو مدل کنترل دسترسی، عیبیابی را دشوار میکند و ممکن است نتیجه موردانتظار را ندهد.
روش دوم: مسدود کردن IP با IP Blocker در cPanel
ابزار IP Blocker برای کاربری مناسب است که ترجیح میدهد آدرسها را از رابط کنترلپنل مدیریت کند. این ابزار دسترسی وبسایت را محدود میکند و جای فایروال کل سرور را نمیگیرد.
برای ثبت آدرس:
- وارد cPanel شوید.
- بخش Security را باز کنید.
- روی IP Blocker کلیک کنید.
- در کادر IP Address or Domain، آدرس یا رنج موردنظر را وارد کنید.
- روی Add بزنید.
- فهرست آدرسهای مسدود را بررسی و نتیجه را آزمایش کنید.
برای یک آدرس، مقداری مثل ۲۰۳٫۰٫۱۱۳٫۲۵ و برای یک شبکه، مقداری مثل ۲۰۳٫۰٫۱۱۳٫۰/۲۴ وارد کنید. رابط cPanel قالبهای دیگری مانند بازه ابتدا تا انتها را هم میپذیرد و رنجها را به زیرشبکههای CIDR تبدیل میکند.
در مستندات رسمی وبسایت cPanel نوشته شده است:
“This interface only blocks access to your website, not other services like the Webmail interface.” این ابزار فقط دسترسی به وبسایت را مسدود میکند و سرویسهای دیگری مثل Webmail را مسدود نمیکند. برای بلاک IP در سطح سرور، کاربران WHM یا شرکت ارائهدهنده هاست میتوانند از Host Access Control استفاده کنند.
۱. آزادکردن IP در cPanel
در صفحه IP Blocker، آدرس را پیدا کنید، در ستون Actions روی Delete بزنید و سپس Remove IP را انتخاب کنید. بعد از حذف، دوباره دسترسی را آزمایش کنید.
اگر همچنان محدودیت وجود دارد، قوانین دیگر .htaccess، فایروال، WAF و CDN را بررسی کنید؛ حذف یک قانون، محدودیتهای لایههای دیگر را برنمیدارد.
۲. تفاوت IP Blocker و ویرایش دستی htaccess
cPanel آدرسها و محدودههای داخل IP Blocker را به فایل .htaccess اضافه میکند. بنابراین این دو روش را دو لایه امنیتی مستقل در نظر نگیرید.

پیش از ویرایش دستی، آدرسهای داخل پنل و قوانین فایل را با هم بررسی کنید. برای حذف یا تغییر محدودیتی که از پنل ثبت کردهاید، بهتر است از همان رابط استفاده کنید و سپس نتیجه را بسنجید.
۳. آیا IP Blocker دسترسی همه سرویسها را میبندد؟
خیر. این ابزار فقط دسترسی وبسایت را محدود میکند و سرویسهایی مانند Webmail را پوشش نمیدهد. برای محدودکردن ایمیل، SSH یا سایر سرویسها، تنظیمات همان سرویس یا فایروال سرور را بررسی کنید.
اگر سایت پشت CDN باشد، چه تغییری لازم است؟
وقتی CDN یا Reverse Proxy جلوی سایت قرار دارد، اتصال به سرور اصلی از طرف سرویس واسط برقرار میشود. بدون تنظیم درست، وبسرور ممکن است IP واسط را بهجای IP بازدیدکننده ببیند.
در این شرایط، مدیر سرور باید تشخیص IP واقعی را متناسب با معماری سرویس تنظیم کند. برای Apache، یکی از ابزارهای این کار ماژول mod_remoteip است. تنظیم این ماژول به دسترسی مدیریتی پیکربندی Apache نیاز دارد و محل آن فایل .htaccess نیست.
به هدرهای اعلام IP بدون اعتبارسنجی مبدا اعتماد نکنید. فقط پراکسیهای مورداعتماد باید اجازه تعیین IP واقعی کاربر را داشته باشند؛ وگرنه کاربر ممکن است هدر جعلی بفرستد.
از طرف دیگر، درخواستهایی که CDN از کش پاسخ میدهد، به .htaccess سرور اصلی نمیرسند. برای محدودکردن این درخواستها، قانون را در لایه CDN تنظیم کنید.
آیا جلوگیری از شناسایی IP همان مسدود کردن IP است؟
خیر. مسدودکردن IP یعنی محدودکردن درخواستهای یک آدرس مشخص؛ جلوگیری از شناسایی IP معمولا به پنهانکردن آدرس واقعی کاربر یا سرور اشاره دارد.
فایل .htaccess بهتنهایی IP سرور یا بازدیدکننده را مخفی نمیکند. CDN و Reverse Proxy هم فقط با تنظیم درست به کاهش نمایش مستقیم IP سرور اصلی کمک میکنند. رکوردهای DNS دیگر، سابقه اطلاعات و سرویسهای جانبی ممکن است همچنان آن را آشکار کنند.
اگر هدف شما پنهانکردن مبدا سرور است، علاوه بر پراکسیکردن ترافیک، مسیرهای افشای آدرس و دسترسی مستقیم به سرور اصلی را بررسی کنید.
اختصاصیبودن IP هم به معنی مخفیبودن آن نیست. برای شناخت تفاوت آدرسهای اشتراکی و اختصاصی، مقاله IP اختصاصی چیست را بخوانید.
مسدودسازی IP چه محدودیتهایی دارد؟
بلاک دستی یک آدرس، جلوی تغییر IP مهاجم یا حمله توزیعشده را نمیگیرد. این روش درخواست را در لایه وبسرور بررسی میکند؛ در نتیجه، برای مقابله با اشباع پهنای باند کافی نیست.
برای کنترل ترافیک مخرب، ابزار را متناسب با مشکل انتخاب کنید:
- Rate Limiting: تعداد درخواستها را در بازه زمانی مشخص محدود میکند.
- WAF یا فایروال برنامه وب: درخواستهای وب را بر اساس قواعد امنیتی بررسی میکند.
- فایروال شبکه: ارتباطها را بر اساس قواعد و امکانات خود کنترل میکند.
- کنترل ورود: تلاشهای ناموفق را محدود میکند و در کنار احراز هویت چندمرحلهای، امنیت ورود را افزایش میدهد.
برای کنترل چند IP مشخص، قوانین این آموزش کاربرد دارند. برای حملات گسترده، موضوع را با شرکت هاستینگ یا تیم امنیت بررسی کنید.
اگر مدیریت وبسرور و فایروال به دسترسی مدیریتی نیاز دارد، هنگام خرید سرور مجازی نوع دسترسی، سیستمعامل و مسئولیت مدیریت امنیت را بررسی کنید. داشتن VPS بهتنهایی امنیت بیشتری ایجاد نمیکند؛ پیکربندی و نگهداری درست اهمیت دارد.
پس از ثبت قانون، نتیجه را آزمایش کنید
صرف ذخیره فایل یا نمایش پیام موفقیت در cPanel کافی نیست. یک درخواست از IP مسدود و یک درخواست از آدرس مجاز ارسال کنید تا هم محدودیت و هم دسترسی عادی را بسنجید.
برای این آزمایش، به اتصالهایی با IP عمومی متفاوت نیاز دارید؛ بازکردن سایت در مرورگر دیگر یا حالت ناشناس، IP شما را تغییر نمیدهد.
در Apache معمولا درخواست غیرمجاز پاسخ ۴۰۳ Forbidden میگیرد. البته مشاهده این پاسخ بهتنهایی ثابت نمیکند که قانون تازه علت آن است؛ زمان درخواست و لاگها را هم بررسی کنید. برای شناخت سایر علتهای این پاسخ، مقاله خطای ۴۰۳ را بخوانید.
اگر سایت پس از ویرایش خطای ۵۰۰ داد، نسخه قبلی فایل را برگردانید و Error Log را بررسی کنید.
اگر محدودیت اثر ندارد، این موارد را بهترتیب بررسی کنید:
- آیا فایل در پوشه درست قرار دارد؟
- آیا وبسرور فایل .htaccess و دستور موردنظر را اجرا میکند؟
- آیا IP واقعی درخواست همان آدرسی است که مسدود کردهاید؟
- آیا درخواست با IPv4 ارسال میشود یا IPv6؟
- آیا قوانین دیگر نتیجه دسترسی را تغییر میدهند؟
- آیا CDN، کش یا پراکسی پیش از رسیدن درخواست به Apache پاسخ میدهد؟
پس از رفع مشکل، قوانین موقت را بازبینی کنید تا دسترسی کاربران برای مدت نامشخص بسته نماند.
سوالات متداول درباره مسدود کردن IP با htaccess
۱. آیا مسدود کردن IP با htaccess باعث جلوگیری از شناسایی IP میشود؟
خیر. این روش دسترسی یک آدرس مشخص را محدود میکند و IP واقعی سرور یا کاربر را مخفی نمیکند. پنهانکردن IP سرور به معماری شبکه، تنظیمات پراکسی و کنترل مسیرهای افشای آدرس بستگی دارد.
۲. آیا «حذف امتیاز آی پی خارجی» همان مسدودکردن IP است؟
خیر. «حذف امتیاز آی پی خارجی» اصطلاح مشخصی برای کنترل دسترسی وبسرور نیست. اگر منظورتان بستن دسترسی IPهای خارجی است، باید از قواعد جغرافیایی یا فهرست بهروز رنجها استفاده کنید؛ کدهای این آموزش امتیاز یا اعتبار IP را تغییر نمیدهند.
۳. چرا بعد از ثبت قانون، IP همچنان به سایت دسترسی دارد؟
ممکن است فایل در مسیر درست نباشد، وبسرور دستور را اجرا نکند یا IP واقعی درخواست با آدرس داخل قانون تفاوت داشته باشد. استفاده از IPv6 بهجای IPv4 یا پاسخگویی CDN و کش پیش از رسیدن درخواست به Apache هم از علتهای احتمالی است.
۴. آیا IP Blocker دسترسی به Webmail را هم مسدود میکند؟
خیر. این ابزار برای محدودکردن دسترسی وبسایت است. محدودکردن Webmail، SSH و سرویسهای دیگر به تنظیمات جداگانه نیاز دارد.
۵. آیا با مسدودکردن یک رنج، تمام کاربران یک کشور را بلاک میکنیم؟
خیر. هر رنج محدوده مشخصی از آدرسها را پوشش میدهد و لزوما معادل تمام IPهای یک کشور نیست. محدودسازی جغرافیایی به اطلاعات بهروز تخصیص IP و ابزار مناسب نیاز دارد.
محمدی
۲۰۲۲-۱۱-۰۵ ۱۲:۰۴:۴۴
با سلام،
آیا روشی وجود داره که بتونیم این کار رو برای وبلاگ انجام بدیم؟
من وبلاگ نویس هستم و مدتی هست که شخصی در قسمت نظرات توهین و فحاشی میکنه، آیا میشه مسدودش کرد؟
لطفاً راهنمایی کنید.
با تشکر.
۱