| sslsplit(1) | SSLsplit | sslsplit(1) |
نام (NAME)
sslsplit - رهگیری شفاف SSL/TLS
خلاصه دستور (SYNOPSIS)
sslsplit [-kCKqwWOPZdDgGsrRxeumjplLSFXYyTIMiab]
-c pem proxyspecs [...]
sslsplit [-kCKqwWOPZdDgGsrRxeumjplLSFXYyTIMiab] -c
pem -t dir proxyspecs [...]
sslsplit [-OPZwWdDgGsrRxeumjplLSFXYyTIMiab] -t dir
proxyspecs [...]
sslsplit [-kCKwWOPZdDgGsrRxeumjplLSFXYyTIMi] -f conffile
sslsplit -E
sslsplit -V
sslsplit -h
توضیحات (DESCRIPTION)
ابزار SSLsplit ابزاری برای حملات مرد میانی (MitM) علیه اتصالات شبکهای رمزنگاریشده با SSL/TLS است. این ابزار به منظور استفاده در جرمیابی شبکه، تحلیل امنیت برنامهها و آزمون نفوذپذیری طراحی شده است.
ابزار SSLsplit به گونهای طراحی شده است که اتصالاتی را که با استفاده از یک موتور ترجمه نشانی شبکه (NAT) به سمت آن بازهدایت شدهاند، به طور شفاف خاتمه دهد. سپس SSLsplit اتصال SSL/TLS را خاتمه داده و اتصال SSL/TLS جدیدی به نشانی مقصد اصلی برقرار میکند، در حالی که تمامی دادههای ردوبدلشده را ثبت مینماید. علاوه بر عملکرد مبتنی بر NAT، ابزار SSLsplit از مقصدهای ایستا و استفاده از نام سرور مشخصشده توسط SNI به عنوان مقصد بالادستی نیز پشتیبانی میکند. ابزار SSLsplit صرفاً یک پروکسی شفاف است و نمیتواند به عنوان یک پروکسی HTTP یا SOCKS که در مرورگر تنظیم میشود عمل کند. برای جزئیات بیشتر در مورد حالتهای مختلف عملکرد، بخشهای موتورهای نات (NAT ENGINES) و مشخصات پروکسی (PROXY SPECIFICATIONS) را در ادامه ببینید.
ابزار SSLsplit از اتصالات سادهٔ TCP، سادهٔ SSL، HTTP و HTTPS بر روی هر دو پروتکل IPv4 و IPv6 پشتیبانی میکند. این ابزار همچنین توانایی ارتقای پویای TCP ساده به SSL را به منظور پشتیبانی عمومی از SMTP STARTTLS و سازوکارهای ارتقای مشابه دارد. ابزار SSLsplit به طور کامل از Server Name Indication (SNI) پشتیبانی میکند و قادر است با کلیدهای RSA، DSA و ECDSA و مجموعههای رمزنگاری DHE و ECDHE کار کند. بسته به نسخهٔ OpenSSL، ابزار SSLsplit از SSL 3.0، TLS 1.0، TLS 1.1 و TLS 1.2 و به صورت اختیاری از SSL 2.0 نیز پشتیبانی میکند.
برای اتصالات SSL و HTTPS، ابزار SSLsplit گواهیهای X509v3 جعلی را به صورت بیدرنگ ایجاد و امضا میکند و مشخصات گواهی اصلی سرور از جمله موضوع DN، افزونهٔ subjectAltName و سایر ویژگیها را شبیهسازی مینماید. ابزار SSLsplit این قابلیت را دارد که به جای تولید گواهیهای جعلی، از گواهیهای موجود که کلید خصوصی آنها در دسترس است استفاده کند. SSLsplit از گواهیهای CN با پیشوند NULL پشتیبانی میکند، اما در غیر این صورت هیچگونه اکسپلویتی علیه آسیبپذیریهای خاص اعتبارسنجی گواهی در پشتههای SSL/TLS پیادهسازی نمیکند.
ابزار SSLsplit تعدادی سازوکار دفاعی در برابر سازوکارهایی که به طور معمول مانع از حملات مرد میانی میشوند یا آنها را دشوارتر میسازند، پیاده کرده است. این ابزار میتواند درخواستهای OCSP را به روشی عمومی رد کند. برای اتصالات HTTP و HTTPS، ابزار SSLsplit سرآیندها را دستکاری میکند تا از پینکردن کلید عمومی توسط سرور (HPKP) جلوگیری کند، محدودیتهای امنیت سختگیرانهٔ انتقال (HSTS) را بیاثر سازد، از اعمال شفافیت گواهی (Expect-CT) اجتناب ورزد و از جابهجایی به پروتکلهای QUIC/SPDY، HTTP/2 یا WebSockets جلوگیری نماید (Upgrade، Alternate Protocols). فشردهسازی، کدگذاریها و اتصال پایدار (keep-alive) در پروتکل HTTP غیرفعال میشوند تا گزارشها خواناتر باشند.
گزینههای گزارشگیری شامل فایلهای سنتی ثبت اتصال و محتوای SSLsplit و همچنین فایلهای PCAP و آینهسازی (mirroring) ترافیک رمزگشاییشده به یک رابط شبکه است. علاوه بر این، گواهیها، master secretها و اطلاعات فرآیندهای محلی نیز میتوانند ثبت شوند.
به منظور به حداکثر رساندن شانس تفکیک موفقیتآمیز یک اتصال، SSLsplit به طور پیشفرض گواهیهای سرور بالادستی را اعتبارسنجی نمیکند. در عوض، تمامی گواهیها از جمله گواهیهای خودامضاشده پذیرفته میشوند و در صورتی که نام میزبان مورد انتظار اعلامشده در SNI در گواهی سرور موجود نباشد، به گواهیهای جعلیِ پویا اضافه خواهد شد.
ابزار SSLsplit به طور خودکار هیچ ترافیک شبکهای را بازهدایت نمیکند. برای پیادهسازی عملی یک حمله، باید ترافیک را به سیستمی که sslsplit را اجرا میکند هدایت کنید. گزینههای پیش روی شما شامل اجرای sslsplit بر روی یک مسیریاب معتبر، جعل ARP (ARP spoofing)، جعل ND (ND spoofing)، مسمومسازی DNS (DNS poisoning)، راهاندازی یک نقطهٔ دسترسی سرکش (مثلاً با استفاده از حالت hostap)، کابلکشی مجدد فیزیکی، پیکربندی مخرب VLAN یا تزریق مسیر، ویرایش فایل /etc/hosts و موارد دیگر است.
گزینهها (OPTIONS)
- -a pemfile
- استفاده از گواهی کلاینت از pemfile هنگامی که سرور مقصد یک گواهی کلاینت درخواست میکند. -A pemfile استفاده از کلید خصوصی، گواهی و زنجیرهٔ گواهی از فایل PEM با نام pemfile به عنوان گواهی برگ (leaf certificate) به جای تولید گواهی برگ به صورت بیدرنگ. فایل PEM باید شامل یک کلید خصوصی منفرد، یک گواهی منفرد و به صورت اختیاری گواهیهای CA میانی و ریشه جهت استفاده به عنوان زنجیرهٔ گواهی باشد. هنگام استفاده از -t، ابزار SSLsplit ابتدا تلاش میکند از گواهی منطبقی که از certdir بارگذاری شده است استفاده کند. اگر -t نیز استفاده شود و یک اتصال با هر گواهی در دایرکتوری مشخصشده با گزینهٔ -t مطابقت داشته باشد، آن گواهی منطبق استفاده خواهد شد و نسبت به گواهی مشخصشده با -A اولویت خواهد داشت.
- -b pemfile
- استفاده از کلید خصوصی کلاینت از pemfile هنگامی که سرور مقصد یک گواهی کلاینت درخواست میکند.
- -c pemfile
- استفاده از گواهی CA از pemfile برای امضای گواهیهای جعلیِ ساختهشده به صورت بیدرنگ. اگر pemfile همچنین حاوی کلید خصوصی منطبق CA باشد، آن نیز بارگذاری میشود، در غیر این صورت باید با گزینهٔ -k ارائه شود. اگر pemfile همچنین حاوی پارامترهای گروه دیفی-هلمن (Diffie-Hellman) باشد، آنها نیز بارگذاری میشوند، در غیر این صورت میتوان آنها را با گزینهٔ -g ارائه کرد. اگر -t نیز داده شده باشد، SSLsplit تنها زمانی گواهی جعلی ایجاد میکند که هیچ گواهی منطبقی در دایرکتوری گواهی ارائهشده وجود نداشته باشد.
- -C pemfile
- استفاده از گواهیهای CA موجود در pemfile به عنوان گواهیهای اضافه در زنجیرهٔ گواهی. این گزینه در صورتی لازم است که CA مشخصشده با -k و -c یک زیر-مرجع (sub-CA) باشد، که در این حالت تمامی گواهیهای CA میانی و گواهی CA ریشه باید در زنجیرهٔ گواهی گنجانده شوند.
- -d
- جدا شدن از TTY و اجرا به عنوان دیمن (daemon)، و ثبت پیامهای خطا در syslog به جای خروجی خطای استاندارد.
- -D
- اجرا در حالت اشکالزدایی (debug) و ثبت مقادیر زیادی از اطلاعات اشکالزدایی در خروجی خطای استاندارد. این گزینه همچنین اجرای پیشزمینه را تحمیل کرده و نمیتواند همراه با -d استفاده شود.
- -e engine
- استفاده از engine به عنوان موتور NAT پیشفرض برای proxyspecs فاقد موتور NAT صریح، نشانی مقصد ایستا یا حالت SNI. engine میتواند هر یک از موتورهای NAT پشتیبانیشده توسط سیستم باشد، همانطور که توسط -E بازگردانده میشود.
- -E
- فهرست کردن تمامی موتورهای NAT پشتیبانیشده و موجود در سیستم و سپس خروج. برای فهرستی از موتورهای NAT که در حال حاضر توسط SSLsplit پشتیبانی میشوند، بخش موتورهای نات (NAT ENGINES) را ببینید.
- -f conffile
- خواندن پیکربندی از conffile.
- -F logspec
- ثبت محتوای اتصال در فایلهای گزارش جداگانه با مشخصات مسیر دادهشده (بخش مشخصات گزارش (LOG SPECIFICATIONS) را در ادامه ببینید). برای هر اتصال، یک فایل گزارش نوشته خواهد شد که شامل دادههای ارسالی در هر دو جهت خواهد بود. اطلاعات مربوط به اتصال فقط در نام فایل گنجانده میشود. تنها یکی از گزینههای -F، -L و -S میتواند استفاده شود (گزینهٔ آخر اعمال میشود).
- -g pemfile
- استفاده از پارامترهای گروه دیفی-هلمن از pemfile برای مجموعههای رمزنگاری دیفی-هلمن کوتاهعمر (EDH/DHE). اگر -g داده نشود، SSLsplit ابتدا تلاش میکند پارامترهای DH را از فایلهای PEM ارائهشده توسط -K، -k یا -c بارگذاری کند. اگر هیچ پارامتر DH در فایلهای کلید یافت نشود، پارامترهای گروه پیشساخته به طور خودکار استفاده میشوند. گزینهٔ -g تنها در صورتی در دسترس است که SSLsplit با نسخهای از OpenSSL ساخته شده باشد که از مجموعههای رمزنگاری دیفی-هلمن پشتیبانی کند.
- -G curve
- استفاده از خم نامبرده با curve برای مجموعههای رمزنگاری دیفی-هلمن خم بیضوی کوتاهعمر (ECDHE). اگر -G داده نشود، یک خم پیشفرض (prime256v1) به طور خودکار استفاده خواهد شد. گزینهٔ -G تنها در صورتی در دسترس است که SSLsplit با نسخهای از OpenSSL ساخته شده باشد که از مجموعههای رمزنگاری دیفی-هلمن خم بیضوی پشتیبانی کند.
- -h
- نمایش راهنمای استفاده و خروج.
- -i
- یافتن فرآیند محلی مالک اتصال برای هر اتصال. این گزینه اطلاعات فرآیند نظیر pid، مالک:گروه (owner:group) و مسیر فایل اجرایی را برای اتصالاتی که از همان سیستم SSLsplit سرچشمه میگیرند در دسترس گزارش اتصال قرار داده و دستورالعملهای مشخصه مسیر مربوطه در -F را فعال میسازد. گزینهٔ -i در Mac OS X و FreeBSD موجود است؛ پشتیبانی از سایر پلتفرمها هنوز پیادهسازی نشده است..TP -I if آینهکردن (Mirror) محتوای اتصال به صورت بستههای شبیهسازیشده به رابط if با نشانی مقصد مشخصشده توسط -T. اگر SSLsplit بدون پشتیبانی از آینهکردن کامپایل شده باشد، این گزینه در دسترس نخواهد بود.
- -j jaildir
- تغییر دایرکتوری ریشه به jaildir با استفاده از chroot(2) پس از باز کردن فایلها. توجه داشته باشید که این کار بر proxyspecsهای sni تأثیر میگذارد. بسته به سیستمعامل شما، برای اینکه تحلیل نام کار کند، لازم است فایلهایی مانند /etc/resolv.conf را به jaildir رونوشت کنید. استفاده از proxyspecهای sni به تحلیل نام وابسته است. برخی سیستمعاملها نیازمند وجود گرههای دستگاهی ویژه مانند /dev/null درون زندان (jail) هستند. برای جزئیات بیشتر، مستندات سیستم خود را بررسی کنید.
- -k pemfile
- استفاده از کلید خصوصی CA از pemfile برای امضای گواهیهای جعلشده به صورت درلحظه (on-the-fly). اگر pemfile حاوی گواهی CA منطبق نیز باشد، آن هم بارگذاری میشود؛ در غیر این صورت باید با -c ارائه گردد. اگر pemfile همچنین حاوی پارامترهای گروه Diffie-Hellman باشد، آنها نیز بارگذاری میشوند؛ در غیر این صورت میتوان آنها را با -g مشخص کرد. اگر -t نیز داده شده باشد، SSLsplit تنها زمانی اقدام به جعل گواهی میکند که هیچ گواهی منطبقی در دایرکتوری گواهی ارائهشده وجود نداشته باشد.
- -K pemfile
- استفاده از کلید خصوصی از pemfile برای گواهیهای برگ (leaf certificates) جعلشده به صورت درلحظه. اگر -K داده نشود، SSLsplit یک کلید تصادفی RSA با طول ۲۰۴۸ بیت تولید خواهد کرد.
- -l logfile
- ثبت لاگ اتصالات در logfile به صورت یک خط به ازای هر اتصال، شامل نشانیها، درگاهها و در صورت وجود، برخی اطلاعات HTTP و SSL. ارسال سیگنال SIGUSR1 باعث بازگشایی مجدد logfile خواهد شد.
- -L logfile
- ثبت محتوای اتصال در logfile. لاگ محتوا شامل قالبی قابلتجزیه به همراه دادههای منتقلشده خواهد بود که سرآیندهایی برای شناسایی اتصال و طول دادههای هر قطعهٔ ثبتشده در ابتدای آن قرار دارد. ارسال سیگنال SIGUSR1 باعث بازگشایی مجدد logfile خواهد شد. تنها یکی از گزینههای -F، -L و -S میتواند استفاده شود (آخرین گزینه اعمال میگردد).
- -m
- هنگام کاهش امتیازها با استفاده از -u، گروه اصلیِ هدف را با تنظیم روی group بازنویسی میکند.
- -M logfile
- ثبت کلیدهای اصلی (master keys) در logfile در قالب SSLKEYLOGFILE طبق تعریف موزیلا. ثبت کلیدهای اصلی در این قالب، امکان رمزگشایی ترافیک SSL/TLS را با استفاده از Wireshark فراهم میسازد. توجه داشته باشید که برخلاف مرورگرهایی که این قابلیت را پیادهسازی کردهاند، تنظیم متغیر محیطی SSLKEYLOGFILE هیچ تأثیری بر SSLsplit ندارد. ارسال سیگنال SIGUSR1 باعث بازگشایی مجدد logfile خواهد شد.
- -O
- رد کردن تمام درخواستهای پروتکل برخط وضعیت گواهی (OCSP) روی تمام proxyspecs و برای همه کارسازهای OCSP با پاسخ OCSP از نوع tryLater، که باعث میشود کلاینتهای OCSP موقتاً حتی گواهیهای ابطالشده را نیز بپذیرند. درخواستهای HTTP در صورتی به عنوان درخواستهای OCSP تلقی میشوند که متد GET باشد و URI حاوی یک ساختار نحوی معتبر OCSPRequest ASN.1 قابلتجزیه توسط OpenSSL باشد، یا اینکه متد POST بوده و Content-Type برابر با application/ocsp-request باشد. برای مؤثر بودن این حالت، SSLsplit باید ترافیک ارسالی به درگاه مورد استفاده توسط کارساز OCSP را مدیریت کند. به طور خاص، SSLsplit باید طوری پیکربندی شود که ترافیک تمام درگاههای مورد استفاده توسط کارسازهای OCSP گواهیهای هدف در certdir مشخصشده با -t را دریافت نماید.
- -p pidfile
- نوشتن شناسه فرایند (PID) در pidfile و خودداری از اجرا در صورتی که pidfile از پیش توسط فرایند دیگری در حال استفاده باشد.
- -P
- عبور مستقیم (Passthrough) اتصالات SSL/TLS که امکان شکافتن آنها وجود ندارد، به جای قطع کردن (drop) آنها. اتصالات زمانی شکافته نمیشوند که گزینههای -c و -k داده نشده باشند و سایت با هیچیک از گواهیهای بارگذاریشده از طریق -t تطابق نداشته باشد، یا اینکه اتصال به کارساز اصلی خطاهای SSL/TLS صادر کند. به طور مشخص، این حالت زمانی رخ میدهد که سایت درخواست گواهی کلاینت کند. در این موقعیتها، عبور مستقیم با -P منجر به ارائه خدمات بدون وقفه به کلاینتها میشود، در حالی که در صورت لزوم جلوگیری از اتصالات نظارتنشده، قطع کردن اتصال جایگزین امنتری است. حالت عبور مستقیم در حال حاضر روی خطاهای SSL/TLS در اتصال از سمت کلاینت اعمال نمیشود، زیرا تلاش مجدد برای اتصال از کلاینت به سادگی ممکن نیست. به طور مشخص، گزینه -P در حال حاضر برای کلاینتهایی که گواهیهای جعلی را نمیپذیرند کار نمیکند.
- -q crlurl
- تنظیم نقطه توزیع لیست ابطال گواهی (CDP) به نشانی crlurl روی گواهیهای برگ جعلشده. برخی کلاینتها، نظیر برخی برنامههای .NET، گواهیهایی را که فاقد CDP باشند رد میکنند. هنگام استفاده از -q، باید یک CRL خالی که توسط گواهی و کلید CA ارائهشده با -c و -k امضا شده است ایجاد کرده و آن را در crlurl در دسترس قرار دهید.
- -r proto
- اجبار نسخه پروتکل SSL/TLS در هر دو سمت کلاینت و کارساز به proto از طریق انتخاب سازنده متد OpenSSL مربوطه به جای SSLv23_method() پیشفرض که از تمام نسخههای پروتکل پشتیبانی میکند. این گزینه هنگام تحلیل ترافیک به کارسازی که فقط از نسخه خاصی از SSL/TLS پشتیبانی میکند و مذاکره پروتکل مناسبی را پیادهسازی نکرده است، کاربرد دارد. بسته به گزینههای ساخت و نسخه OpenSSL مورد استفاده، مقادیر زیر برای proto پذیرفته میشوند: ssl2، ssl3، tls10، tls11 و tls12. توجه داشته باشید که پشتیبانی از SSL 2.0 به طور پیشفرض کامپایل نشده است، زیرا برخی کارسازها پیامهای SSL 2.0 Client Hello را به درستی پردازش نمیکنند.
- -R proto
- غیرفعال کردن نسخه پروتکل SSL/TLS به نام proto در هر دو سمت کلاینت و کارساز با از کار انداختن پروتکلهای مربوطه در OpenSSL. برای غیرفعال کردن چند نسخه پروتکل، میتوان گزینه -R را چند بار مشخص کرد. اگر -r نیز داده شده باشد، غیرفعال کردن سایر نسخههای پروتکل هیچ تأثیری نخواهد داشت. غیرفعال کردن نسخههای پروتکل هنگام تحلیل ترافیک به کارسازی که برخی نسخههای پروتکل را به درستی مدیریت نمیکند، یا برای بررسی رفتار با نسخههای مختلف پروتکل مفید است. بسته به گزینههای ساخت و نسخه OpenSSL مورد استفاده، مقادیر زیر برای proto پذیرفته میشوند: ssl2، ssl3، tls10، tls11 و tls12. توجه داشته باشید که پشتیبانی از SSL 2.0 به طور پیشفرض کامپایل نشده است، زیرا برخی کارسازها پیامهای SSL 2.0 Client Hello را به درستی پردازش نمیکنند.
- -s ciphers
- استفاده از مشخصات رمزهای (ciphers) OpenSSL برای اتصالات SSL/TLS کارساز و کلاینت. اگر -s داده نشود، فهرست رمزهای ALL:-aNULL استفاده میشود. معمولاً پیادهسازیهای SSL/TLS امنترین مجموعههای رمز را انتخاب میکنند، نه سریعترین آنها را. با تعیین یک فهرست رمز مناسب در OpenSSL، میتوان مجموعه رمزها را به الگوریتمهای سریع محدود کرد، یا مجموعههای رمز eNULL را افزود. توجه داشته باشید برای اینکه اتصالات با موفقیت برقرار شوند، مجموعههای رمز SSLsplit باید حداقل شامل یک مجموعه رمز باشند که هم توسط کلاینت و هم توسط کارساز هر اتصال پشتیبانی شود. برای جزئیات بیشتر درباره چگونگی ساخت فهرستهای رمز OpenSSL، به ciphers(1) مراجعه کنید.
- -S logdir
- ثبت محتوای اتصال در فایلهای لاگ جداگانه ذیل logdir. برای هر اتصال، یک فایل لاگ نوشته خواهد شد که شامل دادههای منتقلشده در هر دو جهت است. اطلاعات مربوط به اتصال فقط در نام فایل گنجانده میشود. تنها یکی از گزینههای -F، -L و -S میتواند استفاده شود (آخرین گزینه اعمال میگردد).
- -t certdir
- استفاده از کلید خصوصی، گواهی و زنجیره گواهی از فایلهای PEM موجود در certdir برای اتصالات به نامهای میزبان منطبق با گواهیهای مربوطه، به جای استفاده از گواهیهای جعلشده به صورت درلحظه. یک فایل PEM منفرد باید حاوی یک کلید خصوصی، یک گواهی، و در صورت نیاز گواهیهای میانی و ریشه CA جهت استفاده به عنوان زنجیره گواهی باشد. هنگام استفاده از -t، ابتدا SSLsplit تلاش میکند از گواهی منطبق بارگذاریشده از certdir استفاده کند. اگر -A نیز داده شده باشد، در صورتی که تطابقی در certdir یافت نشود، کلید، گواهی و زنجیره گواهی پیشفرض از فایل PEM ارائهشده با گزینه -A استفاده میشود. در غیر این صورت، اگر گزینههای -c و -k نیز داده شده باشند، برای سایتهایی که با هیچیک از نامهای مشترک (Common Names) در گواهیهای بارگذاریشده از certdir مطابقت ندارند، گواهیها به صورت درلحظه جعل خواهند شد. در غیر این صورت، اتصالاتی که با هیچ گواهی تطابق نداشته باشند قطع میشوند، یا در صورت تعیین -P، بدون شکافتن SSL/TLS به صورت مستقیم عبور داده خواهند شد.
- -T addr
- آینهکردن محتوای اتصال به صورت بستههای شبیهسازیشده به نشانی مقصد addr روی رابط مشخصشده با -I. در حال حاضر فقط نشانیهای مقصد IPv4 پشتیبانی میشوند. اگر SSLsplit بدون پشتیبانی از آینهکردن کامپایل شده باشد، این گزینه در دسترس نخواهد بود.
- -u user
- کاهش امتیازات پس از باز کردن سوکتها و فایلها از طریق تنظیم شناسههای کاربری واقعی، مؤثر و ذخیرهشده روی user و بارگذاری گروههای اصلی و فرعی مربوطه. اگر -u داده نشود، SSLsplit در صورت نابرابری EUID با UID (سناریوی بیت setuid)، امتیازات را به UID ذخیرهشده کاهش میدهد، یا در صورت اجرا با امتیازات کامل root (یعنی EUID == UID == 0)، آن را به nobody تنزل خواهد داد. کاربر user باید مجوز برقراری اتصالات خروجی TCP و در برخی پیکربندیها، انجام تحلیل DNS را داشته باشد. کاهش امتیازات موجب فعالسازی جداسازی امتیاز (privilege separation) میشود که برای برخی گزینهها مانند فایلهای لاگ جداگانه به ازای هر اتصال، تأخیر به همراه دارد. با استفاده از -u root، میتوان SSLsplit را بدون کاهش امتیازات به عنوان کاربر ریشه اجرا کرد. به دلیل وجود یک باگ در نرمافزارهای شرکت اپل، -u نمیتواند همراه با proxyspecهای pf در Mac OS X استفاده شود.
- -x engine
- استفاده از موتور (engine) نرمافزار OpenSSL با شناسه engine به عنوان موتور پیشفرض. موتور باید در اکوسیستم OpenSSL تحت شناسه تعیینشده در دسترس باشد؛ به این معنی که باید از پیکربندی سراسری OpenSSL بارگذاری شده باشد. اگر engine یک مسیر مطلق باشد، به عنوان مسیر کتابخانه پیوند پویای موتور تفسیر شده و صرف نظر از پیکربندی سراسری OpenSSL، از طریق مسیر بارگذاری خواهد شد. این گزینه تنها در صورتی در دسترس است که برنامه در برابر نسخهای از OpenSSL با قابلیت پشتیبانی از engine کامپایل شده باشد.
- -X pcapfile
- ثبت محتوای اتصال در pcapfile در قالب PCAP، همراه با سرآیندهای شبیهسازیشده TCP، IP و Ethernet. ارسال سیگنال SIGUSR1 باعث بازگشایی مجدد pcapfile خواهد شد. تنها یکی از گزینههای -X، -Y و -y میتواند استفاده شود (آخرین گزینه اعمال میگردد).
- -Y pcapdir
- ثبت محتوای اتصال در فایلهای PCAP جداگانه ذیل pcapdir. برای هر اتصال، یک فایل PCAP مجزا نوشته خواهد شد. تنها یکی از گزینههای -X، -Y و -y میتواند استفاده شود (آخرین گزینه اعمال میگردد).
- -y pcapspec
- ثبت محتوای اتصال در فایلهای PCAP جداگانه با الگوی مسیر مشخصشده (بخش «مشخصات لاگ» در ادامه را ببینید). برای هر اتصال، یک فایل PCAP جداگانه نوشته خواهد شد. تنها یکی از گزینههای -X، -Y و -y میتواند استفاده شود (آخرین گزینه اعمال میگردد).
- -V
- نمایش نسخه و اطلاعات ویژگیهای کامپایلشده و خروج از برنامه..TP -w gendir کلیدها و گواهیهای تولیدشده را در فایلهای جداگانه در gendir مینویسد. برای کلیدها، شناسهٔ کلید به عنوان نام فایل استفاده میشود که شامل درهمسازی SHA-1 از رشتهٔ بیتی ASN.1 کلید عمومی است، همانطور که توسط افزونهٔ subjectKeyIdentifier در گواهیها ارجاع داده شده است. برای گواهیها، اثرانگشتهای SHA-1 گواهی اصلی و گواهی استفادهشده (جعلی) ترکیب میشوند تا نام فایل را تشکیل دهند. توجه داشته باشید که فقط گواهیهای بهتازگی تولیدشده روی دیسک نوشته میشوند.
- -W gendir
- مشابه -w، اما همچنین گواهیهای اصلی و گواهیهایی را که بهتازگی تولید نشدهاند (مانند مواردی که از طریق -t بارگذاری شدهاند) مینویسد.
- -Z
- فشردهسازی SSL/TLS را در تمام اتصالها غیرفعال میکند. این گزینه زمانی مفید است که عامل محدودکنندهٔ شما CPU باشد، نه پهنای باند شبکه. گزینهٔ -Z تنها در صورتی در دسترس است که SSLsplit در برابر نسخهای از OpenSSL کامپایل شده باشد که از غیرفعالسازی فشردهسازی پشتیبانی کند.
مشخصات پراکسی (PROXY SPECIFICATIONS)
مشخصات پراکسی (proxyspecs) شامل نوع اتصال، آدرس شنود و آدرس هدایتِ ایستا (static forward) یا سازوکار تفکیک آدرس (موتور NAT، جستجوی DNS مبتنی بر SNI) است:
https listenaddr port [nat-engine|fwdaddr
port|sni port]
ssl listenaddr port [nat-engine|fwdaddr
port|sni port]
http listenaddr port [nat-engine|fwdaddr port]
tcp listenaddr port [nat-engine|fwdaddr port]
autossl listenaddr port [nat-engine|fwdaddr
port]
- https
- رهگیری SSL/TLS به همراه رمزگشایی پروتکل HTTP، از جمله حذف هدرهای پاسخ HPKP، HSTS، Upgrade و Alternate Protocol. این حالت در حال حاضر WebSockets و HTTP/2 را متوقف میکند.
- ssl
- رهگیری SSL/TLS بدون رمزگشایی پروتکل لایههای پایینتر؛ با محتوای رمزگشاییشدهٔ اتصال به عنوان یک جریان نامفهوم (مات) از بایتها رفتار شده و تغییری در آن ایجاد نمیشود.
- http
- اتصال TCP ساده بدون SSL/TLS، به همراه رمزگشایی پروتکل HTTP، از جمله حذف هدرهای پاسخ HPKP، HSTS، Upgrade و Alternate Protocol. این حالت در حال حاضر WebSockets و HTTP/2 را متوقف میکند.
- tcp
- اتصال TCP ساده بدون SSL/TLS و بدون هرگونه رمزگشایی پروتکل لایههای پایینتر؛ با محتوای رمزگشاییشدهٔ اتصال به عنوان یک جریان نامفهوم از بایتها رفتار شده و تغییری در آن ایجاد نمیشود.
- autossl
- اتصال TCP ساده تا زمانی که پیام Client Hello مربوط به SSL/TLS در جریان بایتها ظاهر شود، سپس ارتقای خودکار به رهگیری SSL/TLS صورت میگیرد. این ویژگی یک پشتیبانی عمومی و مستقل از پروتکل از STARTTLS است که ممکن است به اشتباه بر روی توالیهای بایتی مشابه پیامهای Client Hello فعال شود، حتی اگر هیچ دستور واقعیِ STARTTLS صادر نشده باشد.
- listenaddr port
- آدرس IPv4 یا IPv6 و پورت یا نام سرویس برای شنود. این همان آدرس و پورتی است که موتور NAT باید اتصالها را به آن بازهدایت کند.
- nat-engine
- موتور NAT برای پرسوجو جهت تعیین آدرس و پورت مقصد اصلیِ اتصالهای بازهدایتشدهٔ شفاف. اگر هیچ موتوری مشخص نشود، از موتور پیشفرض استفاده میشود، مگر اینکه با -e لغو شود. هنگام استفاده از یک موتور NAT، sslsplit باید روی همان سیستمی اجرا شود که قوانین NAT ترافیک را به سمت sslsplit بازهدایت میکنند. برای دیدن فهرستی از موتورهای NAT پشتیبانیشده، بخش NAT ENGINES را ببینید.
- fwdaddr port
- آدرس مقصد ایستا، IPv4 یا IPv6، به همراه پورت یا نام سرویس. وقتی از این حالت استفاده شود، اتصالها به آدرس سرور و پورت ارائهشده فوروارد میشوند. اگر fwdaddr یک نام میزبان (hostname) باشد، به یک آدرس IP تفکیک خواهد شد.
- sni port
- استفاده از نام میزبان SNI (Server Name Indication) ارسالشده توسط کلاینت در پیام Client Hello در SSL/TLS برای تعیین آدرس IP سروری که باید به آن متصل شد. این قابلیت تنها برای proxyspecsهای ssl و https کار میکند و به یک پورت یا نام سرویس به عنوان آرگومان نیاز دارد. از آنجا که این سازوکار نیازمند جستجوهای DNS است، ترجیح بر این است که از جستجوهای موتور NAT استفاده شود (بالا را ببینید)، مگر زمانی که انجام آن ممکن نباشد؛ مانند زمانی که هیچ موتور NAT پشتیبانیشدهای وجود ندارد یا هنگام اجرای sslsplit روی سیستمی متفاوت از سیستمی که قوانین NAT هدایت اتصالها را انجام میدهند. توجه داشته باشید که هنگام استفاده از -j به همراه sni، ممکن است لازم باشد jaildir را آماده کنید تا تفکیک نام از داخل دایرکتوری chroot کار کند.
مشخصات گزارشگیری (LOG SPECIFICATIONS)
مشخصات گزارشگیری از صفر یا چند رهنمود به سبک printf تشکیل شدهاند؛ نویسههای معمولی مستقیماً در مسیر خروجی قرار میگیرند. دستور SSLsplit در حال حاضر از رهنمودهای زیر پشتیبانی میکند:
- %T
- زمان اتصال اولیه به عنوان برچسب زمانی ISO 8601 UTC.
- %d
- میزبان و پورت مقصد که با یک ویرگول از یکدیگر جدا شدهاند؛ در آدرسهای IPv6 به جای دونقطه از خط زیر (underscore) استفاده میشود.
- %D
- میزبان مقصد؛ در آدرسهای IPv6 به جای دونقطه از خط زیر استفاده میشود.
- %p
- پورت مقصد.
- %s
- میزبان و پورت مبدأ که با یک ویرگول از یکدیگر جدا شدهاند؛ در آدرسهای IPv6 به جای دونقطه از خط زیر استفاده میشود.
- %S
- میزبان مبدأ؛ در آدرسهای IPv6 به جای دونقطه از خط زیر استفاده میشود.
- %q
- پورت مبدأ.
- %x
- نام فرایند محلی. نیازمند استفاده از گزینهٔ -i است. اگر اطلاعات فرایند در دسترس نباشد، این رهنمود از مسیر خروجی حذف خواهد شد.
- %X
- مسیر کامل فرایند محلی. نیازمند استفاده از گزینهٔ -i است. اگر اطلاعات فرایند در دسترس نباشد، این رهنمود از مسیر خروجی حذف خواهد شد.
- %u
- نام کاربری یا شناسهٔ عددی کاربر (uid) فرایند محلی. نیازمند استفاده از گزینهٔ -i است. اگر اطلاعات فرایند در دسترس نباشد، این رهنمود از مسیر خروجی حذف خواهد شد.
- %g
- نام گروه یا شناسهٔ عددی گروه (gid) فرایند محلی. نیازمند استفاده از گزینهٔ -i است. اگر اطلاعات فرایند در دسترس نباشد، این رهنمود از مسیر خروجی حذف خواهد شد.
- %%
- نویسهٔ لفظی '%'. در حال حاضر SSLsplit از موتورهای NAT زیر پشتیبانی میکند:
- pf
- بازهدایتهای NAT از نوع rdr/rdr-to در فیلتر بستهی اوپنبیاسدی (pf)، که در FreeBSD، NetBSD و Mac OS X نیز دردسترس است. بهطور کامل پشتیبانی میشود، از جمله IPv6. توجه داشته باشید که SSLsplit برای خواندن نیاز به مجوز باز کردن /dev/pf دارد، که بهطور پیشفرض به این معنی است که باید با امتیازات دسترسی root اجرا شود. با فرض رابط ورودی em0، ابتدا در نحو قدیمی (FreeBSD، Mac OS X)، سپس در نحو جدید (+OpenBSD 4.7):
rdr pass on em0 proto tcp from 2001:db8::/64 to any port 80 \
-> ::1 port 10080
rdr pass on em0 proto tcp from 2001:db8::/64 to any port 443 \
-> ::1 port 10443
rdr pass on em0 proto tcp from 192.0.2.0/24 to any port 80 \
-> 127.0.0.1 port 10080
rdr pass on em0 proto tcp from 192.0.2.0/24 to any port 443 \
-> 127.0.0.1 port 10443
pass in quick on em0 proto tcp from 2001:db8::/64 to any \
port 80 rdr-to ::1 port 10080
pass in quick on em0 proto tcp from 2001:db8::/64 to any \
port 443 rdr-to ::1 port 10443
pass in quick on em0 proto tcp from 192.0.2.0/24 to any \
port 80 rdr-to 127.0.0.1 port 10080
pass in quick on em0 proto tcp from 192.0.2.0/24 to any \
port 443 rdr-to 127.0.0.1 port 10443
- ipfw
- سوکتهای divert فایروال آیپی فریبیاسدی (IPFW)، همچنین دردسترس در Mac OS X. درسترس در FreeBSD و OpenBSD با استفاده از divert-to در pf. بهطور کامل در FreeBSD و OpenBSD پشتیبانی میشود، از جمله IPv6. در Mac OS X به دلیل نسخه بسیار قدیمی IPFW گنجاندهشده، تنها از IPv4 پشتیبانی میکند. ابتدا در نحو IPFW، سپس در نحو divert-to در pf:
ipfw add fwd ::1,10080 tcp from 2001:db8::/64 to any 80 ipfw add fwd ::1,10443 tcp from 2001:db8::/64 to any 443 ipfw add fwd 127.0.0.1,10080 tcp from 192.0.2.0/24 to any 80 ipfw add fwd 127.0.0.1,10443 tcp from 192.0.2.0/24 to any 443
pass in quick on em0 proto tcp from 2001:db8::/64 to any \
port 80 divert-to ::1 port 10080
pass in quick on em0 proto tcp from 2001:db8::/64 to any \
port 443 divert-to ::1 port 10443
pass in quick on em0 proto tcp from 192.0.2.0/24 to any \
port 80 divert-to 127.0.0.1 port 10080
pass in quick on em0 proto tcp from 192.0.2.0/24 to any \
port 443 divert-to 127.0.0.1 port 10443
- ipfilter
- ابزار IPFilter (ipfilter، ipf)، دردسترس در بسیاری از سیستمها، از جمله FreeBSD، NetBSD، Linux و Solaris. توجه داشته باشید که SSLsplit برای خواندن نیاز به مجوز باز کردن /dev/ipnat دارد، که بهطور پیشفرض به این معنی است که باید با امتیازات دسترسی root اجرا شود. تنها به دلیل محدودیتهای رابط ioctl(2) مربوط به SIOCGNATL از IPv4 پشتیبانی میکند. با فرض رابط ورودی bge0:
rdr bge0 0.0.0.0/0 port 80 -> 127.0.0.1 port 10080 rdr bge0 0.0.0.0/0 port 443 -> 127.0.0.1 port 10443
- netfilter
- سامانه netfilter لینوکس با استفاده از هدف REDIRECT در iptables. از لینوکس نسخه v3.8-rc1 بهطور کامل از جمله IPv6 پشتیبانی میشود؛ در کرنلهای قدیمیتر به دلیل محدودیتهای رابط getsockopt(2) مربوط به SO_ORIGINAL_DST، تنها از IPv4 پشتیبانی میکند.
iptables -t nat -A PREROUTING -s 192.0.2.0/24 \
-p tcp --dport 80 \
-j REDIRECT --to-ports 10080
iptables -t nat -A PREROUTING -s 192.0.2.0/24 \
-p tcp --dport 443 \
-j REDIRECT --to-ports 10443
# please contribute a tested ip6tables config
توجه داشته باشید که SSLsplit تنها در صورتی قادر به پذیرش اتصالات ورودی است که به نشانی IP صحیح (برای مثال 192.0.2.1) یا روی تمام رابطها (0.0.0.0) متصل (bind) شود. هدف REDIRECT از نشانی رابط محلیِ رابط ورودی بهعنوان نشانی IP مقصد، یا از 127.0.0.1 برای بستههای تولیدشده محلی استفاده میکند.
- tproxy
- سامانه netfilter لینوکس با استفاده از هدف TPROXY در iptables همراه با ترفندهای جدول مسیریابی (routing table) جهت امکانپذیر ساختن شروع ترافیک غیرمحلی روی سوکتهای محلی. بهطور کامل پشتیبانی میشود، از جمله IPv6.
ip -f inet6 rule add fwmark 1 lookup 100
ip -f inet6 route add local default dev lo table 100
ip6tables -t mangle -N DIVERT
ip6tables -t mangle -A DIVERT -j MARK --set-mark 1
ip6tables -t mangle -A DIVERT -j ACCEPT
ip6tables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
ip6tables -t mangle -A PREROUTING -s 2001:db8::/64 \
-p tcp --dport 80 \
-j TPROXY --tproxy-mark 0x1/0x1 --on-port 10080
ip6tables -t mangle -A PREROUTING -s 2001:db8::/64 \
-p tcp --dport 443 \
-j TPROXY --tproxy-mark 0x1/0x1 --on-port 10443
ip -f inet rule add fwmark 1 lookup 100
ip -f inet route add local default dev lo table 100
iptables -t mangle -N DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A PREROUTING -s 192.0.2.0/24 \
-p tcp --dport 80 \
-j TPROXY --tproxy-mark 0x1/0x1 --on-port 10080
iptables -t mangle -A PREROUTING -s 192.0.2.0/24 \
-p tcp --dport 443 \
-j TPROXY --tproxy-mark 0x1/0x1 --on-port 10443
توجه داشته باشید که فیلترینگ مسیر بازگشت (rp_filter) نیز باید روی رابطهایی که ترافیک بازهدایتشده توسط TPROXY را مدیریت میکنند غیرفعال شود. یک sslsplit در حال اجرا، سیگنالهای SIGINT و SIGTERM را برای خاموشسازی تمیز (clean shutdown) و SIGUSR1 را برای بازگشایی مجدد فایلهای لاگ تکفایلی (مانند -l، -L و -X) میپذیرد. روش استاندارد برای چرخش لاگها (log rotation) یا پسپردازش آنها این است که نام فایل لاگ فعال را تغییر دهید، سیگنال SIGUSR1 را به PID موجود در فایل PID تعیینشده توسط -p ارسال کنید، کمی به SSLsplit زمان بدهید تا پس از بستن فایل قدیمی بافرها را خالی کند (flush)، و سپس فایل لاگ تغییرنامیافته را پسپردازش کنید. فایلهای لاگ به ازای هر اتصال (مانند -S و -F) مجدداً بازگشایی نمیشوند زیرا نام فایل آنها مختص همان اتصال است.
وضعیت خروج (EXIT STATUS)
پردازهٔ sslsplit در خاموشسازی معمول (SIGINT، SIGTERM) با وضعیت 0، و در خاموشسازی کنترلشده بر اساس دریافت یک سیگنال دیگر مانند SIGHUP، با مقدار 128 + شمارهٔ سیگنال خارج میشود. وضعیت خروج در بازهٔ 1..127 نشاندهندهٔ شرایط خطا است.
مثالها (EXAMPLES)
مطابق با نمونههای پیکربندی موتور NAT در بالا، رهگیری HTTP و HTTPS روی IPv4 و IPv6 با استفاده از گواهیهای جعلی به کمک کلید خصوصی مرجع صدور گواهی ca.key و گواهی ca.crt، ثبت رویدادهای اتصال در connect.log و دادههای اتصال در فایلهای جداگانه زیر مسیر /tmp (اگر چندین موتور در سیستم شما در دسترس است، برای انتخاب موتور مناسب -e nat-engine را اضافه کنید):
sslsplit -k ca.key -c ca.crt -l connect.log -S /tmp \
https ::1 10443 https 127.0.0.1 10443 \
http ::1 10080 http 127.0.0.1 10080
اگر از موتور netfilter لینوکس همراه با هدف REDIRECT در iptables استفاده میشود، شنود روی آدرس IP صحیح (مثلاً 192.0.2.1) یا روی همهٔ رابطها (0.0.0.0) اهمیت دارد، در غیر این صورت SSLsplit قادر به پذیرش اتصالهای ورودی نخواهد بود.
رهگیری IMAP/IMAPS با استفاده از همان تنظیمات:
sslsplit -k ca.key -c ca.crt -l connect.log -S /tmp \
ssl ::1 10993 ssl 127.0.0.1 10993 \
tcp ::1 10143 tcp 127.0.0.1 10143
یک پیکربندی هدفمندتر، فقط برای HTTPS، با استفاده از فایلهای گواهی/زنجیره/کلید از مسیر /path/to/cert.d و هدایت ایستا به www.example.org بهجای پرسوجو از موتور NAT:
sslsplit -t /path/to/cert.d -l connect.log -S /tmp \
https ::1 10443 www.example.org 443 \
https 127.0.0.1 10443 www.example.org 443
همان مثال اولیه، ولی با استفاده از مشخصات پراکسی (proxyspecs) سادهٔ ssl و tcp برای جلوگیری از دستکاری سرایندها، و ثبت وقایع در یک فایل PCAP واحد برای پسپردازش با یک ابزار خارجی. برای تسهیل چرخش لاگ از طریق SIGUSR1، گزینهٔ -p نیز داده شده است تا ابزارها یا اسکریپتهای خارجی چرخش لاگ بتوانند PID را از فایل PID بخوانند.
sslsplit -k ca.key -c ca.crt -X log.pcap -p /var/run/sslsplit.pid \
ssl ::1 10443 ssl 127.0.0.1 10443 \
tcp ::1 10080 tcp 127.0.0.1 10080
همان مثال اولیه، ولی با گزینههای SSL بهینهشده برای سرعت از طریق غیرفعالسازی فشردهسازی، انتخاب تنها مجموعههای رمزنگاری (cipher suites) سریع و استفاده از یک کلید خصوصی از پیشمحاسبهشدهٔ leaf.key برای گواهیهای جعلی. بیشترین افزایش سرعت با انتخاب الگوریتمهای سریع و اندازههای کلید کوچک برای کلیدهای خصوصی CA و گواهی انتهایی (leaf) به دست میآید. دستور openssl speed را برای بررسی کارایی الگوریتمها روی سیستم خود اجرا کنید. توجه داشته باشید که ممکن است کلاینتها از همهٔ الگوریتمها و اندازههای کلید پشتیبانی نکنند. همچنین برخی از کلاینتها در مورد مجموعههای رمزنگاری که ضعیف میدانند به کاربران هشدار میدهند.
sslsplit -Z -s NULL:RC4:AES128:-DHE -K leaf.key \
-k ca.key -c ca.crt -l connect.log -S /tmp \
https ::1 10443 https 127.0.0.1 10443 \
http ::1 10080 http 127.0.0.1 10080
همان مثال اولیه، ولی در حال اجرا بهصورت دیمن (daemon) تحت کاربر sslsplit و نوشتن فایل PID:
sslsplit -d -p /var/run/sslsplit.pid -u sslsplit \
-k ca.key -c ca.crt -l connect.log -S /tmp \
https ::1 10443 https 127.0.0.1 10443 \
http ::1 10080 http 127.0.0.1 10080
برای تولید کلید خصوصی CA با نام ca.key و گواهی ca.crt با استفاده از OpenSSL:
cat >x509v3ca.cnf <<'EOF'
[ req ]
distinguished_name = reqdn
[ reqdn ]
[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
EOF
openssl genrsa -out ca.key 2048
openssl req -new -nodes -x509 -sha256 -out ca.crt -key ca.key \
-config x509v3ca.cnf -extensions v3_ca \
-subj '/O=SSLsplit Root CA/CN=SSLsplit Root CA/' \
-set_serial 0 -days 3650
نکات (NOTES)
نرمافزار SSLsplit به دلیل معماری چندنخی و رویدادمحور بر پایهٔ libevent، و با بهرهگیری از جایگزینهای خاص سکو برای ()select نظیر kqueue، قادر است تعداد نسبتاً بالایی از شنوندگان (listeners) و اتصالها را مدیریت کند. نخ اصلی، شنوندگان و مدیریت سیگنالها را بر عهده دارد؛ در حالی که تعدادی نخ کارگر (worker threads) معادل دو برابر تعداد هستههای CPU برای مدیریت اتصالات واقعی در پایههای رویداد مجزا، از جمله پردازشهای سنگین SSL/TLS روی CPU، استفاده میشوند.
در انتخاب ساختارهای دادهٔ پربازده برای حافظهٔ پنهان گواهیها و نشستهای SSL دقت بالایی صورت گرفته است. ثبت لاگها در نخهای مجزای نویسنده بر دیسک پیادهسازی شده تا اطمینان حاصل شود که نخهای مدیریت رویداد سوکت روی I/O دیسک مسدود (block) نمیشوند. پرسوجوهای DNS بهصورت ناهمگام انجام میشوند. نرمافزار SSLsplit از ذخیرهسازی نشستهای SSL در حافظهٔ پنهان هر دو طرف برای به حداقل رساندن دستتکانیهای (handshakes) کامل SSL استفاده میکند، اما حتی با این وجود، عامل محدودکننده در مدیریت اتصالات SSL، محاسبات واقعی اعداد بزرگ (bignum) است.
برای دستیابی به کارایی بالا و تاخیر اندک، و هنگامی که SSLsplit بهعنوان root یا در حالت تفکیک دسترسی (privilege separation) اجرا میشود، از گزینههایی که نیازمند فراخوانی یک عملیات ممتاز از طریق سازوکار تفکیک دسترسی برای هر اتصال هستند خودداری کنید. این موارد در حال حاضر شامل همهٔ انواع لاگ به ازای هر اتصال هستند: ثبت محتوا در فایل به ازای هر جریان در پوشه یا مشخصهٔ فایل (-F، -S)، ثبت محتوا در PCAP به ازای هر جریان در پوشه یا مشخصهٔ فایل (-Y، -y)، و گواهیهای تولیدشده یا همهٔ گواهیها در فایلهای موجود در پوشه (-w، -W). در عوض، در صورت امکان از گزینههای تکفایلی متناظر استفاده کنید. هرچند توصیه نمیشود، اما این امکان وجود دارد که هنگام اجرا بهعنوان کاربر ریشه (root)، با استفاده از -u root از تفکیک پیشفرض دسترسیها صرفنظر کنید و بدین ترتیب تفکیک دسترسی را به طور کامل دور بزنید..SH "همچنین ببینید (SEE ALSO)" sslsplit.conf(5), openssl(1), ciphers(1), speed(1), pf(4), ipfw(8), iptables(8), ip6tables(8), ip(8), hostapd(8), arpspoof(8), parasite6(8), yersinia(8), https://www.roe.ch/SSLsplit
نویسندگان (AUTHORS)
برنامه SSLsplit توسط Daniel Roethlisberger <daniel@roe.ch> نوشته شده است. در حال حاضر SSLsplit توسط Daniel Roethlisberger و Soner Tari نگهداری میشود.
افراد زیر در ارائه کد یا مستندات، به ترتیب زمانی اولین مشارکت خود، همکاری داشتهاند: Steve Wills, Landon Fuller, Wayne Jensen, Rory McNamara, Alexander Neumann, Adam Jacob Muller, Richard Poole, Maciej Kotowicz, Eun Soo Park, Christian Groschupp, Alexander Savchenkov, Soner Tari, Petr Vanek, Hilko Bengen, Philip Duldig, Levente Polyak, Nick French, Cihan Komecoglu و Sergey Pinaev.
پروژه SSLsplit شامل کارهایی است که با حمایت مالی HackerOne انجام شده است.
گزارش باگها (BUGS)
برای ارسال گزارش باگها یا وصلهها از GitHub استفاده کنید:
| 2023-10-22 | sslsplit 0.5.5 |