مخفی کردن لیست فایل‌ها

چگونه لیست فایل‌ها (Directory Listing) را در cPanel و DirectAdmin مخفی کنیم

  • نمایش لیست فایل‌ها (Directory Listing یا Indexing) زمانی رخ می‌دهد که کاربر به یک پوشه وب سایت دسترسی پیدا کند و در آن فایل index (مثل index.html یا index.php) وجود نداشته باشد. در این حالت وب‌سرور محتویات پوشه را نمایش می‌دهد.
  • نمایش لیست فایل‌ها می‌تواند اطلاعات حساسی مثل بک‌آپ‌ها، فایل‌های پیکربندی، اسکریپت‌های خام یا فایل‌هایی با دسترسی محدود را در معرض دید قرار دهد و ریسک‌های امنیتی ایجاد کند.
  • در این مقاله روش‌های متداول برای غیرفعال کردن یا مخفی کردن Directory Listing در دو کنترل پنل محبوب (cPanel و DirectAdmin)، و نکات تکمیلی امنیتی، آمده است.

چرا باید نمایش لیست فایل‌ها را غیرفعال کنیم؟

  • جلوگیری از افشای فایل‌ها و پوشه‌های حساس
  • کاهش اطلاعاتی که مهاجم می‌تواند برای شناسایی آسیب‌پذیری‌ها استفاده کند
  • افزایش کلی سطح امنیت وب‌سایت
  • جلوگیری از مشاهده فایل‌های پشتیبان، فایل‌های خروجی، یا فایل‌های موقتی

 

روش کلی مخفی کردن لیست فایل ها (مناسب برای اکثر سرورها)

قرار دادن یک فایل index: ساده‌ترین روش ایجاد یک فایل index.html یا index.php خالی در پوشه‌هایی است که می‌خواهید از لیست شدن جلوگیری کنید.مثال index.html ساده:

 

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Forbidden</title></head><body></body></html>


روش 1 — استفاده از فایل .htaccess (مخصوص آپاچی / litespeed، کاربردی در cPanel و گاهی DirectAdmin)

  • در روت هر پوشه یا در public_html فایل .htaccess ایجاد یا ویرایش کنید.
  • برای غیرفعال کردن فهرست بندی (Directory Listing) دستور زیر را اضافه کنید:Options -Indexes
  • برای نمایش پیغام 403 سفارشی:Options -IndexesErrorDocument 403 /403.html(که باید فایل 403.html را در روت سایت ایجاد کنید)
  • نکات:
    • مطمئن شوید سرور شما اجازه خواندن .htaccess را می‌دهد (AllowOverride تنظیم شده باشد).
    • برخی هاست‌ها با Nginx یا تنظیمات متفاوت رفتار می‌کنند و .htaccess روی آن‌ها اعمال نمی‌شود.

 

روش 2 — تنظیمات Apache از طریق WHM/cPanel (برای کاربرانی که دسترسی روت یا WHM دارند)

  • ورود به WHM → Apache Configuration → Global Configuration یا Apache Configuration → Include editor (بسته به نسخه)
  • در تنظیمات اصلی می‌توانید Indexes را غیرفعال کنید یا تغییرات در VirtualHost اعمال کنید:
    • در پیکربندی VirtualHost مربوطه گزینه Options را بررسی و Indexes را حذف کنید.
  • بعد از اعمال تغییر، Apache را ری‌استارت کنید.

 

روش 3 — در DirectAdmin (کنترل پنل با دسترسی کاربر/ادمین)

  • DirectAdmin به طور پیش‌فرض ممکن است فهرست بندی را کنترل کند، اما برای اعمال تغییر می‌توانید:
    1. اگر دسترسی به فایل .htaccess دارید از Options -Indexes استفاده کنید.
    2. اگر دسترسی root دارید و Nginx را در جلو دارید، autoindex off را در کانفیگ Nginx اضافه کنید.
    3. برخی تنظیمات و templateهای DirectAdmin برای Apache را می‌توان ویرایش کرد (در مسیرهای templates/apache یا similar) — این کار نیاز به دقت و بک‌آپ دارد.

 

روش 5 — از طریق File Manager در cPanel (روش ساده برای کاربران بدون دسترسی SSH)

  • وارد cPanel شوید → File Manager → به پوشه مورد نظر بروید
  • اگر index.html یا index.php وجود ندارد: از گزینه +File یک فایل index.html خالی بسازید تا محتوای پوشه نمایش داده نشود.
  • برای ایجاد یا ویرایش .htaccess: در فایل منیجر فایل .htaccess را مشاهده/ایجاد و Options -Indexes را اضافه کنید.

 

روش 6 — جلوگیری از دسترسی به فایل‌ها یا پوشه‌های خاص با .htaccess

  • برای جلوگیری از دسترسی به فایل‌هایی با پسوند مشخص یا پوشه‌های خاص:

    جلوگیری از نمایش محتویات هر پوشه

    Options -Indexes

جلوگیری از دسترسی به فایل‌های backup

<Files ~ “.(bak|sql|tar|gz|zip)$”>

Require all denied

</Files>

توجه: برای سرورهایی با Apache 2.2 از دستورالعمل‌های قدیمی (Deny from all) استفاده می‌شود؛ در Apache 2.4 از Require all denied استفاده کنید.

نکات امنیتی تکمیلی

  • حذف فایل‌های بک‌آپ از public_html: فایل بک‌آپ یا export دیتابیس را هرگز در پوشه عمومی بارگذاری نکنید.
  • محدود کردن دسترسی به فایل‌های حساس (مثل .env, config.php) با قوانین .htaccess
  • استفاده از فایل robots.txt برای جلوگیری از ایندکس شدن دایرکتوری‌ها توسط موتورهای جستجو (توضیح: این فقط یک درخواست به ربات‌ها است و امنیت واقعی ایجاد نمی‌کند).مثال:User-agent: *Disallow: /backups/
  • بررسی مجوز فایل‌ها و پوشه‌ها (Permissions): پوشه‌ها معمولاً 755 و فایل‌ها 644 باید داشته باشند. تنظیمات صحیح را حفظ کنید.
  • اسکن دوره‌ای وب‌سایت با ابزارهای امنیتی یا افزونه‌های امنیتی (مثل Wordfence برای وردپرس یا ابزارهای مشابه).
  • استفاده از WAF یا سرویس CDN مثل Cloudflare برای کاهش ریسک حملات.

روش تست پس از اعمال تغییر

  • مسدود کردن نمایش لیست: مرورگر را باز کنید و به URL پوشه‌ای در سایت بروید (مثلاً example.com/uploads/) که index ندارد.
    • باید پیام 403 یا صفحه خالی یا ریدایرکت به index را ببینید.
  • برای اطمینان از جلوگیری از دسترسی به فایل‌های مشخص: مستقیماً آدرس فایل بک‌آپ را باز کنید (مثلاً example.com/backup.sql) و باید دسترسی مسدود باشد.
  • استفاده از ابزارهای آنلاین برای بررسی Indexing: برخی سرویس‌های تست امنیتی می‌توانند نمایش دایرکتوری را چک کنند.

نمونه‌های عملی و آماده برای کپی — خلاصه

  • ساده‌ترین: ایجاد index.html خالی در هر پوشه‌ای که نمی‌خواهید فهرست شود.

  • .htaccess (در ریشه یا پوشه):

    Options -Indexes

    ErrorDocument 403 /403.html

  • جلوگیری از دسترسی به فایل‌های پنهان:

    <FilesMatch “^.”>

    Require all denied
    

    </FilesMatch>

  • جلوگیری از دسترسی به بک‌آپ‌ها:

    <Files ~ “.(bak|sql|tar|gz|zip)$”>

    Require all denied
    

    </Files>

  • Nginx:

    location / {

    autoindex off;
    try_files $uri $uri/ =404;
    

    }

اشکال‌زدایی متداول

  • بعد از اضافه کردن .htaccess هنوز لیست نمایش داده می‌شود:
    • بررسی کنید سرور شما Apache است و AllowOverride برای دایرکتوری فعال است.
    • ممکن است Nginx جلوی Apache باشد؛ Nginx .htaccess را نمی‌خواند.
    • کش مرورگر یا کش سرور را پاک کنید.
  • پس از ویرایش کانفیگ سرور، فراموش نکنید وب‌سرور (Apache/Nginx) را ری‌لود یا ری‌استارت کنید.

جمع‌بندی

  • غیرفعال کردن Directory Listing یک گام ساده اما موثر در افزایش امنیت وب‌سایت است.
  • برای کاربران cPanel استفاده از .htaccess یا ایجاد فایل index ساده‌ترین روش است. برای سرورهای Nginx باید در پیکربندی Nginx autoindex را خاموش کنید.
  • همیشه از قوانین محافظتی برای فایل‌های حساس استفاده کنید و فایل‌های بک‌آپ را از پوشه‌های عمومی حذف کنید.
avatar

دانلود متن مقاله

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *