SYD-TOR(1) General Commands Manual SYD-TOR(1)

syd-tor - اجرای برنامه‌ها درون شبکه امن و ناشناس Tor با جعبه‌شنی syd

syd-tor [-dh] -i <socket-fd> [-o addr:port] [-u unix-sock]

سوکت شنیداری را از توصیف‌کننده فایل (fd) دریافت کرده و ترافیک را به addr:port یا سوکت دامین UNIX هدایت می‌کند.

آدرس خارجی باید یک آدرس IPv4 یا IPv6، یا مسیری به یک سوکت دامین UNIX باشد؛ مقدار پیش‌فرض آن 127.0.0.1:9050 است.

-h نمایش راهنما.
-d اجرا در حالت اشکال‌زدایی (debug) بدون محدودسازی (confinement).
این حالت تنها در صورتی مجاز است که Syd با ویژگی بار Cargo به نام trusted ساخته شده باشد.
-i socket-fd توصیف‌کننده فایل سوکت برای دریافت سوکت شنیداری از آن.
-o ext-addr تعیین آدرس خارجی برای هدایت ترافیک به آن.
آدرس می‌تواند یک آدرس IPv4/IPv6 در قالب "addr:port" باشد.
مقدار پیش‌فرض "127.0.0.1:9050" است.
-u unix-sock تعیین سوکت دامین UNIX برای هدایت ترافیک به آن.
این گزینه بر -o اولویت دارد.

ابزار syd-tor(1) برای استفاده به عنوان یک ابزار مستقل در نظر گرفته نشده است. زمانی که جعبه‌شنی پراکسی با "sandbox/proxy:on" فعال باشد، Syd در هنگام راه‌اندازی syd-tor(1) را فراخوانی می‌کند. برای اطلاعات بیشتر، بخش PROXY SANDBOXING را در صفحه راهنمای syd(7) ببینید. اگر قصد دارید از syd-tor(1) در پروژه شخصی خود استفاده کنید، یک جفت‌سوکت UNIX (socket-pair) ایجاد کنید، وارد یک فضای نام شبکه (network namespace) شوید، دستگاه loopback را فعال کنید، یک سوکت را با bind(2) به پورتی روی آن مقید کنید و سپس این توصیف‌کننده فایل سوکت را از طریق انتهای نوشتن جفت‌سوکت با گزینه SCM_RIGHTS در sendmsg(2) ارسال نمایید. در پایان، انتهای خواندن جفت‌سوکت را با آرگومان "-i <socket-fd>" به syd-tor(1) پاس دهید.

ابزار syd-tor(1) برای کارایی، امنیت و حریم خصوصی طراحی شده است و از epoll(7) حساس به لبه (edge-triggered) برای اعلان رویدادها و عملیات کاملاً ناهمگام (asynchronous) برای مدیریت هم‌زمان چندین اتصال بدون مسدودسازی (blocking) بهره می‌برد. این ابزار داده‌ها را با استفاده از انتقال بدون کپی (zero-copy) splice(2) منتقل می‌کند و بایت‌ها را مستقیماً میان توصیف‌کننده‌های فایل در فضای هسته جابه‌جا می‌سازد، بدون اینکه متن آشکار (plaintext) در فضای کاربری افشا شود. دو جفت لوله (pipe) ترافیک دوطرفه میان کلاینت و آدرس خارجی را انتقال می‌دهند. محیط اجرا با استفاده از seccomp(2) و landlock(7) محدود (confinement) شده است تا فراخوان‌های سیستمی و دسترسی به فایل‌ها را به حداقل میزان لازم کاهش دهد. در مقایسه با socksns که از زمان اجرای Tokio برای I/O ناهمگام استفاده می‌کند، syd-tor(1) برای کارایی و محدودسازی بر ابزارهای بنیادین در سطح هسته تکیه دارد.

ابزار syd-tor(1) چندین لایه محدودسازی را برای کاهش خطرات ناشی از اجرا در خارج از جعبه‌شنی Syd به کار می‌گیرد و از حملات احتمالی مرد میانی (MITM) علیه کانتینرها جلوگیری می‌کند. قابلیت‌های لینوکس (capabilities(7)) در مراحل آغازین سلب می‌شوند و ویژگی no-new-privs تنظیم می‌گردد تا هیچ قابلیت ناخواسته‌ای به درون فرایند نشت نکند. محدودیت‌های منابع RLIMIT_CORE، RLIMIT_FSIZE، RLIMIT_NPROC، RLIMIT_LOCKS، RLIMIT_MEMLOCK و RLIMIT_MSGQUEUE روی صفر تنظیم می‌شوند تا از تولید core dump و ایجاد فایل، فرایند، قفل یا صف پیام (msgqueue) درون حلقه اصلی جلوگیری به عمل آید. فیلترهای seccomp(2) طوری پیکربندی شده‌اند که فقط به فراخوان‌های سیستمی مورد نیاز اجازه اجرا دهند. فراخوان سیستمی socket(2) به یک دامنه، نوع و پروتکل منفرد محدود شده است، در حالی که connect(2) به یک نشانی حافظه منفرد محدود می‌شود و بدین ترتیب از اتصالات شبکه غیرمجاز جلوگیری می‌گردد. فراخوان‌های سیستمی sigaction(2) و rt_sigaction(2) اجازه نصب گرداننده‌های سیگنال جدید را ندارند و فراخوان rt_sigreturn(2) نیز مجاز نیست. فراخوان‌های سیستمی pipe2(2)، socket(2)، connect(2)، accept4(2) و shutdown(2) با کوکی‌های آرگومان فراخوان سیستمی محافظت می‌شوند که در زمان راه‌اندازی با استفاده از getrandom(2) به صورت تصادفی تعیین می‌گردند. برای اطلاعات بیشتر در مورد کوکی‌های آرگومان، به بخش Syscall Argument Cookies در صفحه راهنمای syd(7) مراجعه فرمایید. این محدودیت‌ها نیازمند فراخوان‌های سیستمی مستقیم سوکت هستند. این فراخوان‌ها بدون محدودیت در معماری‌های x86، m68k، mips، mipsel، ppc، ppc64، ppc64le، s390، s390x، sheb و sh که سوکت‌ها را از طریق socketcall(2) چندپخشی (multiplex) می‌کنند، مجاز هستند. در لینوکس ۶۴ بیتی نسخه 6.10 و بالاتر، ناحیه حافظه حاوی آدرس شبکه خارجی با استفاده از mseal(2) مهر و موم (seal) شده و حافظه پیرامون آن با صفحات محافظ (guard pages) محافظت می‌شود تا از سرریز یا خرابی داده‌های مجاور جلوگیری شود. حافظه قابل اجرا نیز غیرمجاز است تا از حملات تزریق کد جلوگیری به عمل آید. در صورت در دسترس بودن، landlock(7) و namespaces(7) با غیرمجاز کردن تمام دسترسی‌ها به سیستم‌فایل، محدودیت‌های بیشتری اعمال نموده و در نتیجه یک لایه امنیتی اضافی فراهم می‌سازند. دایرکتوری ریشه با استفاده از pivot_root(2) به /proc/self/fdinfo (یا در صورتی که آدرس خارجی یک سوکت UNIX باشد به /proc/self/fd) منتقل شده و ریشه قدیمی با MNT_DETACH جدا می‌شود، به گونه‌ای که هیچ مسیری به سیستم‌فایل میزبان در فضای نام mount باقی نمی‌ماند. مجموع این روش‌ها تضمین می‌کنند که حتی در صورت نفوذ به syd-tor(1)، دامنه اقدامات مخرب به طور چشمگیری محدود بوده و یکپارچگی و امنیت کلی سیستم حفظ خواهد شد.

SYD_TOR_DEBUG اجرا در حالت اشکال‌زدایی بدون محدودسازی، معادل با گزینه "-d".
این متغیر نادیده گرفته می‌شود مگر اینکه Syd با ویژگی کارگو trusted ساخته شده باشد.

فرایند syd-tor(1) به عنوان یک تک‌فرایند اجرا می‌شود و به دلیل تعداد توصیف‌کننده‌های فایل (FD) که به ازای هر اتصال باز می‌کند، ممکن است به حد مجاز توصیف‌کننده‌های فایل برسد. هر اتصال کلاینت شامل شش FD است: یکی برای سوکت کلاینت، یکی برای سوکت خارجی، و چهار عدد برای لوله‌های مورد استفاده در انتقال دوطرفه داده‌ها (دو لوله که هر کدام دارای یک FD ورودی و خروجی هستند). برای کاهش این مشکل، syd-tor(1) با بازنویسی حد نرم (soft limit) در هنگام راه‌اندازی، محدودیت file-max را روی حد سخت (hard limit) تنظیم می‌کند. با این حال، در برخی موارد ممکن است این اقدام کافی نباشد و تنظیم دستی محدودیت‌های FD لازم باشد.

syd(1), syd(2), syd(7)

صفحه خانگی syd: https://sydbox.exherbo.org

نگه‌داری شده توسط Ali Polatel. سورس‌های به‌روز را می‌توان در https://gitlab.exherbo.org/sydbox/sydbox.git و روی Radicle در rad:z38HCnbmcDegA2BMxuPaPRPMdp6wF یافت. اشکالات/وصله‌ها را می‌توان به https://gitlab.exherbo.org/groups/sydbox/-/issues ارسال کرد. گفتگو در #sydbox در Libera Chat یا در #sydbox:mailstation.de در Matrix.

2026-09-01