TORSOCKS(8) TORSOCKS(8)

torsocks - کتابخانه رهگیری اتصالات خروجی شبکه و هدایت آن‌ها از طریق پروکسی SOCKS تور (Tor)

کتابخانه Torsocks نمادهای libc مورد استفاده برای ارتباطات اینترنتی مانند فراخوانی سیستمی connect(2) را سربارگذاری (overload) می‌کند. با استفاده از این روش، کتابخانه همه‌چیز از جمله وضوح نام DNS انجام‌شده توسط برنامه را از طریق شبکه تور (Tor) ارسال می‌کند.

برای DNS، توابع خانواده gethostbyname(3) از طریق تور بازمسیردهی می‌شوند. لطفاً توجه داشته باشید که رابط‌های برنامه‌نویسی res_* در ISC در حال حاضر پشتیبانی نمی‌شوند.

در اینجا مثالی از نحوه استفاده از کتابخانه torsocks با ssh(1) آمده است:

$ LD_PRELOAD=/path/to/libtorsocks.so ssh -l kalexander -p 1234 prism.nsa.gov [...]

متغیر LD_PRELOAD را برای بارگذاری کتابخانه تنظیم کرده و سپس برنامه‌ها را به صورت عادی اجرا کنید. ساختار دستوری برای پیش‌بارگذاری اجباری کتابخانه در پوسته‌های مختلف در زیر مشخص شده است:

پوسته‌های Bash، Ksh و Bourne:

$ export LD_PRELOAD=/path/to/libtorsocks.so

پوسته C Shell:

$ setenv LD_PRELOAD=/path/to/libtorsocks.so

این فرآیند را می‌توان (برای کاربران پوسته‌های Bash، Bourne و Korn) با استفاده از اسکریپت torsocks(1) برای یک دستور منفرد یا برای تمامی دستورات در یک نشست پوسته خودکارسازی کرد.

همچنین می‌توانید torsocks(1) را به گونه‌ای تنظیم کنید که تمام فرآیندها به‌طور خودکار از آن استفاده کنند که یک پیکربندی بسیار مفید است. لطفاً برای اطلاعات بیشتر به مستندات اسکریپت torsocks مراجعه فرمایید.

این متغیر محیطی مسیر پیش‌فرض پرونده پیکربندی torsocks را لغو می‌کند. اگر برنامه‌ای که torsocks در آن تعبیه شده است دارای پرچم setuid باشد، این متغیر نادیده گرفته می‌شود.
سطح ثبت وقایع کتابخانه torsocks را فعال می‌کند. به‌طور پیش‌فرض، هشدارها و خطاها چاپ می‌شوند (سطح ۳). توجه داشته باشید که هر سطح شامل سطوح پایین‌تر نیز می‌شود، به جز سطح ۱ که هرگونه ثبت وقایع را غیرفعال می‌کند. (پیش‌فرض: ۳)
1 هیچ لاگی ثبت نمی‌شود.
2 پیام‌های خطا.
3 پیام‌های هشدار.
4 پیام‌های اعلان (Notice).
5 پیام‌های اشکال‌زدایی (Debug).
تعیین می‌کند که آیا زمان به هر خط لاگ اضافه شود یا خیر. (پیش‌فرض: ۱)
در صورت تنظیم، torsocks در پرونده تعیین‌شده توسط این متغیر لاگ خواهد انداخت. (پیش‌فرض: stderr)
تنظیم نام کاربری برای روش احراز هویت SOCKS5. گذرواژه نیز باید با متغیر زیر تنظیم شود.
تنظیم گذرواژه برای روش احراز هویت SOCKS5. نام کاربری نیز باید با متغیر بالا تنظیم شود.
تنظیم نشانی IP شبکه تور. نام‌های میزبان در اینجا پشتیبانی نمی‌شوند. (پیش‌فرض: 127.0.0.1)
تنظیم درگاه تور. (پیش‌فرض: 9050)
اجازه دادن به اتصالات ورودی به‌طوری‌که برنامه بتواند اتصالات را بپذیرد و به آن‌ها گوش دهد.
تنظیم خودکار نام کاربری و گذرواژه برای احراز هویت SOCKS5 بر اساس مقداری مبتنی بر PID/زمان جاری. نام کاربری و گذرواژه نباید تنظیم شده باشند.

برنامه Torsocks قادر به ارسال پرس‌وجوهای DNS از طریق تور نیست زیرا UDP پشتیبانی نمی‌شود؛ بنابراین هر سوکت UDP رد می‌شود. با این حال، پرس‌وجوهای DNS که قابل رهگیری باشند به تور ارسال شده و به فراخواننده بازگردانده می‌شوند.

برنامه Torsocks ممکن است در صورت بروز مشکل در پرونده پیکربندی یا مذاکره SOCKS با دیمن تور، پیام‌های خطا تولید کرده و آن‌ها را در stderr چاپ کند. متغیر محیطی TORSOCKS_LOG_LEVEL و همچنین گزینه پرونده لاگ این رفتار را کنترل می‌کنند. به یاد داشته باشید که این کتابخانه می‌تواند در خروجی خطای استاندارد (stderr) برنامه خروجی تولید کند.

تنها اتصالات خروجی TCP می‌توانند از طریق شبکه تور پروکسی شوند.

برنامه Torsocks تفکیک‌کننده نام libc را وادار می‌کند تا برای پرس‌وجوهای نام از TCP استفاده کند؛ این کار بدون توجه به اینکه DNS مورد پرس‌وجو محلی است یا خیر انجام می‌شود. این امر بار اضافی ایجاد می‌کند و فقط در صورت لزوم باید استفاده شود.

برنامه Torsocks از قابلیت‌های بارگذار پویای ELF برای رهگیری فراخوانی‌های پویای توابع از برنامه‌هایی که در آن‌ها تعبیه شده است استفاده می‌کند. در نتیجه، فایل‌های اجرایی غیر ELF یا فایل‌های اجرایی که مستقیماً با تله فراخوانی سیستمی (int 0x80) فراخوانی‌های سیستمی انجام می‌دهند پشتیبانی نمی‌شوند.

/etc/tor/torsocks.conf - پرونده پیکربندی پیش‌فرض torsocks

torsocks.conf(5), torsocks(1)

David Goulet <dgoulet@ev0ke.net>

August 24th, 2013