← شروع آموزش

WIUNIX ACADEMY

آموزش Cloudflare Tunnel و Access برای وب‌اپ داخلی در Ubuntu و Debian

صفحهٔ 5 از 5؛ مراحل قبلی و پیش‌نیازها را پیش از ادامه مرور کن.

آموزش متناسب با محیط تو

کجا اجرا می‌کنی؟

سیستم‌عامل و نسخه را انتخاب کن تا مراحل، دستورها و راه‌حل‌ها برای همان محیط نمایش داده شوند.

Debian 13بررسی‌شده با مستندات رسمی ·

آموزش متناسب با مقادیر تو

تنظیمات این آموزش

مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر می‌کنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری می‌شوند و به سرور یا لینک اشتراک‌گذاری فرستاده نمی‌شوند. پیش از اجرا، DNS، گواهی‌ها و سیاست شبکهٔ واقعی را بررسی کن.

آی‌پی، دامنه یا پورت مثال‌ها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای به‌روز‌شده را کپی کن.

تنظیم مقادیر برای محیط من8 مقدار قابل‌تغییر
15

قدم بعدی

ورودی‌های بازیابی را بدون نشت توکن نگه دارید

قبل از تغییر، شناسه و نام تونل، مسیر و میزبان، AUD و سیاست Access، DNS و نسخهٔ بسته را در رکورد محافظت‌شده ثبت کنید. توکن فقط در مخزن راز رمزگذاری‌شده باشد؛ بکاپ زیر عمداً آن را ندارد. دو فایل سرویس غیرمحرمانه و نشانه را با مسیر اصلی در /var/backups/academy-tunnel تازه کپی کنید. بکاپ فقط در اختیار root و بیرون از وب‌روت بماند؛ نسخهٔ محافظت‌شدهٔ خارج سرور هم لازم است. این بازیابی تنظیمات است، نه خروجی کامل حساب Cloudflare یا بکاپ دادهٔ اپلیکیشن.

Bash

محل اجرا در توضیح همین گام

sudo install -d -m 0700 '/var/backups/academy-tunnel'
sudo cp --parents --preserve=mode,timestamps /etc/systemd/system/academy-origin.service /etc/systemd/system/cloudflared-academy.service '/srv/academy-origin/health.txt' '/var/backups/academy-tunnel/'
sudo cmp /etc/systemd/system/academy-origin.service '/var/backups/academy-tunnel/etc/systemd/system/academy-origin.service'
sudo cmp /etc/systemd/system/cloudflared-academy.service '/var/backups/academy-tunnel/etc/systemd/system/cloudflared-academy.service'
sudo cmp '/srv/academy-origin/health.txt' '/var/backups/academy-tunnel/srv/academy-origin/health.txt'
cloudflared --version
از کجا بدانم درست انجام شد؟

هر سه مقایسه برابرند؛ بازیابی امن توکن و رکورد سیاست داشبورد جداگانه آماده است.

16

قدم بعدی

بازیابی را با مسیر عمومی بسته انجام دهید

فقط برای اصلاح همین استقرار اختصاصی، ابتدا مسیر عمومی را از داشبورد حذف کنید و Access را نگه دارید. کانکتور را متوقف و بکاپ انتخابی را بررسی کنید؛ سپس فایل‌های غیرمحرمانه را برگردانید. مسیرها همان مسیرهای اصلی انتخاب‌شده‌اند. توکن را با ویرایشگر محافظت‌شده از مخزن امن برگردانید؛ در صورت افشا، توکن تازه پس از چرخش لازم است. قبل از بازسازی مسیر حفاظت‌شده، پاسخ محلی و کانکتور را بسنجید و در پایان آزمون کاربر مجاز و غیرمجاز را تکرار کنید. سیاست قدیمی یا فایل کار دیگر را بازنویسی نکنید.

Bash

محل اجرا در توضیح همین گام

sudo systemctl stop cloudflared-academy.service
sudo install -d -m 0755 '/srv/academy-origin'
sudo install -d -m 0755 "$(dirname '/srv/academy-origin/health.txt')"
sudo install -m 0644 '/var/backups/academy-tunnel/etc/systemd/system/academy-origin.service' /etc/systemd/system/academy-origin.service
sudo install -m 0644 '/var/backups/academy-tunnel/etc/systemd/system/cloudflared-academy.service' /etc/systemd/system/cloudflared-academy.service
sudo install -m 0644 '/var/backups/academy-tunnel/srv/academy-origin/health.txt' '/srv/academy-origin/health.txt'
sudo systemd-analyze verify /etc/systemd/system/academy-origin.service /etc/systemd/system/cloudflared-academy.service
sudo systemctl daemon-reload
sudo systemctl restart academy-origin.service
curl --fail --silent --show-error --noproxy '*' http://127.0.0.1:8080/health.txt
از کجا بدانم درست انجام شد؟

نشانهٔ محلی با مسیر عمومی بسته پاسخ می‌دهد؛ پس از بازیابی توکن معتبر، کانکتور و آزمون‌های امنیت را بررسی کنید.

17

قدم بعدی

چرخش توکن و واکنش به افشا

هرکس توکن تونل را داشته باشد می‌تواند کانکتور اضافه کند. در چرخش معمول، Rotate token را بزنید، فایل محافظت‌شده را با ویرایشگر قبلی جایگزین و فقط همین سرویس را restart کنید؛ systemd در شروع دوباره اعتبارنامه را می‌خواند. چرخش به‌تنهایی کانکتور متصل قبلی را بیرون نمی‌اندازد. در افشا، مسیر را ببندید، فوراً توکن را عوض کنید و قطع اجباری اتصال‌ها را طبق مستند Cloudflare و روال رخداد سازمان انجام دهید. همهٔ replicaهای مجاز باید به‌روز شوند؛ در صورت نیاز نشست‌های Access را جدا لغو کنید. سپس آزمون منع دسترسی و پاسخ واقعی را تکرار کنید. کلید API حساب را در مثال‌ها قرار ندهید.

Bash

محل اجرا در توضیح همین گام

sudo systemctl restart cloudflared-academy.service
sudo systemctl is-active cloudflared-academy.service
از کجا بدانم درست انجام شد؟

کانکتور مجاز با اعتبارنامهٔ تازه وصل شده؛ در رخداد، قطع replica نامطمئن و تکرار آزمون Access هم لازم است.

18

قدم بعدی

به‌روزرسانی را با APT و زمان نگهداری انجام دهید

ابتدا یادداشت انتشار، هشدار امنیتی و نسخهٔ نصب‌شده و نامزد را ببینید. ورودی‌های بازیابی را نگه دارید و اگر محرمانگی نامطمئن است، مسیر را ببندید. فقط همین بسته را در زمان نگهداری ارتقا دهید؛ restart تک‌کانکتور وقفه ایجاد می‌کند. بعد از آن token-file، سلامت سرویس، پاسخ واقعی و رد هویت غیرمجاز را دوباره بسنجید. شمارهٔ بستهٔ آینده یا نبود وقفه تضمین نمی‌شود؛ بازگشت نسخه به بستهٔ امضاشده و بررسی امنیت نیاز دارد.

Bash

محل اجرا در توضیح همین گام

apt-cache policy cloudflared
cloudflared --version
sudo apt-get update
sudo apt-get install --only-upgrade cloudflared
sudo systemctl restart cloudflared-academy.service
از کجا بدانم درست انجام شد؟

بستهٔ تحت نگهداری نصب شده و آزمون پاسخ و منع دسترسی دوباره موفق است.

19

قدم بعدی

نمونه را بدون بازکردن مسیر جایگزین جمع کنید

فقط همین مسیر و رکورد DNS مربوط به تونل را حذف و نبود دسترسی به نشانه را بررسی کنید. تا وقتی هیچ مسیر یا alias به میزبان نمی‌رسد Access را نگه دارید. تنها دو سرویس اختصاصی زیر غیرفعال می‌شوند؛ فایل، توکن و بکاپ طبق دورهٔ نگهداری می‌مانند. پاک‌کردن بسته و کاربر یا reset فایروال لازم نیست. DNS را به IP مستقیم origin نبرید. حذف Access پیش از مسیر می‌تواند سرویس را عمومی کند. برای بازنشستگی دائمی، پس از اطمینان از نبود مسیر و replica دیگر، توکن و تونل را طبق روال حساب لغو کنید.

Bash

محل اجرا در توضیح همین گام

sudo systemctl disable --now cloudflared-academy.service academy-origin.service
sudo systemctl is-active cloudflared-academy.service academy-origin.service
از کجا بدانم درست انجام شد؟

هر دو سرویس غیرفعال‌اند؛ مسیر یا alias عمومی به نشانه نمی‌رسد و فایل بازیابی حفظ شده است.

پس از تأیید، برنامهٔ واقعی را جایگزین کنید

برای برنامهٔ واقعی، جداسازی origin، مجوزهای خود برنامه، کوکی و ریدایرکت امن، سیاست قابل‌ممیزی Access و بازیابی آزموده‌شده را نگه دارید. HTTPS برای origin راه‌دور، ظرفیت و دامنه‌های خرابی مستقل به طراحی جدا نیاز دارند. وب‌سرور Python نمونه را وارد تولید نکنید. راهنمای مرتبط WireGuard اتصال مسیریابی‌شدهٔ دو شبکه را پوشش می‌دهد؛ Tunnel و Access برای دسترسی به یک برنامه‌اند.

پشتوانهٔ این آموزش

منابع رسمی

وضعیت بررسی هر محیط بالای صفحه مشخص است؛ بررسی مستندات به معنی اجرای عملی همهٔ نسخه‌ها نیست.

ادامهٔ مسیر

قدم بعدی تو

همهٔ آموزش‌های آکادمی ↗