BitVPS
راه‌اندازی سایت .onion: سرویس Tor، آدرس نسخه 3 و نشتی‌هایی که هویت را لو می‌دهند
راهنمای ناشناسی

راه‌اندازی سایت .onion: سرویس Tor، آدرس نسخه 3 و نشتی‌هایی که هویت را لو می‌دهند

هر سایت معمولی کارش را با اعلام محل زندگی‌اش شروع می‌کند. یک رکورد DNS نامی را به آدرسی وصل می‌کند، یک مرجع صدور گواهی آن نام را در یک لاگ عمومی ثبت می‌کند، و هرکسی که ماشین پشتِ آن را بخواهد فقط کافی است نگاه کند. یک سرویس onion هیچ‌کدام از این کارها را نمی‌کند. نه رکورد DNS‌ای هست، نه مرجع صدور گواهی‌ای، نه آدرسی جایی منتشر می‌شود — خودِ نام همان کلید عمومی است، و سرور به‌جای منتظر ماندن برای پیدا شدن، خودش به سمت شبکه دست دراز می‌کند. همین ویژگی چیزی است که تحریریه‌های خبری، آینه‌های بسته‌ی Debian و مشتی از بزرگ‌ترین سایت‌های دنیا واقعاً با راه‌اندازی چنین سرویسی خریداری می‌کنند. این راهنما توضیح می‌دهد پروتکل چه چیزی به شما می‌دهد، آن ده خط پیکربندی که یک سرویس را بالا می‌آورد، و فهرست به‌مراتب بلندترِ راه‌هایی که مردم خودشان روی همین زیرساخت لو داده‌اند.

بدون KYC، هرگز DMCA نادیده گرفته می‌شود بدون لاگ ترافیک در 60 ثانیه فعال

سرویس onion واقعاً چیست؟

سرویس onion سروری است که هیچ‌وقت به کسی نمی‌گوید کجاست. به‌جای انتشار یک آدرس در DNS و انتظار برای اتصال، مدارهای خروجی‌ای از طریق شبکه Tor تا چند رله که به‌عنوان نقاط معرفی انتخاب می‌کند می‌سازد، و یک توصیف‌گر امضاشده منتشر می‌کند که می‌گوید «هرکس این کلید را داشته باشد، از طریق این رله‌ها قابل دسترسی است». کلاینتی که آدرس را می‌داند آن توصیف‌گر را واکشی می‌کند، یک رلهٔ سوم را به‌عنوان نقطه ملاقات انتخاب می‌کند، و از یک نقطه معرفی می‌خواهد درخواستی برای ملاقات در آنجا منتقل کند. هر دو طرف مدار خودشان را تا نقطه ملاقات می‌سازند، و هیچ‌کدام هرگز آدرس IP طرف مقابل را نمی‌فهمد، چون هیچ‌وقت به آن‌ها گفته نمی‌شود.

خودِ آدرس بخش جالب ماجراست. یک آدرس onion نسخه 3 شامل 56 کاراکتر base32 و به‌دنبال آن .onion است، و این یک نام نیست که به یک کلید اشاره کند — خودِ آن کلید است: یک کلید عمومی ed25519 به‌همراه چک‌سام و یک بایت نسخه، رمزگذاری‌شده. چیزی برای جست‌وجو کردن و چیزی برای اعتماد کردن وجود ندارد. وقتی کلاینت شما متصل می‌شود، توصیف‌گری که واکشی می‌کند دقیقاً با همان کلید امضا شده، پس آدرس به‌طور ذاتی سرویس را احراز هویت می‌کند. هیچ مرجع صدور گواهی‌ای در کار نیست، هیچ‌کس نمی‌تواند برای آدرس شما گواهی صادر کند، و هیچ لاگ شفافیتی وجود ندارد که وجود سرویس را ثبت کند. اگر می‌خواهید دست‌دهیِ کامل را ببینید، خواندن مشخصات rendezvous ارزشش را دارد.

یک سایت معمولی چه چیزی را منتشر می‌کندچه کسی می‌تواند آن را ببیندیک سرویس onion به‌جای آن چه چیزی منتشر می‌کند
یک رکورد DNS که نام را به IP نگاشت می‌کندهرکسی، برای همیشه، و DNS غیرفعال هم تاریخچه‌اش را نگه می‌داردهیچ‌چیز — در هیچ مرحله‌ای DNS دخیل نیست
یک گواهی TLS که نام میزبان را دربرداردهرکسی، از طریق لاگ‌های عمومی certificate transparencyهیچ‌چیز — خودِ آدرس همان کلید است، پس نیازی به CA نیست
آدرس IP که روی پورت 443 پاسخ می‌دهدهرکسی که به‌طور مداوم اینترنت را اسکن می‌کندهیچ‌چیز — سرویس مدارهای خروجی باز می‌کند و روی هیچ پورت عمومی گوش نمی‌دهد
یک ارائه‌دهنده میزبانی و یک ASNهرکسی، از روی آدرسهیچ‌چیز قابل استخراج از خودِ آدرس نیست
سوابق WHOIS یا ریجیستراریهرکسی؛ و ریجیستررها به احضاریه‌ها پاسخ می‌دهندهیچ‌چیز — نه ثبتی وجود دارد و نه ریجیستراری

این فهرست، کل ارزش پیشنهادیِ ماجراست و توضیح می‌دهد چرا طیف متنوعی از افراد این‌ها را اجرا می‌کنند. نمونه‌های SecureDrop در تحریریه‌های خبری سرویس onion هستند چون یک منبع خبری نباید مجبور باشد به DNS اعتماد کند. Debian آرشیو خودش را از طریق سرویس‌های onion آینه‌سازی می‌کند تا عمل به‌روزرسانی یک بسته به‌عنوان یک مقصد قابل‌مشاهده نباشد. چند پلتفرم مصرفی بسیار بزرگ هم یکی منتشر می‌کنند تا افرادی که در شبکه‌های تحت سانسور هستند بتوانند بدون آنکه یک IP مسدودشده وسط راه باشد به آن‌ها برسند. هیچ‌کدام از این‌ها عجیب نیست؛ این فقط یک لایه انتقال با مجموعه‌ای متفاوت از تضمین‌هاست.

چه چیزی را محافظت می‌کند، و چه چیزی را نمی‌تواند

تضمین این پروتکل محدود اما قوی است: لایه شبکه فاش نمی‌کند سرویس کجا اجرا می‌شود. مهاجمی که می‌تواند بخش بزرگی از اینترنت را زیر نظر داشته باشد هم باز نمی‌تواند آدرس شما را به یک ماشین مشخص تبدیل کند، چون اصلاً مرحله‌ای برای این تبدیل وجود ندارد که رصد شود. نمی‌شود آدرس را دست یک ارائه‌دهنده میزبانی داد و پرسید مال کدام مشتری است، چون سمت ارائه‌دهنده چیزی از آن نمی‌داند. اسکنرها نمی‌توانند سرویس را پیدا کنند، چون روی هیچ پورت عمومی‌ای پاسخ نمی‌دهد. و حمله‌ای که قرار است یک سایت معمولی را از شبکه بیرون بیندازد، هدفی برای نشانه‌گیری ندارد؛ برای همین این الگو در بحث‌های DDoS به همان اندازه بحث‌های حریم خصوصی دیده می‌شود.

هر چیزی بالاتر از لایه شبکه هنوز به عهده خودِ شماست که خرابش نکنید، و تاریخچه واقعی همین‌جاست. سرویس‌ها لو رفته‌اند چون برنامه یک stack trace حاوی نام میزبان واقعی چاپ کرده، چون همان وب‌سرور روی IP عمومی هم صفحه‌ای یکسان تحویل داده، چون گواهی دامنه دیگر همان اپراتور روی همان ماشین نصب بوده، چون یک تصویر مختصات GPS را در متادیتای خودش حمل می‌کرده، چون سرور ایمیلی فرستاده که از اینترنت باز عبور کرده، یا چون یک نقطه پایانی وضعیت که برای همه باز مانده آدرس خودِ سرور را فهرست کرده. Tor در تک‌تک این موارد کارش را درست انجام داده. آن کسی که رویش کار می‌کرده، نه.

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

راه‌اندازی سرویس: دو دستور و یک ری‌استارت

پیکربندی واقعاً کوچک است، چیزی که کسانی را که انتظار یک تشریفات پیچیده دارند غافلگیر می‌کند. دیمن tor را نصب کنید، سپس دو دستور به torrc اضافه کنید: یک HiddenServiceDir که مسیر پوشه‌ای را نام می‌برد که Tor آن را می‌سازد و مالکش می‌شود، و یک HiddenServicePort که پورت مجازی مورد استفاده تماس‌گیرنده‌ها را به آدرس محلی‌ای که برنامه شما روی آن گوش می‌دهد نگاشت می‌کند. ری‌استارت کنید؛ Tor یک جفت‌کلید ed25519 تولید می‌کند و آدرس شما را در یک فایل hostname داخل همان پوشه می‌نویسد.

خطچه کاری انجام می‌دهداگر آن را حذف کنید چه اشکالی پیش می‌آید
HiddenServiceDir /var/lib/tor/site/جایی که Tor کلیدها را نگه می‌دارد و آدرس را می‌نویسد؛ آن را با مُد 0700 می‌سازدمالکیت اشتباه یا مُدی که برای همه قابل خواندن باشد، Tor را از اجرا شدن باز می‌دارد
HiddenServicePort 80 127.0.0.1:8080درخواست‌کننده‌ها پورت 80 را روی آدرس onion می‌خواهند؛ Tor آن را به شنونده محلی شما هدایت می‌کنداشاره کردن آن به یک آدرس عمومی، سرویس را دوباره روی اینترنت باز افشا می‌کند
برنامه‌ای که به 127.0.0.1 متصل شدهفقط Tor می‌تواند به آن دسترسی داشته باشدهمان محتوا روی IP عمومی هم پاسخ می‌دهد و کل این تمرین بی‌فایده می‌شود
HiddenServiceVersion 3صریح است، هرچند نسخه 3 تنها نسخه باقی‌مانده استامروز هیچ اشکالی ندارد — نسخه 2 در سال 2021 از Tor حذف شد

رایج‌ترین اشتباه، دقیقاً همان ردیف سوم است. یک نصب پیش‌فرض وب‌سرور روی 0.0.0.0 گوش می‌دهد، یعنی آدرس IPv4 عمومی و معمولاً آدرس IPv6 هم. اگر یک سرویس onion جلوی آن قرار دهید، حالا همان بایت‌ها را در دو جا سرو می‌کنید، که یکی از آن‌ها توسط هر اسکنری در اینترنت ایندکس شده. هرکس که هش صفحه، فاوآیکون، ETag یا یک صفحه خطای متمایز را مقایسه کند، در چند ثانیه این دو را به هم پیوند می‌زند. فقط به 127.0.0.1 متصل شوید، و بعد به‌جای فرض کردن، آن را با ss -ltnp تأیید کنید — تأیید کردن پنج ثانیه طول می‌کشد، اما فرض کردن برای بعضی‌ها همه‌چیزشان را از بین برده.

پیش از هر کار دیگری، از hs_ed25519_secret_key در جایی رمزنگاری‌شده و خارج از خودِ ماشین نسخه پشتیبان بگیرید. این فایل مرتبط با آدرس نیست؛ خودِ آدرس است. اگر آن را از دست بدهید، آدرس برای همیشه از بین می‌رود، بدون امکان بازیابی و بدون هیچ راه چاره‌ای. اگر لو برود، فرد دیگری می‌تواند سرویسی راه بیندازد که به‌جای آدرس شما پاسخ می‌دهد و از نظر رمزنگاری از خودِ شما قابل تشخیص نیست. با آن مثل یک کلید امضا رفتار کنید، چون دقیقاً همین است — و اگر دیسکی که روی آن قرار دارد اجاره‌ای است، رمزنگاری آن دیسک گام همراه بدیهی است، البته با ملاحظاتی که همان راهنما توضیح می‌دهد.

بعد در ورودی را کاملاً ببندید. یک سرویس onion اصلاً به هیچ پورت ورودی‌ای نیاز ندارد — هر اتصالی که استفاده می‌کند، خودش آن را به‌صورت خروجی به داخل شبکه Tor باز کرده. می‌توانید در فایروال همه ترافیک ورودی را رد کنید و سرویس همچنان کاملاً درست کار می‌کند. تقریباً هیچ چیز دیگری که بتوانید میزبانی کنید چنین چیزی ارائه نمی‌دهد، و این کل دسته‌ای از حملاتی را که با یک پورت‌اسکن شروع می‌شوند حذف می‌کند. دسترسی مدیریتی خودتان را هم از طریق Tor برقرار کنید تا ماشین کلاً به اینترنت پاسخ ندهد.

آدرس‌های نسخه 3، پیشوندهای اختصاصی و مشکل فیشینگی که می‌سازند

اگر آموزشی که می‌خوانید از آدرس‌های 16 کاراکتری حرف می‌زند، دارد پروتکلی را توصیف می‌کند که دیگر وجود ندارد. سرویس‌های onion نسخه 2 از هش‌های 80 بیتی RSA-1024 استفاده می‌کردند که هم به‌اندازه کافی کوتاه بودند که جذاب باشند و هم به‌اندازه کافی ضعیف که مشکل‌ساز شوند؛ ضمن اینکه قابل شمارش هم بودند، چون هرکس یک رله دایرکتوری اجرا می‌کرد می‌توانست آدرس‌هایی را که از آن عبور می‌کردند جمع‌آوری کند. پروژه Tor برنامه زمانی کنارگذاری را در سال 2020 اعلام کرد، نسخه 2 را در سری 0.4.6 در ژوئیه 2021 غیرفعال کرد، و در اکتبر همان سال کد آن را کاملاً حذف کرد. آدرس‌های نسخه 3، 56 کاراکتری‌اند، بر پایه ed25519 ساخته شده‌اند، و دیگر از طریق رله‌های دایرکتوری نشت نمی‌کنند.

این طول، بهای همان امنیت است، و برای همین آدرس‌های اختصاصی (vanity) وجود دارند. ابزارهایی مثل mkp224o به‌صورت انبوه جفت‌کلید تولید می‌کنند و فقط آن‌هایی را نگه می‌دارند که آدرسشان با پیشوند انتخابی شما شروع شود. این کار هیچ چیزی را ضعیف نمی‌کند: شما کلید را محدود نمی‌کنید، بلکه گزینه‌ها را کنار می‌گذارید تا یکی از آن‌ها اتفاقی حروف مدنظرتان را رمزگذاری کند، و بازمانده دقیقاً به همان اندازه هر کلید دیگری قوی است. چیزی که هزینه می‌گیرد زمان است، و این هزینه نمایی است — هر کاراکتر اضافه، کار را 32 برابر می‌کند؛ پس یک پیشوند چهارکاراکتری روی یک لپ‌تاپ آنی است، شش یا هفت کاراکتر یعنی یک ماشین که ساعت‌ها کار کند، و ده کاراکتر یک پروژه جدی می‌شود. هیچ‌کس یک آدرس کامل 56 کاراکتری را brute-force نمی‌کند؛ کل نکته همین بزرگی فضای جست‌وجوست.

خطر واقعی، تصویر آینه‌ایِ همین ویژگی است. اگر یک پیشوند قابل‌تشخیص به کاربرانتان کمک کند شما را بشناسند، به فرد دیگری هم کمک می‌کند یک آدرس نزدیک به آن بسازد و روی یک صفحه فیشینگ بگذارد، چون آن هشت کاراکتری که یک انسان واقعاً می‌خواند تنها بخشی است که بررسی می‌کند. از آن همان‌طور دفاع کنید که همیشه از اثرانگشت کلیدها دفاع شده: آدرس کامل را در چند جای مستقل منتشر کنید، آن را با کلیدی که مردم از قبل دارند امضا کنید، اگر سایت کلیرنتی دارید آن را در هدر Onion-Location بگذارید، و صریحاً بگویید که هیچ‌وقت آدرس جدیدی را فقط در شبکه‌های اجتماعی اعلام نخواهید کرد. یک پیشوند اختصاصی یک ویژگی کاربردپذیری است، نه یک ابزار احراز هویت.

سطح نشتی‌هایی که واقعاً هویت سرویس‌ها را لو داده‌اند

این همان بخشی است که واقعاً اهمیت دارد. الگو در هر مورد مستندِ عمومی یکسان است: لایه شبکه دوام آورده، و چیزی بالاتر از آن به یک ماشین مشخص، یک فرد مشخص، یا یک دارایی مشخص دیگر اشاره کرده. بیشتر این موارد کسل‌کننده‌اند، همه‌شان را می‌شود در یک بعدازظهر بررسی کرد، و همین بررسی کردن است که کار اصلی است.

نشتیچطور پیدا می‌شودراه‌حل
همان برنامه که روی IP عمومی هم پاسخ می‌دهدهر دو را واکشی کنید و هش صفحه، فاوآیکون، ETag یا یک صفحه خطای متمایز را مقایسه کنیدفقط به 127.0.0.1 متصل شوید؛ با ss -ltnp تأیید کنید
یک هاست مجازی پیش‌فرض یا گواهی TLS روی آدرس عمومیداده‌های اسکن سراسر اینترنت، قابل جست‌وجو و آرشیوشده بر اساس تاریخهیچ شنونده‌ای روی رابط عمومی نباشد؛ فایروالی که ترافیک ورودی را رد کند
بنرهای سرور و صفحات خطای فریم‌ورکهدرهای پاسخ را بخوانید و عمداً یک خطای 500 ایجاد کنیدبنرهای نسخه را پنهان کنید، صفحات خطای دیباگ را با صفحات ایستا جایگزین کنید
URLهای مطلق که در قالب‌ها جاسازی شده‌اندHTML را بخوانید: یک هاستِ کلیرنت هاردکد شده کافی استهمه‌جا از URL نسبی استفاده کنید، یا یک base URL آگاه به هاست
درخواست‌های شخص ثالث: آنالیتیکس، فونت، آواتار، CDNصفحه را بارگذاری کنید و ببینید چه چیزی را واکشی می‌کندهر دارایی را خودتان میزبانی کنید؛ اینجا هیچ درخواست شخص ثالثی قابل قبول نیست
متادیتای تصویربلوک EXIF را بخوانید: شماره سریال دوربین و مختصات GPSدر زمان آپلود، سمت سرور و بدون استثنا متادیتا را حذف کنید
نقاط پایانی وضعیت که باز مانده‌اند/server-status را درخواست دهید و دیدگاه خودِ سرور از خودش را بخوانیدآن‌ها را غیرفعال کنید، یا به رابط loopback محدودشان کنید
ترافیک خروجی که هاست را شناسایی می‌کندایمیلی که از سرور خارج می‌شود، عامل مانیتورینگی که به خانه زنگ می‌زند، کرون‌جابی با یک API keyترافیک خروجی را ممیزی کنید، هرچه باید خارج شود را از مسیر Tor عبور دهید، و اصلاً ایمیلی نفرستید
یک کلید میزبان SSH که از ماشین دیگری دوباره استفاده شدهداده‌های اسکن بر اساس اثرانگشت کلید میزبان، دو ماشین را فوراً به هم پیوند می‌دهندبرای هر نمونه کلید تازه بسازید؛ به SSH فقط از طریق خودِ سرویس onion برسید
برچسب‌های زمانی و لوکِیلبرچسب‌های زمانی لاگ، سندهای تولیدشده، و یک روز کاری کاملاً مشخصدر UTC اجرا کنید؛ نگذارید برنامه یک منطقه زمانی محلی نمایش دهد

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

ممیزی را مثل یک فرد بیرونی انجام دهید، نه مثل خودِ اپراتور. سرویس را در Tor Browser روی ماشینی که هیچ‌وقت با این پروژه سروکار نداشته باز کنید، هر هدر پاسخ را بخوانید، عمداً یک خطا ایجاد کنید، سورس صفحه‌ای را که خودتان ننوشته‌اید ببینید، و پنل شبکه را زیر نظر بگیرید تا ببینید صفحه از جای دیگری چه چیزی واکشی می‌کند. بعد یک روز کامل روی سرور بنشینید و ببینید چه چیزی از آن خارج می‌شود. چیزی که در آن روز پیدا می‌کنید، کل نکته این راهنماست.

احراز هویت کلاینت: سرویسی که فقط عده‌ای مشخص به آن دسترسی دارند

حالتی وجود دارد که اکثر مردم حتی نمی‌دانند هست، و شیک‌ترین بخش این پروتکل هم همین است. با احراز هویت کلاینت، توصیف‌گری که سرویس شما منتشر می‌کند برای مجموعه‌ای از کلیدهای عمومی x25519 که خودتان تعیین می‌کنید رمزنگاری می‌شود. کلاینتی که کلید خصوصی متناظر را نداشته باشد، حتی نمی‌تواند توصیف‌گر را رمزگشایی کند، یعنی نمی‌تواند نقاط معرفی را بفهمد، یعنی نمی‌تواند وصل شود — و حتی نمی‌تواند تأیید کند که اصلاً چیزی آنجا هست. کلیدهای عمومی کلاینت‌ها را در یک پوشه authorized_clients کنار کلیدهای سرویس می‌گذارید، یک فایل برای هر کلاینت، و ری‌استارت می‌کنید.

این را با روش‌های معمولِ محدود کردن دسترسی مقایسه کنید. یک allowlist مبتنی بر IP نیازمند دانستن اینکه کاربرانتان کجا هستند است و سرویس را برای همه‌ی دیگران آماده اسکن‌شدن و اثرانگشت‌گیری روی اینترنت باقی می‌گذارد. احراز هویت پایه HTTP یک پیام ورود آنجا باقی می‌گذارد که تبلیغ می‌کند چیزی وجود دارد. یک VPN یک سیستم دوم کامل برای اجرا اضافه می‌کند، با آدرس خودش که باید افشا شود. احراز هویت کلاینت سرویس را از دید هرکسی که در فهرست نیست کاملاً حذف می‌کند، که ویژگی‌ای اساساً متفاوت است: نه یک درِ قفل‌شده، بلکه نبودِ یک در.

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

تأخیر، افزونگی و مصالحه‌های صادقانه

یک اتصال onion از شش رله عبور می‌کند: سه‌تا که کلاینت انتخاب کرده و سه‌تا که سرویس انتخاب کرده، و در وسط به هم می‌رسند. این بهای ندانستن هیچ‌کدام از دو طرف درباره طرف دیگر است، و این بها به‌صورت تأخیر بروز می‌کند نه پهنای باند — اولین بایت کند است، اما توان عملیاتی بعد از آن معمولاً خوب است. طراحی را متناسب با همین بسازید: رفت‌وبرگشت‌های کمتر، کش کردن تهاجمی، بدون زنجیره‌های پرحرفِ درخواست، بدون صفحه‌ای که پیش از رندر شدن به یازده زیرمنبع نیاز داشته باشد. سایتی که روی یک سرویس onion تجربه خوبی می‌دهد، معمولاً از اول هم خوب ساخته شده بوده.

اگر خودِ سرویس شما به ناشناسی مکانی نیازی ندارد — مثلاً یک پلتفرم عمومی بزرگ که صرفاً برای دسترسی کاربران تحت سانسور یک آدرس onion منتشر می‌کند — Tor حالتی به نام single onion service ارائه می‌دهد که در سمت سرویس فقط از یک گام مسیر استفاده می‌کند. این حالت تأخیر را تقریباً نصف می‌کند و صراحتاً از ناشناسیِ خودِ سرویس چشم‌پوشی می‌کند، و حتی نام دستور پیکربندی هم دقیقاً همین را می‌گوید. این پاسخ درست برای یک سازمان شناخته‌شده است و دقیقاً پاسخ اشتباه برای هرکسی که مکانش همان چیزی است که باید محافظت شود. آن را یا آگاهانه انتخاب کنید یا اصلاً انتخاب نکنید.

دغدغهگزینهچه هزینه‌ای داردچه زمانی درست است
تأخیرسرویس استاندارد شش‌گامیاولین بایت کند، اما توان عملیاتی خوبهمیشه، مگر آنکه ناشناسیِ خودِ سرویس واقعاً لازم نباشد
تأخیرسرویس onion تکی (یک گام در سمت سرویس)ناشناسی مکانی خودِ سرویس، به‌طور کاملسازمانی شناخته‌شده که آدرسی برای کاربران تحت سانسور منتشر می‌کند
افزونگیOnionBalance روی چند بک‌اندیک دیمن مدیریتی و مدیریت کلید روی هر بک‌اندهر چیزی که باید حتی حین بازسازی یک بک‌اند هم فعال بماند
قابل کشف بودن از سایت کلیرنت شماهدر Onion-Locationاین دو را عمداً و به‌طور علنی به هم پیوند می‌دهدوقتی پیوند دادن این دو مشکلی ندارد و ترافیک را می‌خواهید
مخاطب محدوداحراز هویت کلاینتتوزیع کلید به هر کلاینتپنل‌های مدیریتی، ابزارهای داخلی، مخاطبی قابل‌شمارش

افزونگی نیاز به یک توضیح دارد، چون روش ساده‌لوحانه شکست می‌خورد. نمی‌توانید فقط مواد کلید را روی یک ماشین دوم کپی کنید و هر دو را اجرا کنید — دو سرویس که برای یک آدرس یکسان توصیف‌گر منتشر می‌کنند بر سر دایرکتوری با هم رقابت می‌کنند و کلاینت‌ها به‌طور غیرقابل‌پیش‌بینی به یکی از آن‌ها می‌رسند. OnionBalance دقیقاً برای همین وجود دارد: یک نمونه front-end آدرس عمومی را نگه می‌دارد و توصیف‌گری منتشر می‌کند که به نقاط معرفیِ چند سرویس بک‌اند، هرکدام با کلید خودش، اشاره می‌کند. بک‌اندها را می‌شود یکی‌یکی بازسازی یا جابه‌جا کرد بدون آنکه آدرس هرگز تغییر کند.

اجرای یک سرویس onion در کنار یک سایت عادی

بسیاری از سرویس‌های onion فقط یک درِ ورودی دوم برای چیزی هستند که از قبل به‌طور عمومی وجود دارد، و این پروژه‌ای کاملاً متفاوت از سرویسی است که مکانش باید مخفی بماند. پیش از نوشتن هر خط پیکربندی تصمیم بگیرید کدام‌یک را می‌سازید، چون این دو هدف کاملاً مخالف هم می‌خواهند. اگر هدف مقاومت در برابر سانسور برای سایتی است که همه از قبل می‌دانند شما اداره‌اش می‌کنید، پیوند دادن این دو دقیقاً همان ویژگی مطلوب است: یک هدر Onion-Location روی سایت کلیرنت منتشر کنید تا Tor Browser به‌طور خودکار آدرس onion را به بازدیدکنندگان پیشنهاد دهد. اما اگر هدف این است که هیچ‌کس نداند سرویس کجا اجرا می‌شود، آن‌وقت هر پیوندی بین این دو یک نشتی است، و تعداد درستِ این پیوندها صفر است.

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

یک نکته کاربردی اگر تصمیم گرفتید این دو را پیوند بدهید: نشست‌ها و کوکی‌ها را به هر هاست محدود نگه دارید. کاربری که در سایت کلیرنت وارد شده و بعد از طریق آدرس onion می‌آید باید یک نشست تازه داشته باشد، نه یک نشست مشترک، وگرنه سازوکاری ساخته‌اید که این دو بازدید را برای هرکسی که یکی از آن‌ها را ببیند به هم مرتبط می‌کند. و به آدرس onion لینک‌های canonical مخصوص خودش را بدهید، تا سایت به‌اصطلاح از سرِ کمک، کاربر Tor Browser را به همان هاست کلیرنتی که عمداً از آن دوری کرده برنگرداند.

چیزی که سمتِ میزبانی واقعاً باید درست انجام دهد

نیازمندی‌ها غیرمعمول‌اند، و برای همین یک میزبان عمومی اغلب گزینه بدی است. شما به یک مسیر خروجیِ بدون مانع به شبکه Tor نیاز دارید، چون این تنها نوع اتصالی است که سرویس شما برقرار می‌کند؛ برخی ارائه‌دهنده‌ها ترافیک دایرکتوری و رلهٔ Tor را کاملاً فیلتر می‌کنند، و شما این را وقتی می‌فهمید که سرویستان هرگز توصیف‌گری منتشر نمی‌کند. به ارائه‌دهنده‌ای نیاز دارید که سیاست کاربرد قابل‌قبولش صراحتاً و کتبی درباره Tor صحبت کرده باشد، نه با سکوت، چون همین سکوت است که اولین بار که کسی درباره یک موضوع کاملاً بی‌ربط شکایت کند، به یک ایمیل قطع سرویس تبدیل می‌شود. نیازی به IP ثابت، دامنه، گواهی یا هیچ پورت ورودی‌ای ندارید — یعنی بیشتر آن چیزهایی که شرکت‌های میزبانی به‌عنوان مزیت رقابتی می‌فروشند، اینجا اصلاً بی‌ربط است.

پروفایل سوءاستفاده همان غافلگیری خوشایند ماجراست. یک نود خروجی (exit) از طرف غریبه‌ها به اینترنت باز وصل می‌شود و به همین دلیل شکایت جمع می‌کند؛ این همان معامله‌ای است که هست، و برای همین اکزیت‌ها به ارائه‌دهنده‌ای با موضع مستند نیاز دارند. یک سرویس onion دقیقاً برعکس عمل می‌کند: هر اتصالی ورودی از شبکه Tor است، هرگز از طرف کسی با اینترنت باز تماس نمی‌گیرد، و در نتیجه اساساً هیچ ایمیل سوءاستفاده‌ای تولید نمی‌کند. این بار کاری آرام‌تر از رلهٔ کناری‌اش، و بسیار آرام‌تر از یک وب‌سرور عمومی است.

در BitVPS، اجرای Tor به‌صورت کتبی مجاز است — رله، بریج، اکزیت و سرویس onion، همه به یک اندازه، با مستندسازی حالت اکزیت در صفحه abuse به‌جای واگذاشتن به شانس. صفحه میزبانی Tor اندازه‌گیری رله را پوشش می‌دهد؛ سرویس‌های onion سبک‌ترند. در عمل، یک پلن Growth با قیمت $13.50 با 4 vCPU، 8 گیگابایت RAM و آپلینک نامحدود، یک سرویس onion جدی را با جای کافی برای برنامه پشتش اجرا می‌کند، و یک پلن Starter با $8.50 برای یک سرویس کوچک کافی است. مکان را بر اساس موضع حقوقی‌اش انتخاب کنید نه تأخیرش: شش گام، تفاوت بین یک دیتاسنتر نزدیک و یک دیتاسنتر دور را تقریباً نامحسوس می‌کند.

صفحه شبکه ما ASN و پیرینگ را منتشر می‌کند، که اینجا به‌دلیلی غیرمستقیم اهمیت دارد. شما آدرسی را افشا نمی‌کنید، پس دلیل معمول اهمیت دادن به شبکه یک ارائه‌دهنده از بین می‌رود — اما میزبانی که زیرساخت خودش را علنی مستند می‌کند، همان میزبانی است که نوشته وقتی کسی درباره یک مشتری سؤال کند چه می‌کند، و واقعاً همین چیزی است که دارید می‌خرید.

مرز کجاست؟

ارزشش را دارد که درباره این موضوع صریح باشیم، چون این فناوری شهرتی دارد که با ترافیک واقعی‌اش هم‌خوانی ندارد. سرویس‌های onion یک لایه انتقال با یک ویژگی حریم خصوصی مشخص هستند، و کسانی که آن‌ها را اجرا می‌کنند اکثریت قریب‌به‌اتفاق‌شان کاملاً معمولی‌اند: تحریریه‌های خبری که گزارش می‌گیرند، یک آرشیو بسته که نمی‌خواهد لاگ کند کدام ماشین کدام به‌روزرسانی را گرفته، پروژه‌های پیام‌رسانی و خودمیزبانی، مردمی در کشورهایی که اینترنت معمولی در آن‌ها فیلتر است، و مدیرانی که فقط ترجیح می‌دهند رابط مدیریتی‌شان قابل‌اسکن نباشد. اجرای یک سرویس onion در اکثریت قریب‌به‌اتفاق حوزه‌های قضایی قانونی است، و این هیچ بیانیه‌ای درباره چیزی که میزبانی می‌کنید نیست.

چیزی که این فناوری نیست، تغییری در خودِ قوانین است. ارائه‌دهنده‌ای که اعلامیه‌های کپی‌رایت را نادیده می‌گیرد — و ما این کار را می‌کنیم، همان‌طور که آن راهنما توضیح می‌دهد — همچنان درباره محتوای سوءاستفاده جنسی از کودکان و تهدیدهای معتبر علیه افراد اقدام می‌کند، و سریع هم اقدام می‌کند: بازه زمانی اعلام‌شده ما برای این موارد چهار ساعت است، در برابر چهل‌وهشت ساعت برای همه‌چیز دیگر. این یک حفره در یک سیاست وگرنه بازِ ما نیست، خودِ سیاست همین است، و هیچ لایه انتقالی آن را تغییر نمی‌دهد. سیاست کاربرد قابل‌قبول کوتاه است و بهتر است پیش از ساختن بخوانیدش، نه بعدش.

نکته صادقانه دیگر این است که ناشناسی یک ویژگی سیستمی است، نه محصولی که بخرید. آدرس، ماشین را پنهان می‌کند؛ ولی رد پرداخت، رمز عبور تکراری، سبک نوشتار، دامنه‌ای که سال‌ها پیش با همان ایمیل ثبت کرده‌اید، یا اسکرین‌شاتی که مسیرهای فایل‌سیستم خودتان در آن است را پنهان نمی‌کند. اگر مدل تهدید جدی است، لایه انتقال آسان‌ترین بخش آن است و بخشی که کمترین زمان را رویش صرف خواهید کرد. راهنمای گسترده‌تر بقیه آن زنجیره را پوشش می‌دهد، و توضیح‌دهنده bulletproof hosting پادزهر مفیدی برای بازاریابی‌ای است که دور تا دور کل این موضوع را گرفته.

پاسخ‌های سریع

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

آیا راه‌اندازی یک سایت .onion قانونی است؟
در اکثریت قریب‌به‌اتفاق حوزه‌های قضایی، بله — یک سرویس onion یک لایه انتقال است، و اجرای آن به‌خودی‌خود بیشتر از اجرای یک وب‌سرور غیرقانونی نیست. تحریریه‌های خبری بزرگ، پروژه Debian و چند پلتفرم بزرگ آن‌ها را به‌طور علنی اجرا می‌کنند. آنچه منتشر می‌کنید تابع همان قانونی است که هر جای دیگری اعمال می‌شود، و تابع سیاست کاربرد قابل‌قبول ماست، که خودِ آدرس onion آن را تغییر نمی‌دهد.
آیا برای یک سرویس onion باید پورت ورودی‌ای باز کنم؟
نه، و این یکی از بهترین ویژگی‌های آن است. هر اتصالی که سرویس استفاده می‌کند، خودش آن را به‌صورت خروجی به داخل شبکه Tor باز کرده. می‌توانید فایروال را طوری تنظیم کنید که همه ترافیک ورودی را رد کند و سرویس همچنان کار می‌کند — که کل دسته حملاتی که با یک پورت‌اسکن شروع می‌شوند را حذف می‌کند. SSH خودتان را هم از طریق همان سرویس onion برقرار کنید تا ماشین کلاً به اینترنت پاسخ ندهد.
آیا کسی می‌تواند از روی آدرس .onion، آی‌پی واقعی سرور من را پیدا کند؟
از خودِ آدرس، نه — این یک کلید عمومی است و هیچ مرحله جست‌وجویی وجود ندارد که آن را به یک ماشین تبدیل کند. چیزی که در عمل سرویس‌ها را لو داده، همه‌چیز بالاتر از لایه شبکه بوده: همان برنامه که روی IP عمومی هم پاسخ می‌دهد، یک بنر سرور یا صفحه خطا، یک درخواست دارایی از شخص ثالث، متادیتای تصویر، یک نقطه پایانی وضعیت که باز مانده، یک کلید میزبان SSH که از ماشین دیگری استفاده مجدد شده، یا ایمیلی که از سرور خارج می‌شود. پروتکل دوام آورده؛ کاری که باید انجام شود همان استقرارهای اطراف آن است.
بر سر آدرس‌های قدیمی 16 کاراکتری .onion چه آمد؟
آن‌ها نسخه 2 بودند، بر پایه هش‌های RSA-1024، و دیگر وجود ندارند. پروژه Tor کنارگذاری آن را در سال 2020 اعلام کرد، نسخه 2 را در سری انتشار 0.4.6 در ژوئیه 2021 غیرفعال کرد و در اکتبر همان سال کد آن را حذف کرد. آدرس‌های نسخه 3، 56 کاراکتری‌اند، از ed25519 استفاده می‌کنند، و دیگر مثل آدرس‌های نسخه 2 توسط رله‌های دایرکتوری قابل جمع‌آوری نیستند. هر آموزشی که هنوز یک آدرس کوتاه نشان می‌دهد مربوط به پیش از همه این اتفاقات است و به‌طورکلی باید با شک به آن نگاه کرد.
آیا می‌توانم یک آدرس .onion اختصاصی با نام دلخواهم بگیرم؟
یک پیشوند، بله — ابزارهایی مثل mkp224o آن‌قدر جفت‌کلید تولید می‌کنند تا یکی حروف موردنظر شما را رمزگذاری کند. این کار کلید را ضعیف نمی‌کند، چون شما گزینه‌ها را کنار می‌گذارید نه اینکه محدودشان کنید، اما هزینه‌اش به ازای هر کاراکتر 32 برابر می‌شود: چهار کاراکتر آنی است، هفت کاراکتر روی یک ماشین سریع چند ساعت طول می‌کشد، ده کاراکتر یک پروژه جدی است. طرف دیگر ماجرا را هم در نظر داشته باشید: یک پیشوند قابل‌تشخیص برای فرد دیگری هم به همان اندازه آسان است که چیزی به‌قدر کافی شبیهش بسازد و یک خواننده را فریب دهد، پس آدرس کامل را در چند جا منتشر کنید و امضایش کنید.
آیا سرویس‌های onion از سایت‌های معمولی کندترند؟
از نظر تأخیر، بله؛ از نظر توان عملیاتی، معمولاً نه. یک اتصال از شش رله عبور می‌کند — سه‌تا که هر طرف انتخاب کرده — پس اولین بایت به‌طور محسوسی بیشتر طول می‌کشد، درحالی‌که سرعت انتقال بعد از آن معمولاً قابل‌قبول است. طراحی را متناسب با همین بسازید: کش کردن تهاجمی، پرهیز از زنجیره‌های طولانیِ درخواست‌های وابسته به هم، و کم نگه‌داشتن تعداد زیرمنبع‌ها. سایت‌هایی که تجربه بدی روی Tor دارند، معمولاً از اول هم سایت‌های سنگینی بوده‌اند.
آیا اجرای یک سرویس onion برایم شکایت سوءاستفاده به همراه دارد؟
اساساً هیچ، که کسانی را که این را با نودهای اکزیت یکی می‌گیرند غافلگیر می‌کند. یک اکزیت از طرف غریبه‌ها به اینترنت باز وصل می‌شود و در نتیجه شکایت جمع می‌کند. یک سرویس onion فقط و فقط اتصال‌هایی از داخل شبکه Tor دریافت می‌کند و هیچ‌وقت از طرف کسی با اینترنت باز تماس نمی‌گیرد، پس هیچ چیزی برای شکایت کردن یک شخص ثالث وجود ندارد. این بار کاری‌ای آرام‌تر از یک وب‌سرور عمومی معمولی برای میزبانی است.
آیا می‌توانم یک سرویس onion و یک سایت عادی را روی یک VPS اجرا کنم؟
از نظر فنی بله، و این طراحی درستی است وقتی قرار است این دو عمداً به هم پیوند بخورند — یک هدر Onion-Location منتشر کنید و بگذارید Tor Browser آدرس onion را به بازدیدکنندگان شما پیشنهاد دهد. اما وقتی قرار است سرویس onion غیرقابل‌پیوند باشد، این طراحی اشتباه است، چون یک پایگاه‌داده مشترک، یک کوکی نشست مشترک یا یک اشتباه در قالب کافی است این تفکیک را از بین ببرد. اگر این دو نباید به هم پیوند بخورند، آن‌ها را به‌عنوان دو استقرار روی دو ماشین اجرا کنید.
اعمال کنید

بارهای کاری که این راهنما برای آن‌ها اعمال می‌شود

هر کارت یک صفحه مخصوص بار کاری با توصیه‌های اندازه‌گیری و FAQ sysadmin باز می‌کند.

ادامه مطالعه

راهنماهای دیگر

مطالعه‌های همراه که از جایی که این یکی متوقف می‌شود ادامه می‌دهند.

اعتماد و قابلیت ردیابی آیا یک VPS ناشناس است؟ میزبانی کریپتویی واقعاً چقدر قابل ردیابی است

آیا یک VPS ناشناس است؟ میزبانی کریپتویی واقعاً چقدر قابل ردیابی است

نقشه‌ای صادقانه از آنچه یک میزبان بدون KYC می‌تواند و نمی‌تواند درباره‌ی شما ببیند — ردِ پرداخت، IP اتصال، محتوایی که سرو می‌کنید — و سه نوع جداگانه از «ناشناس‌بودن» که مردم آن‌ها را با هم قاطی می‌کنند.

9 دقیقه مطالعه راهنما را بخوانید
راهنمای عملیاتی چگونه در ۲۰۲۶ یک وب‌سایت را به‌صورت ناشناس میزبانی کنیم

چگونه در ۲۰۲۶ یک وب‌سایت را به‌صورت ناشناس میزبانی کنیم

A practical six-step playbook for standing up a website without leaving identifying metadata — host, domain, payment, network, content, and deploy hygiene.

12 دقیقه مطالعه راهنما را بخوانید
راهنمای دامنه ثبت دامنه به‌صورت ناشناس: WHOIS، ثبت‌کننده‌ها و لایه‌ای که هویتتان را لو می‌دهد

ثبت دامنه به‌صورت ناشناس: WHOIS، ثبت‌کننده‌ها و لایه‌ای که هویتتان را لو می‌دهد

ثبت دامنه به‌صورت ناشناس و حریم خصوصیِ WHOIS یعنی این: سروری آف‌شور و پرداخت‌شده با Monero می‌تواند خارج از دسترسِ همه باشد، اما دامنه‌تان فقط یک اجارهٔ قابل‌تمدید از شرکتی است که به دادگاهی در قارهٔ دیگر پاسخ‌گوست. اینکه WHOIS بعد از پنهان‌سازی هنوز چه چیزی ثبت می‌کند، چرا انتخابِ TLD یعنی انتخابِ یک حوزهٔ قضایی، تفاوتِ واقعیِ افزونه‌های حریمِ خصوصی، ثبتِ پروکسی و مالکیتِ امینی، با چه چیزی پرداخت کنید، و نشتی‌هایی — لاگ‌های گواهی، DNS منفعل، یک زیردامنهٔ آزمایشی از 2024 — که یک نامِ پاک را دوباره به یک شخص وصل می‌کنند.

18 دقیقه مطالعه راهنما را بخوانید
راهنمای گام‌به‌گام سخت‌سازی رمزنگاری کامل دیسک روی VPS: LUKS، باز کردن قفل از راه دور، و این‌که توقیف واقعاً چه چیزی را بازیابی می‌کند

رمزنگاری کامل دیسک روی VPS: LUKS، باز کردن قفل از راه دور، و این‌که توقیف واقعاً چه چیزی را بازیابی می‌کند

رمزنگاری دیسک یک سرور اجاره‌ای کاری ارزشمند است، اما همان کاری را که اکثر مردم فکر می‌کنند نمی‌کند. این‌که مرز بین یک ماشین خاموش و یک ماشین روشن کجا می‌افتد، چطور یک روت رمزنگاری‌شده نصب کنیم و آن را از طریق SSH باز کنیم، و این‌که یک دیسکِ ایمیج‌گرفته‌شده واقعاً چه چیزی را لو می‌دهد.

14 دقیقه مطالعه راهنما را بخوانید
اصطلاح‌شناسی میزبانیِ bulletproof چیست؟ (و چه تفاوتی با DMCA-ignored دارد)

میزبانیِ bulletproof چیست؟ (و چه تفاوتی با DMCA-ignored دارد)

اصطلاحِ «میزبانیِ bulletproof» به‌صورت سرسری و اغلب نادرست به کار برده می‌شود. این‌جا واقعاً منشأِ آن، این‌که چرا بیشترِ آگهی‌هایی که از آن استفاده می‌کنند کلاه‌برداری یا تله هستند، و مرزِ دقیق بین آن و میزبانیِ برون‌مرزیِ قانونیِ DMCA-ignored را می‌بینید.

8 دقیقه مطالعه راهنما را بخوانید
راهنمای گام‌به‌گام VPN VPN خودمیزبان روی یک VPS: WireGuard در ده دقیقه، و حریم خصوصی‌ای که واقعاً نصیبتان می‌کند

VPN خودمیزبان روی یک VPS: WireGuard در ده دقیقه، و حریم خصوصی‌ای که واقعاً نصیبتان می‌کند

یک VPN شما را پنهان نمی‌کند — فقط کسی را که می‌تواند زیر نظرتان بگیرد جابه‌جا می‌کند. اینکه وقتی خروجی، سرور خودتان باشد این معامله چقدر می‌ارزد، پانزده خط WireGuard که یک تونل را برپا می‌کند، و چهار نشتی که بی‌سروصدا دور همان تونلی که تازه ساخته‌اید می‌زنند.

15 دقیقه مطالعه راهنما را بخوانید

کافی خواندید؟ در ۶۰ ثانیه استقرار دهید

بدون تأیید ایمیل، بدون شناسه، بدون حساب. یک پلن انتخاب کنید، با هر ارز دیجیتالی پرداخت کنید، root بگیرید.