ESC را فشار دهید تا بسته شود

Cloudflare Tunnel چیست؟ آموزش امن‌سازی دسترسی به VPS بدون باز کردن پورت

فهرست

باز کردن پورت‌های متعدد روی VPS همیشه بهترین راه برای در دسترس قرار دادن یک سرویس نیست. هر پورت عمومی، سطح حمله را بزرگ‌تر می‌کند و می‌تواند هدف اسکن خودکار، Brute Force یا سوءاستفاده از آسیب‌پذیری‌های سرویس قرار بگیرد. Cloudflare Tunnel رویکرد متفاوتی دارد: به‌جای اینکه کاربر مستقیماً به IP و پورت سرور شما وصل شود، یک اتصال خروجی رمزگذاری‌شده از سرور به شبکه Cloudflare ایجاد می‌شود.

طبق مستندات رسمی Cloudflare که در ۵ مه ۲۰۲۶ به‌روزرسانی شده، Tunnel می‌تواند Origin Server، API و سرویس‌های داخلی را بدون نیاز به IP عمومی مستقیماً به Cloudflare متصل کند. این راهنما روی سناریوی عملی VPS لینوکسی تمرکز دارد.

Cloudflare Tunnel چیست؟ آموزش امن‌سازی دسترسی به VPS بدون باز کردن پورت
Cloudflare Tunnel می‌تواند بخشی از معماری دفاعی VPS باشد؛ اما جایگزین به‌روزرسانی، کنترل دسترسی و Hardening سیستم‌عامل نیست.

Cloudflare Tunnel چیست؟

Cloudflare Tunnel سرویسی است که با اجرای daemon سبک cloudflared روی سرور، یک مسیر خروجی از Origin به شبکه Cloudflare می‌سازد. در نتیجه برای انتشار یک وب‌اپلیکیشن لازم نیست پورت 80 یا 443 را از اینترنت به خود VPS باز کنید و IP مبدا نیز می‌تواند پشت Cloudflare پنهان بماند.

خلاصه پاسخ: اگر هدف شما انتشار یک سرویس وب روی VPS با کمترین سطح حمله مستقیم است، Tunnel می‌تواند ورودی عمومی را از فایروال Origin حذف کند؛ اما امنیت حساب Cloudflare، توکن Tunnel، سیستم‌عامل و خود برنامه همچنان حیاتی است.

Cloudflare Tunnel چگونه کار می‌کند؟

  1. cloudflared روی VPS نصب می‌شود.
  2. سرور یک اتصال خروجی به Cloudflare برقرار می‌کند.
  3. یک hostname مانند app.example.com به Tunnel متصل می‌شود.
  4. درخواست کاربر ابتدا به Cloudflare می‌رسد و سپس از داخل Tunnel به سرویس محلی، مثلاً http://localhost:3000، هدایت می‌شود.

مزیت مهم این معماری این است که اتصال از داخل سرور آغاز می‌شود؛ بنابراین در سناریوی وب معمولاً نیازی نیست پورت سرویس را برای کل اینترنت باز نگه دارید.

چه زمانی استفاده از Tunnel منطقی است؟

  • داشبوردهای مدیریتی و ابزارهای داخلی که نباید IP و پورت مستقیم داشته باشند.
  • وب‌اپلیکیشن‌های روی Docker یا سرویس‌هایی که فقط روی localhost گوش می‌دهند.
  • محیط‌های تست و Staging.
  • سرویس‌هایی که می‌خواهید همراه Cloudflare Access با احراز هویت محافظت شوند.
  • سرورهایی که کاهش سطح حمله ورودی برایشان اولویت دارد.

پیش‌نیازهای راه‌اندازی

به یک VPS لینوکسی، دسترسی sudo/root، دامنه مدیریت‌شده در Cloudflare و یک سرویس محلی سالم نیاز دارید. قبل از شروع، سیستم را به‌روز کنید و مطمئن شوید سرویس مقصد روی آدرس مورد انتظار در حال Listen است.

sudo apt update && sudo apt upgrade -y
ss -lntp

برای Hardening پایه نیز راهنمای امن‌سازی VPS لینوکس در سال ۲۰۲۶ را ببینید.

مرحله ۱: نصب cloudflared روی لینوکس

Cloudflare بسته‌های رسمی cloudflared را برای پلتفرم‌های مختلف ارائه می‌کند. روش نصب ممکن است با توزیع و معماری شما فرق کند؛ بنابراین نسخه و Repository را از صفحه رسمی Downloads انتخاب کنید. پس از نصب:

cloudflared --version

برای محیط Production بهتر است نصب از منبع رسمی انجام شود و فرآیند آپدیت cloudflared نیز در برنامه نگهداری سرور قرار بگیرد.

مرحله ۲: ساخت Tunnel

در داشبورد Cloudflare Zero Trust به بخش Networks و Tunnels بروید، یک Tunnel جدید بسازید و روش اتصال سرور را انتخاب کنید. Cloudflare یک فرمان نصب/اجرای Connector در اختیار شما قرار می‌دهد که شامل توکن Tunnel است.

توکن را مانند رمز عبور نگهداری کنید. آن را در Git، اسکرین‌شات عمومی، لاگ اشتراکی یا فایل قابل دانلود قرار ندهید. اگر توکن افشا شد، آن را Rotate یا Connector مربوط را حذف کنید.

مرحله ۳: اتصال hostname به سرویس VPS

برای نمونه فرض کنید برنامه شما فقط روی 127.0.0.1:3000 اجرا می‌شود. در تنظیمات Public Hostname می‌توانید دامنه‌ای مثل app.example.com را به:

http://localhost:3000

متصل کنید. در این معماری برنامه لازم نیست روی 0.0.0.0:3000 برای تمام اینترنت Listen کند.

مرحله ۴: بستن پورت عمومی غیرضروری

بعد از اینکه Tunnel را تست کردید، قواعد فایروال را بازبینی کنید. پورت برنامه‌ای که فقط از Tunnel استفاده می‌کند نباید بی‌دلیل از اینترنت عمومی قابل دسترسی باشد. قبل از تغییر SSH حتماً یک Session فعال نگه دارید تا خودتان را از سرور قفل نکنید.

sudo ufw status verbose

اصل مهم، Default Deny + Allow Only What You Need است. Cloudflare Tunnel مجوزی برای رها کردن فایروال یا سرویس‌های اضافی نیست.

مرحله ۵: اجرای cloudflared به‌صورت سرویس

برای Production باید Connector بعد از Reboot خودکار بالا بیاید و وضعیت آن قابل مانیتور باشد. بسته به روش نصب، cloudflared می‌تواند به‌عنوان سرویس systemd اجرا شود. وضعیت سرویس را بررسی کنید:

systemctl status cloudflared
journalctl -u cloudflared --since today

اگر با systemd آشنا نیستید، مقاله systemd Timer چیست؟ دید خوبی درباره مدیریت سرویس‌ها و Jobهای لینوکس می‌دهد.

Cloudflare Access را برای پنل‌های حساس اضافه کنید

پنهان کردن Origin به‌تنهایی برای پنل مدیریت کافی نیست. برای سرویس‌های حساس بهتر است قبل از رسیدن درخواست به برنامه، یک لایه احراز هویت با Cloudflare Access تعریف کنید. به این ترتیب حتی اگر hostname شناخته شود، دسترسی می‌تواند به کاربران، ایمیل‌ها یا Identity Providerهای مجاز محدود شود.

آیا Tunnel جای VPN را می‌گیرد؟

همیشه نه. برای انتشار کنترل‌شده یک وب‌سرویس یا اپلیکیشن HTTP، Tunnel بسیار مناسب است. اما برای دسترسی کامل شبکه‌ای، ارتباط Site-to-Site، نیازهای خاص Routing یا سناریوهای حساس به Vendor Dependency ممکن است VPN یا معماری Zero Trust دیگری انتخاب مناسب‌تری باشد.

محدودیت‌ها و ریسک‌هایی که باید بدانید

  • وابستگی به Cloudflare: مسیر دسترسی سرویس به زیرساخت شخص ثالث وابسته می‌شود.
  • امنیت حساب: MFA و کنترل دسترسی حساب Cloudflare اهمیت بالایی دارد.
  • توکن Connector: افشای Credential می‌تواند ریسک امنیتی ایجاد کند.
  • امنیت Origin: آسیب‌پذیری خود برنامه، دسترسی root ضعیف یا سیستم‌عامل قدیمی با Tunnel حل نمی‌شود.
  • مانیتورینگ: سلامت Connector و لاگ‌های برنامه باید پایش شوند.

Cloudflare Tunnel در برابر باز کردن مستقیم پورت

معیارپورت مستقیمCloudflare Tunnel
نمایش IP مبدامعمولاً بلهمی‌تواند پنهان بماند
نیاز به Inbound Portبلهبرای سرویس تونل‌شده معمولاً خیر
پیچیدگیکمتربیشتر
لایه Access Policyباید جدا ساخته شودقابل ترکیب با Cloudflare Access
وابستگی خارجیکمتربیشتر

چک‌لیست امنیتی پیشنهادی

  • MFA حساب Cloudflare را فعال کنید.
  • توکن Tunnel را Secret در نظر بگیرید.
  • سرویس داخلی را تا حد ممکن روی localhost نگه دارید.
  • پورت عمومی غیرضروری را پس از تست ببندید.
  • cloudflared و سیستم‌عامل را به‌روز نگه دارید.
  • لاگ‌ها و سلامت Connector را مانیتور کنید.
  • برای پنل‌های حساس Access Policy اضافه کنید.
  • از سرویس و تنظیمات بکاپ داشته باشید.
امنیت مؤثر سرور لایه‌ای است: Tunnel، فایروال، SSH امن، به‌روزرسانی و مانیتورینگ باید کنار هم قرار بگیرند.

سوالات متداول

آیا Cloudflare Tunnel رایگان است؟

Cloudflare امکان استفاده از Tunnel را در سناریوهای مختلف ارائه می‌کند، اما قابلیت‌های مرتبط با Zero Trust و سیاست‌های سازمانی می‌توانند به پلن و شرایط حساب وابسته باشند؛ قیمت و محدودیت روز را از صفحه رسمی بررسی کنید.

آیا با Tunnel دیگر به SSL نیاز نداریم؟

ارتباط کاربر تا Cloudflare با HTTPS قابل محافظت است و Tunnel مسیر Origin را نیز امن می‌کند، اما تنظیم درست TLS، سیاست‌های دامنه و امنیت خود اپلیکیشن همچنان مهم است.

آیا می‌توان SSH را هم از طریق Cloudflare مدیریت کرد؟

Cloudflare برای دسترسی به سرویس‌های غیر HTTP نیز راهکارهایی دارد، اما روش مناسب به معماری Zero Trust شما بستگی دارد. برای SSH مدیریتی، کنترل هویت، کلیدهای SSH و سیاست‌های دسترسی را جدی بگیرید.

آیا باید پورت SSH را ببندیم؟

صرفاً به‌خاطر نصب Tunnel این کار را نکنید. ابتدا مسیر مدیریت جایگزین را کامل تست کنید. تغییر اشتباه فایروال می‌تواند دسترسی شما به VPS را قطع کند.

جمع‌بندی

Cloudflare Tunnel برای بسیاری از مدیران سرور یک راه عملی برای کاهش Exposure مستقیم Origin است. ارزش اصلی آن در این است که سرویس می‌تواند از طریق یک اتصال خروجی به Cloudflare منتشر شود و نیازی به باز نگه داشتن پورت برنامه برای کل اینترنت نباشد. با این حال، Tunnel باید بخشی از دفاع لایه‌ای باشد، نه جایگزین Hardening.

اگر برای اجرای سرویس‌های لینوکسی به زیرساخت نیاز دارید، سرویس‌های وان سرور را بررسی کنید و پس از تحویل VPS، سیاست فایروال، SSH، بکاپ و مانیتورینگ را متناسب با کاربرد خود تنظیم کنید.

منابع رسمی

5/5 - (1 امتیاز)
اشتراک گذاری نوشته در:

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

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