این دستور sslsplit است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
sslsplit - رهگیری شفاف و مقیاس پذیر SSL/TLS
خلاصه
sslsplit [-kCKOPZdDgGsrReumjplLSFi] -c گل میخ مشخصات پروکسی [...]
sslsplit [-kCKOPZdDgGsrReumjplLSFi] -c گل میخ -t دیر مشخصات پروکسی [...]
sslsplit [-OPZdDgGsrReumjplLSFi] -t دیر مشخصات پروکسی [...]
sslsplit -E
sslsplit -V
sslsplit -h
شرح
SSLsplit ابزاری برای حملات Man-in-the-Middle علیه شبکه های رمزگذاری شده SSL/TLS است.
اتصالات اتصالات به طور شفاف از طریق یک آدرس شبکه رهگیری می شوند
موتور ترجمه و هدایت به SSLsplit. SSLsplit SSL/TLS را خاتمه می دهد و شروع می کند
یک اتصال SSL/TLS جدید به آدرس مقصد اصلی، در حالی که همه داده ها را ثبت می کند
منتقل شده است. SSLsplit در نظر گرفته شده است که برای تحقیقات قانونی و نفوذ شبکه مفید باشد
تست.
SSLsplit از اتصالات TCP ساده، SSL ساده، HTTP و HTTPS از طریق IPv4 و
IPv6. برای اتصالات SSL و HTTPS، SSLsplit X509v3 جعلی را تولید و امضا میکند.
گواهینامه ها در حال پرواز، بر اساس موضوع گواهی سرور اصلی DN و
پسوند subjectAltName. SSLsplit به طور کامل از نشانگر نام سرور (SNI) پشتیبانی می کند و می باشد
قادر به کار با کلیدهای RSA، DSA و ECDSA و مجموعههای رمز DHE و ECDHE هستند. وابسته به
نسخه OpenSSL، SSLsplit از SSL 3.0، TLS 1.0، TLS 1.1 و TLS 1.2 پشتیبانی می کند و
به صورت اختیاری SSL 2.0 نیز. SSLsplit همچنین میتواند از گواهیهای موجود استفاده کند
کلید خصوصی به جای تولید کلیدهای جعلی در دسترس است. SSLsplit از NULL- پشتیبانی می کند
گواهینامه های CN را پیشوند می کند و می تواند درخواست های OCSP را به روشی عمومی رد کند. برای HTTP و HTTPS
اتصالات، SSLsplit هدرهای پاسخ را برای HPKP حذف می کند تا از کلید عمومی جلوگیری کند
پین کردن، برای HSTS که به کاربر اجازه می دهد گواهینامه های نامعتبر را بپذیرد، و جایگزین
پروتکل هایی برای جلوگیری از تغییر به QUIC/SPDY.
SSLsplit از تعدادی موتور NAT، ارسال استاتیک و جستجوهای SNI DNS پشتیبانی می کند
مقصد اصلی اتصالات هدایت شده را تعیین کنید (موتورهای NAT و پروکسی را ببینید
مشخصات زیر).
برای اجرای واقعی یک حمله، همچنین باید ترافیک را به سیستم هدایت کنید
در حال اجرا sslsplit. گزینه های شما شامل دویدن است sslsplit در یک روتر قانونی، ARP
جعل، جعل ND، مسمومیت DNS، استقرار یک نقطه دسترسی سرکش (مثلا استفاده از hostap
حالت)، کابل کشی مجدد فیزیکی، پیکربندی مجدد VLAN مخرب یا تزریق مسیر، / غیره / میزبان
اصلاح و غیره SSLsplit تغییر مسیر واقعی ترافیک را پیاده سازی نمی کند.
OPTIONS
-c pemfile
از گواهی CA استفاده کنید pemfile برای امضای گواهی های جعلی در حین پرواز. اگر pemfile
همچنین حاوی کلید خصوصی CA منطبق است، همچنین بارگیری می شود، در غیر این صورت باید باشد
فراهم شده با -k. اگر pemfile همچنین شامل پارامترهای گروه Diffie-Hellman است
نیز بارگذاری می شوند، در غیر این صورت می توان آنها را تهیه کرد -g. اگر -t نیز داده می شود،
SSLsplit فقط در صورتی یک گواهی جعل می کند که هیچ گواهی منطبقی در آن وجود نداشته باشد
فهرست راهنمای گواهی ارائه شده است.
-C pemfile
از گواهینامه های CA استفاده کنید pemfile به عنوان گواهی های اضافی در زنجیره گواهی.
در صورتی که CA با آن داده شود، این مورد نیاز است -k و -c یک زیر CA است، در این صورت هر کدام
گواهینامه های CA میانی و گواهی CA ریشه باید در آن گنجانده شوند
زنجیره گواهی
-d از TTY جدا شده و بهعنوان دیمون اجرا کنید و پیامهای خطا را در syslog ثبت کنید
خطای استاندارد.
-D در حالت اشکال زدایی اجرا کنید، بسیاری از اطلاعات اشکال زدایی را به خطای استاندارد وارد کنید. این هم
حالت پیش زمینه را اعمال می کند و نمی توان با آن استفاده کرد -d.
-e موتور
استفاده کنید موتور به عنوان موتور پیش فرض NAT برای مشخصات پروکسی بدون موتور NAT صریح،
آدرس مقصد ثابت یا حالت SNI. موتور می تواند هر یک از موتورهای NAT باشد
پشتیبانی شده توسط سیستم، همانطور که توسط -E.
-E تمام موتورهای NAT پشتیبانی شده موجود در سیستم را فهرست کرده و از آن خارج شوید. موتورهای NAT را ببینید
برای لیستی از موتورهای NAT که در حال حاضر توسط SSLsplit پشتیبانی می شوند.
-F logspec
گزارش محتوای اتصال برای جدا کردن فایل های گزارش با مشخصات مسیر داده شده (نگاه کنید به
مشخصات LOG در زیر). برای هر اتصال یک فایل log نوشته می شود که
شامل هر دو جهت داده در هنگام ارسال خواهد بود. اطلاعات در مورد
اتصال فقط در نام فایل موجود خواهد بود. اگر -F با استفاده می شود -j, logspec
نسبت به زندانبان. اگر -F با استفاده می شود -u, logspec باید توسط کاربر.
-g pemfile
از پارامترهای گروه Diffie-Hellman استفاده کنید pemfile برای دیفی-هلمن زودگذر
مجموعه های رمزی (EDH/DHE). اگر -g داده نمی شود، SSLsplit ابتدا سعی می کند DH را بارگیری کند
پارامترها از فایل های PEM ارائه شده توسط -K, -k or -c. اگر هیچ پارامتر DH یافت نشد
در فایل های کلیدی، پارامترهای داخلی 512 یا 1024 بیتی گروه به طور خودکار استفاده می شود
اگر یک کلید خصوصی غیر RSA با داده شود -K. دلیلش این است که کلیدهای خصوصی DSA/DSS
به خودی خود فقط می توانند برای امضا استفاده شوند و بنابراین DH را ملزم به مبادله می کنند
کلید جلسه SSL/TLS. اگر -g داده شده است، پارامترها از داده شده است pemfile اراده
همیشه استفاده شود، حتی با کلیدهای خصوصی RSA (در مجموعه رمزهای موجود در
OpenSSL). در -g گزینه تنها در صورتی در دسترس است که SSLsplit بر اساس یک نسخه ساخته شده باشد
از OpenSSL که مجموعه های رمز Diffie-Hellman را پشتیبانی می کند.
-G منحنی
از نامگذاری شده استفاده کنید منحنی برای منحنی بیضی زودگذر Diffie-Hellman (EECDH).
سوئیت ها اگر -G داده نشده است، یک منحنی پیش فرض (secp160r2) به طور خودکار استفاده می شود اگر
یک کلید خصوصی غیر RSA با داده می شود -K. دلیلش این است که کلیدهای خصوصی ECDSA/ECDSS
به خودی خود فقط می توانند برای امضا استفاده شوند و بنابراین ECDH را ملزم به مبادله می کنند
کلید جلسه SSL/TLS. اگر -G داده شده است، نامگذاری شده است منحنی همیشه استفاده خواهد شد، حتی
با کلیدهای خصوصی RSA (در مجموعه رمزهای موجود در OpenSSL). در -G
گزینه تنها در صورتی در دسترس است که SSLsplit در برابر نسخه ای از OpenSSL ساخته شده باشد که
از مجموعه رمزهای Diffie-Hellman منحنی بیضی پشتیبانی می کند.
-h نمایش راهنمایی در مورد استفاده و خروج.
-i برای هر اتصال، فرآیند محلی مالک اتصال را پیدا کنید. این باعث می شود
پردازش اطلاعات مانند pid، مالک:گروه و مسیر اجرایی برای اتصالات
از همان سیستمی که SSLsplit در دسترس است، برای لاگ اتصال ایجاد می شود و فعال می کند
مربوطه -F دستورالعمل های مشخصات مسیر -i در Mac OS X و
FreeBSD; پشتیبانی از سایر پلتفرم ها هنوز اجرا نشده است.
-j زندانبان
دایرکتوری ریشه را به تغییر دهید زندانبان با استفاده از خرد(2) پس از باز کردن فایل ها. توجه داشته باشید
که این پیامدهایی برای آن دارد -F, -S، و برای sni مشخصات پروکسی. مسیر داده شده با
-S or -F نسبت به زندانبان از آنجایی که فایل های گزارش را نمی توان قبلا باز کرد
فراخوانی خرد(2). بسته به سیستم عامل خود، باید فایل ها را کپی کنید
مانند /etc/resolv.conf به زندانبان برای اینکه تفکیک نام کار کند. استفاده كردن
sni مشخصات پروکسی به وضوح نام بستگی دارد. برخی از سیستم عامل ها نیاز به ویژگی های خاص دارند
گره های دستگاه مانند / dev / null حضور در زندان سیستم خود را بررسی کنید
اسناد برای جزئیات
-k pemfile
از کلید خصوصی CA استفاده کنید pemfile برای امضای گواهی های جعلی در حین پرواز. اگر pemfile
همچنین حاوی گواهینامه CA منطبق است، همچنین بارگیری شده است، در غیر این صورت باید باشد
فراهم شده با -c. اگر pemfile همچنین شامل پارامترهای گروه Diffie-Hellman است
نیز بارگذاری می شوند، در غیر این صورت می توان آنها را تهیه کرد -g. اگر -t نیز داده می شود،
SSLsplit فقط در صورتی یک گواهی جعل می کند که هیچ گواهی منطبقی در آن وجود نداشته باشد
فهرست راهنمای گواهی ارائه شده است.
-K pemfile
از کلید خصوصی استفاده کنید pemfile برای گواهی های جعلی در حین پرواز. اگر -K نیست
SSLsplit یک کلید RSA تصادفی 1024 بیتی ایجاد می کند.
-l ورود به سیستم فایل
ورود به سیستم اتصالات به ورود به سیستم فایل در یک خط در هر قالب اتصال، از جمله
آدرس ها و پورت ها و برخی اطلاعات HTTP و SSL، در صورت وجود.
-L ورود به سیستم فایل
ورود محتوای اتصال به ورود به سیستم فایل. گزارش محتوا حاوی یک گزارش قابل تجزیه خواهد بود
فرمت با داده های ارسالی، همراه با هدرهایی که اتصال را شناسایی می کنند و
طول داده هر بخش ثبت شده
-m هنگام حذف امتیازات با استفاده از -u، گروه اصلی هدف را که قرار است روی آن تنظیم شود لغو کنید
گروه.
-O همه درخواستهای پروتکل وضعیت گواهی آنلاین (OCSP) را در همه رد کنید مشخصات پروکسی و
برای همه سرورهای OCSP با پاسخ OCSP برابر بعدا امتحان کن، باعث می شود مشتریان OCSP به
به طور موقت حتی گواهی های باطل شده را بپذیرید. درخواست های HTTP به عنوان در نظر گرفته می شوند
OCSP درخواست می کند اگر روش باشد شو و URI دارای یک معتبر نحوی است
ساختار OCSRequest ASN.1 قابل تجزیه توسط OpenSSL، یا اگر روش باشد پست و
نوع مطلب is application/ocsp-درخواست. برای اینکه این کار موثر باشد، SSLsplit باید
ترافیک مقصد در پورت مورد استفاده توسط سرور OCSP را مدیریت کند. به خصوص،
SSLsplit باید برای دریافت ترافیک به تمام پورت های مورد استفاده توسط سرورهای OCSP پیکربندی شود
گواهی های هدفمند در certdir مشخص شده توسط -t.
-p pidfile
شناسه فرآیند را بنویسید pidfile و در صورتی که pidfile در حال حاضر در حال استفاده است
توسط فرآیند دیگری
-P اتصالات SSL/TLS عبوری که نمیتوان آنها را بهجای حذف آنها تقسیم کرد.
اتصالات نمی توانند تقسیم شوند اگر -c و -k داده نمی شود و سایت مطابقت ندارد
هر گواهی بارگیری شده با استفاده از -t، یا اگر اتصال به سرور اصلی را بدهد
خطاهای SSL/TLS. به طور خاص، اگر سایت درخواست مشتری کند، این اتفاق می افتد
گواهی عبور با -P منجر به ارائه خدمات بدون وقفه به مشتریان می شود،
در حالی که در صورتی که اتصالات نظارت نشده باید وجود داشته باشند، حذف گزینه ایمن تر است
جلوگیری کرد
-r proto-
نسخه پروتکل SSL/TLS را هم در سمت کلاینت و هم در سمت سرور مجبور کنید proto- با انتخاب
سازنده متد OpenSSL مربوطه به جای SSLv23_method() پیش فرض
که از تمامی نسخه های پروتکل پشتیبانی می کند. این هنگام تجزیه و تحلیل ترافیک به a مفید است
سروری که فقط از نسخه خاصی از 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 رمزها
از OpenSSL استفاده کنید رمزها مشخصات برای اتصالات SSL/TLS سرور و کلاینت.
If -s داده نشده است، یک لیست رمزی از ALL:-عدد استفاده می شود. به طور معمول، SSL/TLS
پیاده سازی ها امن ترین مجموعه های رمز را انتخاب می کنند، نه سریع ترین. توسط
با تعیین یک لیست رمزی OpenSSL مناسب، مجموعه مجموعه های رمز می تواند باشد
محدود به الگوریتم های سریع، یا eNULL مجموعه های رمز را می توان اضافه کرد. توجه داشته باشید که برای
اتصالات برای موفقیت آمیز بودن، مجموعه رمزهای تقسیم SSL باید حداقل شامل یکی باشد
مجموعه رمزی که هم توسط کلاینت و هم سرور هر اتصال پشتیبانی می شود. دیدن
رمزها(1) برای جزئیات در مورد نحوه ساخت لیست های رمز OpenSSL.
-S logdir
ورود محتوای اتصال برای جدا کردن فایل های ورود در زیر logdir. برای هر اتصال، یک
فایل log نوشته خواهد شد، که شامل هر دو جهت داده به عنوان
منتقل شده است. اطلاعات مربوط به اتصال در نام فایل موجود خواهد بود
فقط. اگر -S با استفاده می شود -j, logdir نسبت به زندانبان. اگر -S با استفاده می شود
-u, logdir باید توسط کاربر.
-t certdir
از کلید خصوصی، گواهی و زنجیره گواهی از فایل های PEM در داخل استفاده کنید certdir برای
سایت هایی که با نام های رایج مربوطه مطابقت دارند، به جای استفاده از گواهی های جعلی
در پرواز. یک فایل PEM منفرد باید حاوی یک کلید خصوصی باشد
گواهی و به صورت اختیاری گواهینامه های CA میانی و ریشه برای استفاده به عنوان
زنجیره گواهی اگر -c و -k نیز داده می شود، گواهی جعلی خواهد بود
the-fly برای سایت هایی که با هیچ یک از گواهینامه های بارگیری شده مطابقت ندارند certdir.
در غیر این صورت، اتصالات مطابق بدون گواهی حذف خواهند شد، یا اگر -P داده شده است،
بدون تقسیم SSL/TLS عبور کرد.
-u پس از باز کردن سوکت ها و فایل ها با تنظیم واقعی، موثر و، امتیازات را رها کنید
شناسه های کاربر را ذخیره کرد کاربر و بارگذاری گروه های اولیه و فرعی مناسب.
If -u داده نمی شود، SSLsplit امتیازات را به UID ذخیره شده کاهش می دهد اگر EUID != UID
(سناریوی بیت setuid)، یا به هیچ کس اگر با فول اجرا شود ریشه امتیازات (EUID ==
UID == 0) و -S استفاده نمی شود. به دلیل باگ اپل، -u قابل استفاده با pf
مشخصات پروکسی در Mac OS X.
-V نمایش اطلاعات نسخه و ویژگی های کامپایل شده و خروج.
-Z فشرده سازی SSL/TLS را در همه اتصالات غیرفعال کنید. اگر محدود کردن شما مفید است
فاکتور CPU است نه پهنای باند شبکه. در -Z گزینه فقط در صورت تقسیم SSL موجود است
بر اساس نسخه ای از OpenSSL ساخته شده است که از غیرفعال کردن فشرده سازی پشتیبانی می کند.
پروکسی مشخصات
مشخصات پروکسی (مشخصات پروکسی) شامل نوع اتصال، آدرس گوش و
آدرس فوروارد استاتیک یا مکانیسم وضوح آدرس (موتور NAT، جستجوی SNI DNS):
HTTPS listenaddr بندر [موتور nat|fwdaddr بندر|sni بندر]
اس اس ال listenaddr بندر [موتور nat|fwdaddr بندر|sni بندر]
HTTP listenaddr بندر [موتور nat|fwdaddr بندر]
tcp listenaddr بندر [موتور nat|fwdaddr بندر]
HTTPS رهگیری SSL/TLS با رمزگشایی پروتکل HTTP، از جمله حذف HPKP،
هدرهای پاسخ HSTS و پروتکل جایگزین.
اس اس ال رهگیری SSL/TLS بدون هیچ گونه رمزگشایی پروتکل سطح پایین تر. رمزگشایی شده است
محتوای اتصال به عنوان جریانی مات از بایت ها در نظر گرفته می شود و اصلاح نمی شود.
HTTP اتصال TCP ساده بدون SSL/TLS، با رمزگشایی پروتکل HTTP، از جمله
حذف هدرهای پاسخ HPKP، HSTS و پروتکل جایگزین.
tcp اتصال TCP ساده بدون SSL/TLS و بدون هیچ گونه رمزگشایی پروتکل سطح پایین.
محتوای اتصال رمزگشایی شده به عنوان جریانی مبهم از بایت ها در نظر گرفته می شود و اصلاح نمی شود.
listenaddr بندر
آدرس IPv4 یا IPv6 و پورت یا نام سرویس برای گوش دادن. این آدرس است
و پورتی که موتور NAT باید اتصالات را به آن هدایت کند.
موتور nat
موتور NAT برای پرس و جو برای تعیین آدرس مقصد اصلی و پورت
اتصالات هدایت شده شفاف اگر موتور داده نشود، موتور پیش فرض است
استفاده می شود، مگر اینکه با -e. هنگام استفاده از موتور NAT، sslsplit نیاز به اجرا دارد
همان سیستمی که قوانین NAT ترافیک را به آن هدایت می کند sslsplit. NAT را ببینید
ENGINES برای لیستی از موتورهای NAT پشتیبانی شده.
fwdaddr بندر
آدرس مقصد ثابت، IPv4 یا IPv6، با نام پورت یا سرویس. وقتی این است
استفاده می شود، اتصالات به آدرس سرور و پورت داده شده ارسال می شوند. اگر fwdaddr
یک نام میزبان است، به یک آدرس IP حل می شود.
sni بندر
از نام میزبان نشانگر نام سرور (SNI) ارسال شده توسط مشتری در ClientHello استفاده کنید
پیام SSL/TLS برای تعیین آدرس IP سرور برای اتصال. فقط این
کار می کند اس اس ال و HTTPS مشخصات پروکسی و به نام پورت یا سرویس به عنوان آرگومان نیاز دارد.
از آنجایی که این کار به جستجوهای DNS نیاز دارد، ترجیحاً از جستجوهای موتور NAT استفاده شود (نگاه کنید به
در بالا)، به جز مواردی که این امکان وجود ندارد، مانند زمانی که NAT پشتیبانی شده وجود ندارد
موتور یا هنگام کار sslsplit در سیستمی متفاوت از قوانین NAT
تغییر مسیر اتصالات واقعی توجه داشته باشید که هنگام استفاده -j با sni، ممکن است نیاز داشته باشید
برای آماده سازی زندانبان تا تفکیک نام از داخل دایرکتوری chroot کار کند.
ورود کاربران مشخصات
مشخصات لاگ از دستورات صفر یا بیشتر به سبک printf تشکیل شده است. معمولی
کاراکترها مستقیماً در مسیر خروجی قرار می گیرند. جریان تقسیم SSL پشتیبانی می کند
دستورالعمل های زیر:
%T زمان اتصال اولیه به عنوان مهر زمانی ISO 8601 UTC.
%d آدرس و پورت مقصد
%s آدرس منبع و پورت.
%x نام فرآیند محلی نیاز دارد -i مورد استفاده قرار گیرد. اگر اطلاعات فرآیند است
در دسترس نباشد، این دستورالعمل از مسیر خروجی حذف خواهد شد.
%X مسیر کامل فرآیند محلی. نیاز دارد -i مورد استفاده قرار گیرد. اگر فرآیند
اطلاعات در دسترس نیست، این دستورالعمل از مسیر خروجی حذف خواهد شد.
%u نام کاربری یا uid عددی فرآیند محلی. نیاز دارد -i مورد استفاده قرار گیرد. اگر
اطلاعات فرآیند در دسترس نیست، این دستورالعمل از خروجی حذف خواهد شد
مسیر.
%g نام گروه یا gid عددی فرآیند محلی. نیاز دارد -i مورد استفاده قرار گیرد. اگر
اطلاعات فرآیند در دسترس نیست، این دستورالعمل از خروجی حذف خواهد شد
مسیر.
%% یک کاراکتر تحت اللفظی "%".
NAT موتور
SSLsplit در حال حاضر از موتورهای NAT زیر پشتیبانی می کند:
pf فیلتر بسته OpenBSD (pf) rdr/rdr-to تغییر مسیرهای NAT، همچنین در FreeBSD موجود است،
NetBSD و Mac OS X. به طور کامل پشتیبانی می شود، از جمله IPv6. با فرض رابط ورودی
em0، ابتدا در سینتکس قدیمی (FreeBSD، Mac OS X)، سپس در نحو جدید (OpenBSD 4.7+):
rdr عبور on em0 proto- tcp از جانب 2001: db8 :: / 64 به هر بندر 80
-> :: 1 بندر 10080
rdr عبور on em0 proto- tcp از جانب 2001: db8 :: / 64 به هر بندر 443
-> :: 1 بندر 10443
rdr عبور on em0 proto- tcp از جانب 192.0.2.0/24 به هر بندر 80
-> 127.0.0.1 بندر 10080
rdr عبور on em0 proto- tcp از جانب 192.0.2.0/24 به هر بندر 443
-> 127.0.0.1 بندر 10443
عبور in سریع on em0 proto- tcp از جانب 2001: db8 :: / 64 به هر
بندر 80 rdr-to :: 1 بندر 10080
عبور in سریع on em0 proto- tcp از جانب 2001: db8 :: / 64 به هر
بندر 443 rdr-to :: 1 بندر 10443
عبور in سریع on em0 proto- tcp از جانب 192.0.2.0/24 به هر
بندر 80 rdr-to 127.0.0.1 بندر 10080
عبور in سریع on em0 proto- tcp از جانب 192.0.2.0/24 به هر
بندر 443 rdr-to 127.0.0.1 بندر 10443
ipfw سوکتهای تغییر مسیر فایروال IP FreeBSD (IPFW)، همچنین در Mac OS X موجود است. موجود
در FreeBSD و OpenBSD با استفاده از pf منحرف کردن به. به طور کامل در FreeBSD و OpenBSD پشتیبانی می شود،
از جمله IPv6. به دلیل نسخه قدیمی IPFW، فقط از IPv4 در Mac OS X پشتیبانی می کند
مشمول. ابتدا در IPFW، سپس در pf منحرف کردن به نحو:
ipfw اضافه کردن fwd :: 1,10080 tcp از جانب 2001: db8 :: / 64 به هر 80
ipfw اضافه کردن fwd :: 1,10443 tcp از جانب 2001: db8 :: / 64 به هر 443
ipfw اضافه کردن fwd 127.0.0.1,10080 tcp از جانب 192.0.2.0/24 به هر 80
ipfw اضافه کردن fwd 127.0.0.1,10443 tcp از جانب 192.0.2.0/24 به هر 443
عبور in سریع on em0 proto- tcp از جانب 2001: db8 :: / 64 به هر
بندر 80 منحرف کردن به :: 1 بندر 10080
عبور in سریع on em0 proto- tcp از جانب 2001: db8 :: / 64 به هر
بندر 443 منحرف کردن به :: 1 بندر 10443
عبور in سریع on em0 proto- tcp از جانب 192.0.2.0/24 به هر
بندر 80 منحرف کردن به 127.0.0.1 بندر 10080
عبور in سریع on em0 proto- tcp از جانب 192.0.2.0/24 به هر
بندر 443 منحرف کردن به 127.0.0.1 بندر 10443
ipfilter
IPFilter (ipfilter، ipf)، در بسیاری از سیستم ها، از جمله FreeBSD، NetBSD، موجود است.
لینوکس و سولاریس فقط IPv4 را به دلیل محدودیت های موجود در SIOCGNATL پشتیبانی می کند ioctls(2)
رابط. با فرض رابط ورودی bge0:
rdr bge0 0.0.0.0/0 بندر 80 -> 127.0.0.1 بندر 10080
rdr bge0 0.0.0.0/0 بندر 443 -> 127.0.0.1 بندر 10443
فیلتر فیلتر
فیلتر شبکه لینوکس با استفاده از هدف iptables REDIRECT. فقط IPv4 را به دلیل پشتیبانی می کند
محدودیت در SO_ORIGINAL_DST getsockopt(2) رابط.
از iptables -t NAT -A پیشگویی -s 192.0.2.0/24
-p tcp --dport 80
-j REDIRECT --به پورت ها 10080
از iptables -t NAT -A پیشگویی -s 192.0.2.0/24
-p tcp --dport 443
-j REDIRECT --به پورت ها 10443
tproxy فیلتر شبکه لینوکس با استفاده از iptables TPROXY target همراه با جادوی جدول مسیریابی
اجازه می دهد تا ترافیک غیر محلی در سوکت های محلی ایجاد شود. به طور کامل پشتیبانی می شود،
از جمله IPv6.
ip -f inet6 رد اضافه کردن fwmark 1 مراجعه 100
ip -f inet6 مسیر اضافه کردن محلی به طور پیش فرض توسعه تمدن lo جدول 100
جداول ip6 -t لگد زدن -N انحراف
جداول ip6 -t لگد زدن -A انحراف -j علامت --تنظیم علامت 1
جداول ip6 -t لگد زدن -A انحراف -j تایید کنید
جداول ip6 -t لگد زدن -A پیشگویی -p tcp -m پریز -j انحراف
جداول ip6 -t لگد زدن -A پیشگویی -s 2001: db8 :: / 64
-p tcp --dport 80
-j TPROXY --tproxy-mark 0x1 / 0x1 -- روی پورت 10080
جداول ip6 -t لگد زدن -A پیشگویی -s 2001: db8 :: / 64
-p tcp --dport 443
-j TPROXY --tproxy-mark 0x1 / 0x1 -- روی پورت 10443
ip -f چی رد اضافه کردن fwmark 1 مراجعه 100
ip -f چی مسیر اضافه کردن محلی به طور پیش فرض توسعه تمدن lo جدول 100
از iptables -t لگد زدن -N انحراف
از iptables -t لگد زدن -A انحراف -j علامت --تنظیم علامت 1
از iptables -t لگد زدن -A انحراف -j تایید کنید
از iptables -t لگد زدن -A پیشگویی -p tcp -m پریز -j انحراف
از iptables -t لگد زدن -A پیشگویی -s 192.0.2.0/24
-p tcp --dport 80
-j TPROXY --tproxy-mark 0x1 / 0x1 -- روی پورت 10080
از iptables -t لگد زدن -A پیشگویی -s 192.0.2.0/24
-p tcp --dport 443
-j TPROXY --tproxy-mark 0x1 / 0x1 -- روی پورت 10443
توجه داشته باشید که فیلتر مسیر برگشتی (rp_filter) نیز باید در رابطها غیرفعال شود
که ترافیک هدایت شده TPROXY را مدیریت می کند.
مثال ها
مطابق با نمونههای پیکربندی موتور NAT بالا، HTTP و HTTPS را از طریق IPv4 رهگیری کنید
و IPv6 با استفاده از گواهی های جعلی با کلید خصوصی CA ca.key و گواهی ca.crt,
ورود به سیستم اتصالات به اتصال.log و داده های اتصال به فایل های جداگانه در زیر دایرکتوری / tmp (اضافه کردن
-e موتور nat برای انتخاب موتور مناسب در صورتی که چندین موتور روی شما موجود است
سیستم):
sslsplit -k ca.key -c ca.crt -l اتصال.log -L دایرکتوری / tmp
HTTPS :: 1 10443 HTTPS 127.0.0.1 10443
HTTP :: 1 10080 HTTP 127.0.0.1 10080
رهگیری IMAP/IMAPS با استفاده از تنظیمات مشابه:
sslsplit -k ca.key -c ca.crt -l اتصال.log -L دایرکتوری / tmp
اس اس ال :: 1 10993 اس اس ال 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 اتصال.log -L دایرکتوری / tmp
HTTPS :: 1 10443 www.example.org 443
HTTPS 127.0.0.1 10443 www.example.org 443
مثال اصلی، اما با استفاده از گزینه های SSL بهینه شده برای سرعت با غیرفعال کردن فشرده سازی
و تنها مجموعههای رمز رمز بلوکی سریع را انتخاب کنید و از یک کلید خصوصی از پیش محاسبهشده استفاده کنید
برگ.کلید برای گواهی های جعلی (مهمترین افزایش سرعت توسط
انتخاب الگوریتمهای سریع و اندازههای کوچک کلید برای CA و کلیدهای خصوصی برگ؛ بررسی
openssl سرعت برای عملکرد الگوریتم در سیستم شما):
sslsplit -Z -s NULL:RC4:AES128 -K برگ.کلید
-k ca.key -c ca.crt -l اتصال.log -L دایرکتوری / tmp
HTTPS :: 1 10443 HTTPS 127.0.0.1 10443
HTTP :: 1 10080 HTTP 127.0.0.1 10080
مثال اصلی، اما در حال اجرا به عنوان یک شبح در زیر کاربر sslsplit و نوشتن یک فایل PID:
sslsplit -d -p /var/run/sslsplit.pid -u sslsplit
-k ca.key -c ca.crt -l اتصال.log -L دایرکتوری / 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:
گربه >x509v3ca.cnf <<'EOF'
[نیاز]
متمایز_نام = reqdn
[reqdn]
[v3_ca]
BasicConstraints = CA:TRUE
SubjectKeyIdentifier = هش
AuthorKeyIdentifier = keyid:always,ssuer:always
EOF
openssl جنس بیرون ca.key 1024
openssl درخواست -جدید -گره ها -x509،XNUMX -sha1 بیرون ca.crt -کی ca.key
پیکربندی کنید x509v3ca.cnf -پسوندها v3_ca
-موضوع '/O=SSL تقسیم ریشه CA/CN=SSL تقسیم ریشه CA/'
مجموعه_سریال 0 -روزها 3650
NOTES
SSLsplit قادر است تعداد نسبتاً بالایی از شنوندگان و اتصالات را به دلیل a
چند رشته ای، معماری مبتنی بر رویداد مبتنی بر libevent، با استفاده از پلت فرم
جایگزین های خاص select() مانند kqueue. رشته اصلی شنوندگان و
سیگنالینگ، در حالی که تعدادی از thread های کارگر برابر با دو برابر تعداد هسته های CPU است
برای مدیریت اتصالات واقعی در پایگاه های رویداد جداگانه، از جمله CPU- استفاده می شود.
مدیریت فشرده SSL/TLS.
دقت در انتخاب ساختارهای داده با عملکرد مناسب برای ذخیرهسازی گواهیها و
جلسات SSL Logging در رشته های دیسک نویس جداگانه برای اطمینان از آن پیاده سازی می شود
نیازی نیست رشته های مدیریت رویداد سوکت در ورودی/خروجی دیسک مسدود شوند. جستجوهای DNS انجام می شود
به صورت ناهمزمان SSLsplit از کش کردن جلسه SSL در هر دو طرف برای به حداقل رساندن مقدار استفاده می کند
دست دادن کامل SSL، اما حتی پس از آن، عامل محدود کننده در مدیریت اتصالات SSL هستند
محاسبات بیگنوم واقعی
با استفاده از خدمات onworks.net از sslsplit به صورت آنلاین استفاده کنید