نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی

dns رمزگذاری شده DNSCrypt - رمزگذاری ترافیک DNS برای افراد پارانوئید

این مقاله به درخواست یکی از خوانندگان وبلاگ نوشته شده است. و باید بگویم - موضوع بسیار جالب است.

امروزه موضوع حفاظت از ترافیک انتقال یافته در اینترنت روز به روز مبرم تر می شود. بسیاری از افراد ممکن است به داده های شما علاقه داشته باشند - از مهاجمانی که تمام تلاش خود را برای دریافت رمزهای عبور شما به کار می گیرند خدمات مختلف، به سرویس های اطلاعاتی که می خواهند همه چیز را در مورد هر حرکت شما بدانند. و در زمان داده شده، وجود دارد تعداد زیادی از"دفاع از خود" در اینترنت. در مورد یکی از این ساده، اما بسیار وسیله موثر، در این مقاله مورد بحث قرار خواهد گرفت - DNScrypt.

چنین منبع شگفت انگیزی وجود دارد به نام OpenDNS، که سرورهای DNS عمومی خود را ارائه می دهد. OpenDNSارائه می دهد راه حل های DNSبرای کاربران و مشاغل به عنوان جایگزینی برای استفاده از سرور DNS ارائه شده توسط ISP آنها. با قرار دادن سرورهای شرکت در مناطق استراتژیک و استفاده از کش بزرگی از نام های دامنه، OpenDNS تمایل دارد درخواست ها را بسیار سریعتر تکمیل کند و در نتیجه سرعت باز شدن صفحه را افزایش می دهد. نتایج پرس و جوهای DNS در حافظه پنهان ذخیره می شوند سیستم عاملو/یا برنامه ها، بنابراین این سرعت ممکن است در هر درخواست قابل توجه نباشد، اما فقط در آن دسته از درخواست هایی که کش نیستند.

زیرا ترافیک بین سرور DNS و رایانه شما رمزگذاری نشده است، این یک خطر جدی رهگیری ترافیک ایجاد می کند. رمزگذاری ترافیک DNS از مشتری در برابر حملات محافظت می کند "مردی در وسط"، که در آن یک مهاجم در یک کانال ارتباطی قرار می گیرد و وانمود می کند که یک سرور DNS است. علاوه بر این، رمزگذاری از جاسوسی ترافیک جلوگیری می‌کند و فعالیت‌های مخرب مرتبط با شناسه بسته‌های بی‌رحمانه یا ارسال پاسخ‌های جعلی DNS را مسدود می‌کند. به زبان ساده: رمزگذاری DNSهنگامی که به جای صفحه مورد نظر، یک کپی مخرب در جایی که داده های خود را وارد می کنید باز می شود، از حملات فیشینگ جلوگیری می کند. با همه عواقبش به‌علاوه، یافتن سایت‌هایی که بازدید کرده‌اید برای ارائه‌دهنده بسیار دشوارتر خواهد بود (زیرا گزارش‌ها حاوی اطلاعاتی درباره درخواست‌های حل نام نیستند). برای سازماندهی همه اینها، پروژه OpenDNS یک ابزار فوق العاده با منبع باز منتشر کرده است کد منبع- DNScrypt.

این ابزار تمام ترافیک ارسال شده بین رایانه شما و سرورهای OpenDNS را رمزگذاری می کند. اگر ISP شما یک وب سایت را به دلیل آن مسدود می کند نام دامنه- اکنون این سایت کار خواهد کرد! مثبت دیگر. این ابزاردر سیستم های مختلف موجود است. من نصب و پیکربندی را با استفاده از یک مثال شرح خواهم داد دبیانو اوبونتو/لینوکس مینت.

که در اوبونتو 14.04و دبیان 8، این ابزار وجود ندارد. گزینه 2: خودتان آن را بسازید یا از مخازن شخص ثالث استفاده کنید. در مورد اوبونتو، این یک مخزن PPA خواهد بود:

sudo add-apt-repository ppa:xuzhen666/dnscrypt
به روز رسانی sudo apt-get
sudo apt-get install dnscrypt-proxy

در مورد دبیان، فقط بسته را دانلود کنید dnscrypt-proxyاز مخزن نسخه آزمایشی و با استفاده از آن نصب کنید GDebi، یا توسط تیم sudo dpkg -i dnscrypt-proxy_1.6.0-2_amd64.deb.

برای خود مونتاژ:

wget https://raw.github.com/simonclausen/dnscrypt-autoinstall/master/dnscrypt-autoinstall.sh && chmod +x dnscrypt-autoinstall.sh && ./dnscrypt-autoinstall.sh

در طول مراحل نصب از شما خواسته می شود که یک سرور DNS را انتخاب کنید. OpenDNS را انتخاب کنید.

تنظیمات اضافیلازم نیست، بسته حاوی همه چیزهایی است که شما نیاز دارید. تنها چیزی که نیاز دارید این است که اتصال شبکه خود را کمی دوباره پیکربندی کنید. تنظیمات را باز کنید اتصالات شبکهرا انتخاب کنید، به تب IPv4 بروید، تغییر دهید خودکاربر خودکار (فقط آدرس) (خودکار (فقط آدرس)و آدرس DNS را مشخص کنید 127.0.2.1

راه اندازی مجدد، اتصال و رفتن به

شما فکر می کنید که ناشناس بودن شما به طور قابل اعتمادی محافظت می شود. اما متاسفانه اینطور نیست. یک کانال بسیار مهم برای افشای اطلاعات خصوصی شما وجود دارد - سرویس DNS. اما خوشبختانه راه حلی نیز برای این امر ابداع شده است. امروز به شما خواهم گفت که چگونه ترافیک DNS خود را با استفاده از ابزار DNSCrypt رمزگذاری کنید.

هنگام استفاده از HTTPS یا SSL، ترافیک HTTP شما رمزگذاری می شود، یعنی محافظت می شود. وقتی از VPN استفاده می کنید، تمام ترافیک شما قبلاً رمزگذاری شده است (البته همه چیز به تنظیمات VPN بستگی دارد، اما، به عنوان یک قاعده، این مورد است). اما گاهی اوقات، حتی هنگام استفاده از VPN، پرس و جوهای DNS شما رمزگذاری نمی شوند، همانطور که هستند ارسال می شوند که باز می شود فضای بزرگبرای "خلاقیت"، از جمله حملات MITM، تغییر مسیر ترافیک و موارد دیگر.

اینجاست که ابزار منبع باز DNSCrypt که توسط سازندگان معروف OpenDNS توسعه یافته است - برنامه ای که به شما امکان می دهد درخواست های DNS را رمزگذاری کنید، کمک می کند. پس از نصب آن بر روی رایانه، اتصالات شما نیز محافظت می شود و می توانید با خیال راحت تر در اینترنت گشت و گذار کنید. البته DNSCrypt نوشدارویی برای همه مشکلات نیست، بلکه تنها یکی از ابزارهای امنیتی است. شما همچنان باید از اتصال VPN برای رمزگذاری تمام ترافیک استفاده کنید، اما جفت کردن آن با DNSCrypt ایمن تر خواهد بود. اگر از چنین توضیح مختصری راضی هستید، می توانید بلافاصله به قسمتی بروید که نصب و استفاده از برنامه را توضیح خواهم داد.

بیایید سعی کنیم عمیق تر درک کنیم. این بخش برای افراد واقعاً پارانوئید است. اگر برای وقت خود ارزش قائل هستید، می توانید بلافاصله به نصب برنامه ادامه دهید.
پس همانطور که می گویند یک بار دیدن بهتر از صد بار شنیدن است. به تصویر نگاه کن.

فرض کنید یک کلاینت (لپ تاپ در تصویر) در حال تلاش برای دسترسی به google.com است
حل نام میزبان نمادین به آدرس IP. اگر پیکربندی شبکه به گونه ای است که از سرور DNS ارائه دهنده استفاده می شود (اتصال رمزگذاری نشده، خط قرمز در شکل)، پس مجوز نام نمادینبه آدرس IP از طریق یک اتصال رمزگذاری نشده رخ می دهد.

بله، هیچ کس نمی داند چه داده هایی را به dkws.org.ua منتقل خواهید کرد. اما لحظات بسیار ناخوشایندی وجود دارد. در مرحله اول، ارائه‌دهنده با مشاهده گزارش‌های DNS، می‌تواند دریابد که از کدام سایت‌ها بازدید کرده‌اید. آیا به آن نیاز دارید؟ ثانیا، احتمال جعل DNS و حملات جاسوسی DNS محتمل است. من آنها را با جزئیات شرح نمی دهم. به طور خلاصه، وضعیت می تواند به شرح زیر باشد: شخصی بین شما و ارائه دهنده می تواند درخواست DNS را رهگیری کند (و از آنجایی که درخواست ها رمزگذاری نشده اند، رهگیری درخواست و خواندن محتوای آن دشوار نخواهد بود) و برای شما یک " پاسخ جعلی در نتیجه، به جای بازدید از google.com، به وب سایت مهاجم می روید، که دقیقاً مانند همان چیزی است که نیاز دارید، رمز عبور خود را از انجمن وارد می کنید و سپس توسعه رویدادها به نظر من مشخص است.

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

اگر از ارائه‌دهنده خود «ترس» دارید یا نمی‌خواهید که او ببیند از چه سایت‌هایی بازدید می‌کنید، می‌توانید (البته، علاوه بر استفاده از VPN و سایر اقدامات امنیتی) رایانه خود را نیز پیکربندی کنید. با استفاده از DNSسرورهای پروژه OpenDNS (www.opendns.com). بر این لحظهاینها سرورهای زیر هستند:

208.67.222.222
208.67.220.220

در این مورد، شما به هیچ چیز اضافی دیگری نیاز ندارید نرم افزار. فقط سیستم خود را برای استفاده از این سرورهای DNS پیکربندی کنید.

اما مشکل رهگیری اتصالات DNS همچنان پابرجاست. بله، شما دیگر به DNS ارائه‌دهنده دسترسی ندارید، بلکه به OpenDNS دسترسی دارید، اما همچنان می‌توانید بسته‌ها را رهگیری کنید و ببینید چه چیزی در آنها وجود دارد. یعنی در صورت تمایل می توانید متوجه شوید که به کدام گره ها دسترسی داشته اید.

اکنون به DNSCrypt می رسیم. این برنامه به شما اجازه می دهد تا خود را رمزگذاری کنید اتصال DNS. اکنون ISP شما (و همه افراد بین شما و آنها) نمی دانند دقیقاً از چه سایت هایی بازدید می کنید! دوباره تکرارش میکنم این برنامه جایگزین Tor یا VPN نیست. مانند قبل، اگر از VPN یا Tor استفاده نکنید، بقیه داده هایی که منتقل می کنید بدون رمزگذاری منتقل می شود. این برنامه فقط ترافیک DNS را رمزگذاری می کند.


به عنوان یک نتیجه

مقاله خیلی طولانی نبود، زیرا استفاده از خود برنامه بسیار آسان است. اما اگر VPN را ذکر نکنم کامل نمی شود. اگر این مقاله را خوانده اید و به آن علاقه مند هستید، اما هنوز از خدمات یک ارائه دهنده VPN برای رمزگذاری داده های خود استفاده نکرده اید، وقت آن رسیده است که این کار را انجام دهید.
ارائه دهنده VPN یک تونل امن برای انتقال داده های شما در اختیار شما قرار می دهد و DNSCrypt اتصالات DNS شما را ایمن می کند. قطعا، خدمات VPNارائه دهندگان پول پرداخت می کنند، اما شما باید برای امنیت هزینه کنید؟

البته می‌توانید از Tor استفاده کنید، اما Tor نسبتا کند کار می‌کند، و هر چه که می‌توان گفت، این یک VPN نیست - نمی‌توان تمام ترافیک را "تعیین کرد". در هر صورت (هر گزینه ای که انتخاب کنید)، اتصالات DNS شما اکنون امن هستند. تنها چیزی که باقی می ماند این است که در مورد وسیله ای برای رمزگذاری ترافیک تصمیم بگیرید (اگر قبلاً این کار را نکرده اید).

آخرین به روز رسانی در 30 اکتبر 2016.

در مرورگرها و در این مقاله صحبت خواهیم کرددر مورد نشت ترافیک DNS که همه را تحت تأثیر قرار می دهد و حتی کسانی که از خدمات VPN استفاده می کنند و معتقدند پشت یک دیوار سنگی هستند.

سلام دوستان! امروز به شما خواهم گفت که نشت DNS چیست، چرا باید در مورد آن بدانید و چگونه با استفاده از ابزار رایگان DNSCrypt از خود در برابر آن محافظت کنید.

  • پیشگفتار
  • نشت DNS به چه معناست؟
  • نحوه بررسی نشت DNS
  • نحوه رفع نشت DNS با استفاده از DNSCrypt
    • در حال دانلود DNSCrypt
    • نصب DNSCrypt
    • با استفاده از DNSCrypt
  • DNSCrypt در مرورگر Yandex
  • DNSCrypt در روتر
  • نتیجه
  • رتبه بندی و بررسی

نشت DNS به چه معناست؟

هنگام استفاده از HTTPS یا SSL، ترافیک HTTP شما رمزگذاری شده است، به این معنی که امن است (بی نقص نیست، اما امن است). هنگامی که از VPN استفاده می کنید، تمام ترافیک شما کاملاً رمزگذاری شده است (البته سطح و کیفیت محافظت به آن بستگی دارد تنظیمات صحیح VPN، اما معمولاً همه چیز به درستی پیکربندی شده و کار می کند).

اما شرایطی وجود دارد که حتی با با استفاده از VPN، پرس و جوهای DNS شما به شکل واضح و رمزگذاری نشده ارسال می شوند. این در را به روی مهاجم باز می کند فرصت های بزرگبرای خلاقیت می تواند ترافیک را تغییر مسیر دهد، از حمله MITM (مرد در وسط) استفاده کند، و یک سری کارهای دیگر را انجام دهد که می تواند امنیت و ناشناس بودن شما را به صورت آنلاین به خطر بیندازد.

بیایید سعی کنیم این موضوع را عمیق تر درک کنیم. اگر به تئوری علاقه ای ندارید اما نگران ایمنی هستید، می توانید مستقیماً به فصل بعدی بروید. اگر می‌خواهی بیشتر بدانی، بنشین، حالا من ذهنت را به باد می‌دهم.

در مثال ما در شکل زیر مشاهده می کنید که چگونه کاربر (کامپیوتر) در تلاش برای دسترسی به سایت www.. برای دسترسی به سایت، ابتدا باید نام هاست نمادین را به یک آدرس IP حل کند.

اگر پیکربندی شبکه به گونه‌ای است که از سرور DNS ارائه‌دهنده استفاده می‌شود (اتصال رمزگذاری نشده، با خط قرمز مشخص شده)، آنگاه تفکیک نام نمادین آدرس IP از طریق یک اتصال رمزگذاری نشده رخ می‌دهد.

چه چیزی در مورد آن ترسناک است؟

اولا، در چنین شرایطی ارائه دهنده می تواند مشاهده کند تاریخچه DNSو ببینید از چه سایت هایی بازدید کرده اید. البته، او نمی داند چه داده هایی منتقل شده است، اما به راحتی می تواند آدرس های وب سایت را مشاهده کند.

ثانیاً وجود دارد شانس بزرگقربانی شود حمله هکری. مانند: DNS cache snooping و DNS spoofing.

جعل و جعل DNS چیست؟

به طور خلاصه برای کسانی که نمی دانند.

ردیابی DNS- با کمک این حمله، یک مهاجم می تواند از راه دور متوجه شود که کدام دامنه ها اخیراً در سرور DNS حل شده اند، یعنی قربانی اخیراً از کدام دامنه بازدید کرده است.

جعل DNS- حمله ای مبتنی بر آلوده کردن حافظه پنهان سرور DNS قربانی با یک ورودی نادرست در مورد مطابقت نام DNS میزبانی که قربانی به آن اعتماد دارد.

از آنجایی که درخواست‌ها رمزگذاری نشده‌اند، شخصی بین شما و ISP می‌تواند درخواست DNS را رهگیری کند و بخواند، و سپس یک پاسخ جعلی را برای شما ارسال کند نوار آدرس، پس از آن نام کاربری و رمز عبور خود را وارد می کنید و سپس خودتان متوجه خواهید شد که چه اتفاقی خواهد افتاد. داده های مجوز در دست یک مهاجم خواهد بود.

وضعیتی که شرح داده شد، نشت DNS نامیده می شود. زمانی اتفاق می‌افتد که سیستم شما حتی پس از اتصال به سرور VPN نتواند نام‌های دامنه را حل کند شبکه Torمدام می پرسد سرورهای DNSارائه دهنده شما هر بار که سعی می کنید از یک وب سایت بازدید کنید، به یک سرور جدید متصل شوید یا یک برنامه شبکه را اجرا کنید، سیستم شما با سرورهای DNS ISP شما تماس می گیرد تا نام یک آدرس IP را حل کند. در نهایت، برخی از هکرها یا ISP شما قادر خواهند بود همه نام هاست هایی را که به آنها دسترسی دارید، پیدا کنند.

اگر چیزی برای پنهان کردن دارید، پیشنهاد می کنم از یک راه حل ساده استفاده کنید - DNSCrypt. البته می توانید برخی از سرورهای DNS دیگر را ثبت کرده و از طریق آنها ترافیک ارسال کنید. مثلا گوگل سرور 8.8.8.8 یا همون OpenDNS 208.67.222.222, 208.67.220.220. در این صورت، مطمئناً سابقه مرور وب سایت خود را از ارائه دهنده خود پنهان می کنید، اما در مورد سفرهای آنلاین خود به گوگل بگویید. علاوه بر این، هیچ رمزگذاری ترافیک DNS وجود نخواهد داشت و این عیب بزرگ. من شما را نمی دانم، اما این من را هیجان زده نمی کند، ترجیح می دهم DNSCrypt را نصب کنم.

نحوه بررسی نشت DNS

قبل از اینکه به خود ابزار کمک کنیم، می خواهم شما را با خدمات آنلاین ویژه آشنا کنم. آنها به شما اجازه می دهند نشت DNS را بررسی کنید.

این برنامه به مایکروسافت نیاز دارد. چارچوب خالص 2.0 و بالاتر

می‌توانید DNSCrypt را برای Mac OS X با استفاده از پیوند از Gitab یا از اشتراک‌گذاری فایل با استفاده از پیوند بالا دانلود کنید.

توسعه دهنده برنامه OpenDNS.

نصب DNSCrypt

در این مقاله به کار با نسخه کنسول این ابزار خواهیم پرداخت. ما DNSScript را در ویندوز 10 پیکربندی می کنیم. نصب در نسخه های دیگر ویندوز تفاوتی ندارد.

بنابراین، آرشیو دانلود شده را باز کنید و محتویات پوشه dnscrypt-proxy-win32 را در هر نقطه از رایانه قرار دهید. در مثالم، آن را در پوشه “C:\Program Files\DNSCrypt\” قرار دادم.

سپس یک خط فرمان را به عنوان مدیر باز کنید.


Command Prompt را به عنوان Administrator در ویندوز 10 اجرا کنید

اکنون در خط فرمانبه پوشه DNSCrypt بروید. با استفاده از دستور زیر می توانید این کار را انجام دهید:

سی دی "C:\Program Files\DNSCrypt"

اگر نمی توانید دستورات را کپی کنید، کلیک کنید.

پس از این، بیایید برای نصب سرویس پروکسی آماده شویم. ابتدا باید یک ارائه دهنده DNS را انتخاب کنید. فایل dnscrypt-resolvers.csv را در آرشیو قرار دادم. این فایل حاوی لیستی از اکثر ارائه دهندگان DNS است که DNSCrypt از آنها پشتیبانی می کند. هر ارائه‌دهنده یک نام، توضیحات، مکان و پشتیبانی برای DNSSEC و Namecoin دارد. علاوه بر این، فایل حاوی آدرس های IP و کلیدهای عمومی لازم است.

هر ارائه دهنده ای را انتخاب کنید و مقدار را در ستون اول کپی کنید. در مورد من از CloudNS استفاده خواهم کرد، بنابراین "cloudns-can" را کپی کردم. اکنون باید مطمئن شوید که پروکسی می تواند متصل شود. با استفاده از این دستور می توانید این کار را انجام دهید:

dnscrypt-proxy.exe -R "cloudns-can" --test=0

اگر کار نکرد، ارائه دهنده دیگری را انتخاب کنید و دوباره امتحان کنید.

اگر همه چیز خوب پیش رفت، به نصب ادامه دهید و دستور زیر را وارد کنید:

dnscrypt-proxy.exe -R cloudns-can --install

اگر همه چیز درست کار کند، خروجی زیر را خواهید دید:

تصویری از آنچه که باید در خط فرمان به نظر برسد:

سپس باید به پارامترهای پروتکل TCP/IP ویندوز بروید و تنظیمات DNS را به 127.0.0.1 تغییر دهید.

برای حذف سرویس DNScrypt باید برگردید تنظیمات شبکه DNS به حالت اولیه. این کار با استفاده از این دستور انجام می شود:

dnscrypt-proxy --uninstall

این دستور همچنین می تواند برای تغییر ارائه دهنده DNS استفاده شود. پس از برنامه، باید نصب را با پارامترهای ارائه دهنده دیگری تکرار کنید.

اگر پس از کل این روش به دلایلی در طول بررسی هنوز مصمم هستید آدرس IP DNSارائه دهنده اینترنت خود، روی دکمه "پیشرفته" کلیک کنید، که در زیر IP ثبت شده 127.0.0.1 قرار دارد. در پنجره ای که ظاهر می شود " گزینه های اضافی...»، به تب «DNS» رفته و تمام آدرس های سرور DNS به جز «127.0.0.1» را حذف کنید.

تمام شد، نشت DNS اکنون برطرف شده است.

همچنین ممکن است به مقاله "" علاقه مند شوید که در مورد حذف صحبت می کند رکوردهای DNSروی کامپیوتر

DNSCrypt در مرورگر Yandex

اخیراً مرورگر Yandex پشتیبانی از DNSKript را اضافه کرده است. خوب ، چه می توانم بگویم ، بچه های Yandex در حال کار و تلاش برای محافظت از کاربر هستند - این عالی است ، اما بر خلاف ابزار DNSCrypt ، حفاظت Yandex فقط در سطح مرورگر اجرا می شود و نه در سطح کل سیستم.

DNSCrypt در روتر

پشتیبانی DNSKript نیز در محبوب پیاده سازی شده است سیستم عامل OpenWrt. اطلاعات بیشتر در مورد نصب و غیره اطلاعات اضافیمی توانید در صفحه پیدا کنید.

نتیجه

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

این همه دوستان. امیدوارم این مقاله به شما در حل مشکل نشت DNS کمک کرده باشد. برای شما در سال جدید 2017 موفق باشید، شاد باشید!

ارزیابی ابزار DNSCrypt

ارزیابی ما

DNSCrypt - ابزار رایگانبرای محافظت از ترافیک DNS با رمزگذاری ترافیک DNS و استفاده از سرورهای DNS. رتبه ما بسیار خوب است!

امتیاز کاربر: 4.25 (36 رتبه بندی)

مردم اغلب می پرسند DNSCrypt چیست و چرا به آن نیاز است. چند وقت پیش من قبلاً در مورد آن نوشتم، سپس در مورد پشتیبانی در نسخه بتا مرورگر صحبت می کردیم. این بار به طور مفصل به این فناوری نگاه خواهیم کرد و "Yandex.Browser" به عنوان نمونه و منبع داده های آزمایشگاهی خواهد بود. من بسته‌ها را در Wireshark تجزیه می‌کنم، که برای آن یک تجزیه‌کننده کوچک DNSCrypt نوشتم (در اصطلاح Wireshark این یک تشریح است، در زبان لوا; من نتوانستم تجزیه کننده استاندارد DNSCrypt را در Wireshark پیدا کنم).

DNSCrypt یک سرویس پروکسی است که یک کانال امن بین یک حل کننده DNS مشتری و یک حل کننده DNS بازگشتی در حال اجرا بر روی سرور ایجاد می کند. DNSCrypt بر این اساس دارای دو بخش است: مشتری و سرور. از طریق ترافیک DNS که معمولاً به آن منتقل می شود فرم باز، ممکن است اطلاعات مربوط به سایت هایی که بازدید می کنید درز کند. علاوه بر این، پرس و جوهای DNS یک بردار حمله رایج برای جعل آدرس هستند. جایگزینی آدرس سیستم DNS Resolver با آدرس سرور جعلی می باشد عادی تروجان هابرای چندین سال همین امر در مورد حملات به روترهای خانگی نیز صدق می کند. DNSCrypt به شما اجازه می دهد تا درخواست ها و پاسخ های DNS را رمزگذاری کنید (و همچنین در برابر جعل تا حد محدودی محافظت کنید). احراز هویت سرور و کلاینت امکان پذیر است، اما همیشه از این ویژگی استفاده نمی شود. به طور کلی، موضوع پنهان کردن ترافیک DNS (DNS Privacy) اکنون محبوبیت قابل توجهی پیدا کرده است. علاوه بر DNSCrypt، به عنوان مثال، پروتکل "DNS over TLS" وجود دارد (DNS over TLS - آخرین RFC 7858، که با وجود برخی "وارونگی ها" بدتر از DNSCrypt به نظر نمی رسد). تحولات دیگری نیز وجود دارد.

DNSCrypt. پروتکل می تواند از TCP و UDP به عنوان انتقال استفاده کند. در عمل، UDP در صورت موجود بودن ترجیح داده می‌شود، اما مشخصات به شدت نیازمند پشتیبانی از TCP است (نه UPD، که اختیاری است). TCP به دلیل ماهیت جلسه ای که دارد طبیعتاً جذاب است. اما UDP بسیار سریعتر است، به خصوص برای سرویس های شلوغ. به دلیل مشکلات حملات DDoS و برخی مسائل امنیتی دیگر، اکنون یک حرکت مد روز به سمت ترجمه وجود دارد حداکثر تعدادسرویس های موجود در TCP، این به ویژه در مورد DNS صدق می کند. با این حال، در زیر درباره عملکرد DNSCrypt فقط از طریق UDP صحبت می کنم، زیرا این گزینه سنتی برای DNS است. شماره پورت DNSCrypt (سرور) توصیه شده 443 است (این معمولاً در باز است شبکه های شرکتی; به عنوان مثال، استفاده از 443/udp برای تعدادی از VPN ها و سایر خدمات استاندارد است. 443/tcp TLS/HTTPS، پایه و اساس خدمات وب است). با این حال، Yandex در اجرای DNSCrypt از یک شماره غیرمجاز استفاده می کند: 15353، این احتمالاً به دلیل ایده هایی برای غلبه بر موانع مختلف شبکه است.

کمی بیشتر در مورد موانع: اگر ارائه دهنده کانال چنین تمایلی داشته باشد، مشکلی برای مسدود کردن ترافیک DNSCrypt وجود نخواهد داشت. همانطور که از توضیحات زیر مشخص خواهد شد، این پروتکل سعی نمی کند واقعیت استفاده از آن را پنهان کند. به ترافیک این پروتکلروشن کن نشانگرهای استاندارد، که به شما امکان می دهد بسته ها را حتی در ابتدایی ترین روترها با استفاده از یک قانون ساده "دو خط" شناسایی و فیلتر کنید. در این حالت، به عنوان مثال، دسترسی برای سایر جلسات TCP در حال اجرا در پورت 443 باقی خواهد ماند.

در DNSCrypt، ایجاد یک جلسه بین مشتری و سرور با یک درخواست DNS معمولی ارسال شده به آدرس و شماره پورت مربوطه میزبان شروع می شود که توابع تفکیک نام را ارائه می دهد. این یک درخواست رکورد TXT برای یک نام است نوع خاص(یعنی درخواست را می توان به راحتی فیلتر کرد). به عنوان مثال، در مورد سرویس Yandex: 2.dnscrypt-cert.browser.yandex.net. این نام خاص ممکن است قابل واگذاری نباشد. مقدار 2 - مربوط به نسخه DNSCrypt است. نسخه فعلی نسخه دوم است. در پاسخ، سرور باید یک یا چند گواهی DNSCrypt ارسال کند (تاکید می کنم: آنها هیچ ارتباطی با گواهینامه های SSL ندارند).

تصویر یک بسته با گواهی از سرور Yandex DNSCrypt را نشان می دهد.

گواهی مجموعه ای از چندین فیلد است: نسخه گواهی، مقدار امضا، کلید عمومیسرور، بایت های جادویی برای مشتری (آنها به عنوان یک شناسه برای درخواست های مشتری خدمت می کنند - سرور می تواند بفهمد که در هنگام پاسخ دادن از کدام کلید استفاده می کند) شماره سریالو تاریخ انقضا

این مشخصات فرض می کند که سرور یک کلید عمومی کوتاه مدت را به عنوان بخشی از گواهی ارسال می کند. (با این حال، در مورد سرور Yandex، کلید داده شدهحداقل از پایان ماه مارس، زمانی که یک نسخه بتا از مرورگر با پشتیبانی از DNSCrypt راه اندازی شد، تغییر نکرده است.) امضای روی گواهی باید از یک جفت کلید متفاوت ایجاد شود. کلید عمومی این جفت برای مشتری شناخته شده است - تأیید امضا ضروری است. بدیهی است که امضای گواهی با همان کلیدی که در جلسه استفاده می شود بی معنی است. من بررسی نکردم که آیا اعتبار سنجی انجام می دهد یا خیر گواهی سرور"مرورگر Yandex". واقعیت این است که در مدل تهدیدی که هدف استفاده از DNSCrypt در Yandex.Browser است، تأیید اعتبار یک گواهی معنی چندانی ندارد و همچنین مقایسه مقدار کلید با یک کپی ذخیره شده (من به این نقطه در زیر بازخواهم گشت).

به عنوان رمزنگاری اولیه، DNSCrypt از ساختارهایی از رمز Salsa20 (XSalsa20)، توابع هش Poly1305 (برای اجرای رمزگذاری تأیید شده) و الگوریتم X25119-hsalsa20 برای تولید یک کلید جلسه مشترک استفاده می کند (الگوریتم از تابع Curveliphsal2019 استفاده می کند). . این طرح ها توسط Daniel J. Bernstein توسعه داده شد و مدت هاست که به عنوان بسیار محکم شناخته شده اند. الگوریتم به دست آوردن یک راز مشترک (کلید جلسه) از نظر ریاضی با الگوریتم دیفی-هلمن مرتبط است. توجه دارم که راز مشترک این است در این مورداگر کلید مخفی مربوطه از یک جفت کلید سرور (یا کلاینت) شناخته شود، می توان پس از این واقعیت بازیابی کرد، این اجازه می دهد تا ترافیک ثبت شده قبلی رمزگشایی شود، به همین دلیل است که مشخصات استفاده از کلیدهای کوتاه مدت را توصیه می کند.

رمز XSalsa20 در حالت رمزگذاری احراز هویت شده به طول غیرانسی 192 بیت (24 بایت) نیاز دارد. استفاده مکرر از ترکیب کلید و نونس مجاز نیست. این به دلیل معماری رمز XSalsa20 است - استفاده مجدد nonce منجر به نشت می شود: طرف شنونده مقدار XOR یک جفت متناظر را می داند متون باز. بنابراین، nonce باید هر بار جدید باشد، اما نه لزوما تصادفی. پارامتر nonce در DNSCrypt به دو صورت مشتری و سرور وجود دارد.

بیایید به رمزگذاری شده نگاه کنیم درخواست مشتری، ارسال شده توسط Yandex.Browser.

اولین فیلد درخواست مقدار جادویی مشتری است (بایت های جادویی پرس و جو مشتری): بخشی از کلید عمومی سرور که قبلاً به دست آمده است در اینجا استفاده می شود. در صورت لزوم، این "بایت های جادویی" می توانند به عنوان امضایی عمل کنند که به شما امکان می دهد درخواست هایی را در ترافیک ارسال شده به DNSCrypt انتخاب کنید.
فیلد بعدی کلید عمومی مشتری کوتاه مدت است.
مقدار nonce مشتری 96 بیت (12 بایت) است، که نیمی از مقدار nonce مورد نیاز برای رمز XSalsa20 است (طبق مشخصات DNSCrypt، با بایت هایی با مقدار 0 پر شده است). می توانید از یک شمارنده استفاده کنید، Yandex.Browser دقیقاً این کار را انجام می دهد: ظاهراً یک مقدار 64 بیتی مهر زمانی میلی ثانیه (زمان تولید درخواست) در اینجا منتقل می شود که چهار بایت مقادیر شبه تصادفی به آن اضافه می شود. در صورت واقعی بودن زمان دقیق، در متن واضح منتقل می شود، توجه می کنم که پارامترهای رانش ساعت سیستمبه عنوان یک نشانه خوب برای شناسایی یک خاص عمل می کند دستگاه سخت افزاری, – یعنی می تواند برای ناشناس سازی استفاده شود.
آخرین فیلد خود درخواست رمزگذاری شده است. برای رمزگذاری از یک کلید مخفی مشترک استفاده می شود که توسط طرفین بر اساس کلیدهای عمومی ارسال شده محاسبه می شود. در مورد مشتری، کلید عمومی در بسته درخواست DNS منتقل می شود (به بالا مراجعه کنید). "Yandex.Browser" از رویه استاندارد پیروی می کند و هر بار که مرورگر راه اندازی می شود، یک جفت کلید جدید (عمومی/مخفی) برای X25119-hsalsa20 ایجاد می کند. از padding استاندارد (ISO/IEC 7816-4: 0x80 و صفر بایت در صورت نیاز) برای تراز کردن داده ها با یک مرز بلوک 64 بایتی، همانطور که توسط مشخصات لازم است، استفاده می شود.

بلوک داده های رمزگذاری شده به احتمال زیاد نتیجه استفاده از تابع crypto_box از کتابخانه libsodium (یا NaCl، که توسط مشخصات DNSCrypt به آن ارجاع داده شده است؛ libsodium انشعابی از NaCl است) است. من فرض کردم که کد احراز هویت 16 بایتی (MAC) که برای تأیید صحت پیام قبل از رمزگشایی استفاده می شود، احتمالاً در ابتدای بلوک قرار دارد. با این حال، از آنجایی که من سعی نکردم اطلاعات را رمزگشایی کنم، تعیین مکان کد چندان مهم نیست. برای رمزگشایی می‌توانید از کلید مخفی استفاده کنید که در حین کار مرورگر در حافظه ذخیره می‌شود، اما برای استخراج آن، باید برای مدتی با دیباگر و دی اسمبلر سرهم کنید.

پاسخ رمزگذاری شده دریافت شده از سرور:

(به راحتی می توان فهمید که پاسخ ارائه شده در اسکرین شات تقریباً پنج ثانیه پس از درخواست رسیده است؛ ظاهراً چرا این اتفاق افتاده است موضوعی برای یادداشت جداگانه است.)

بسته با ماژیک باز می شود، در این مورد، بایت هایی که حاوی یک نشانه پاسخ DNSCrypt هستند (دوباره، یک امضای خوب برای تشخیص ترافیک). این بایت ها توسط پروتکل تعریف می شوند و باید در ابتدای هر پاسخ سرور به درخواست رزولوشن DNS وجود داشته باشند.
فیلد بعدی nonce (Response nonce) است. فیلد حاوی مقدار nonce است که سرور هنگام رمزگذاری این پاسخ استفاده می کند. میدان از دو ساخته شده است قسمت های مساوی, هر کدام 12 بایت: هیچ یک از درخواست مشتری و سرور مربوطه.
بخش نهایی بسته داده های پاسخ رمزگذاری شده است، فرمت آن شبیه به درخواست است.

حالا بیایید با استفاده از Yandex.Browser به عنوان مثال به مدل تهدید برگردیم. اگر تنظیمات مرورگر استفاده از DNSCrypt را، به عنوان مثال، از طریق سرورهای Yandex فعال کند، اما دسترسی به سرور مربوطه مسدود شده باشد، مرورگر (مانند نسخه بتا) به طور شفاف، بدون هشدار، به استفاده از حل کننده سیستم تغییر می کند. چرا این هدف از تأیید اعتبار گواهی‌های سرور DNSCrypt را نادیده می‌گیرد؟ زیرا یک مهاجم فعال که می‌تواند بسته‌ها را در سطح IP جعل کند تا DNSCrypt را در مرورگر غیرفعال کند، به‌جای هدر دادن منابع برای ایجاد پاسخ‌ها، به سادگی می‌تواند دسترسی به سرور را مسدود کند. از این می توان نتیجه گرفت که مدل تهدید Yandex شامل جایگزینی بسته فعال در مسیر سرور DNSCrypt به مشتری نمی شود.

در نهایت، چند کلمه در مورد چگونگی ارتباط DNSCrypt با DNSSEC. DNSSEC - داده های ترافیک DNS را پنهان نمی کند، اما بدون توجه به کانال تبادل اطلاعات، از جایگزینی آن محافظت می کند. در مورد DNSSEC، مهم نیست که از کدام کانال داده ها از DNS دریافت می شود، نکته اصلی این است که کلیدها در جای خود قرار دارند. DNSCrypt – ترافیک را پنهان می کند و به میزان محدودی از آن در برابر جایگزینی در مسیر از حل کننده بازگشتی (سرویس حل و فصل) به مشتری محافظت می کند. اگر داده‌ها در راه حل‌کننده (یا در خود سرور حل‌کننده) تغییر کرده باشند، و از DNSSEC پشتیبانی نمی‌کنند، کلاینت اطلاعات تحریف‌شده را دریافت می‌کند، البته از طریق یک کانال محافظت‌شده با DNSCrypt. سرورهایی که DNSCrypt را ارائه می دهند ممکن است از DNSSEC نیز پشتیبانی کنند.

بعدی - نظرات و بحث ها

(پیام های زیر توسط خوانندگان سایت از طریق فرم موجود در انتهای صفحه اضافه می شود.)

هر کسی که به گمنامی در اینترنت فکر می کند می داند راه عالیمخفی کردن آدرس IP خود در اینترنت یک سرویس VPN است. با این حال، حتی با اتصال VPN، پرس و جوهای سرور DNS اغلب محافظت نشده باقی می مانند و شما به راحتی می توانید پرس و جوهای DNS خود را دنبال کنید. این در غیر این صورت "DNSleaks" یا "نشت DNS" نامیده می شود.

بیایید نگاهی دقیق‌تر به اینکه DNS چیست و چه مشکلاتی وجود دارد بیندازیم.

همانطور که می دانید هر رایانه ای در اینترنت آدرس IP مخصوص به خود را دارد، بدون اطلاع از آدرس IP رایانه، ارسال اطلاعات یا درخواست برای آن غیرممکن است. آدرس IP یک عدد 4 بایتی است که با نقطه از هم جدا شده است (به عنوان مثال 162.234.12.110 یا 78.31.54.226).

برای انسان عادیبه خاطر سپردن تعداد زیادی آدرس IP آسان نیست، بنابراین در ابتدای توسعه اینترنت، نیاز به ابزاری ایجاد شد که زندگی را برای کاربران اینترنت آسان‌تر کند. DNS، سیستم نام دامنه، به چنین ابزاری تبدیل شد. سرور DNS ابزاری است که به شما امکان می دهد آدرس IP را از نام دامنه تعیین کنید.

به عنوان مثال، شما آدرس وب سایت را در خط مرورگر وارد کرده اید، مرورگر درخواستی را به سرور DNS ارسال می کند که در تنظیمات اتصال اینترنت شما مشخص شده است. سرور یک بسته پاسخ حاوی آدرس IP سایت مورد نظر را ارسال می کند.

از یک طرف، همه چیز به راحتی انجام می شود - فقط کابل را به آن وصل کنید کارت شبکه، به طور خودکار سرور DNS ارائه دهنده با پاسخ سریع به شما اختصاص داده شد و همه چیز کار می کند. اما از سوی دیگر، این طرح دو مشکل دارد:

1) بدون رمزگذاری اتصال. این بدان معنی است که هر مهاجمی می تواند ترافیک شما را رهگیری کند و آدرس IP شما را جعل کند. به عنوان مثال، نشان دادن یک صفحه بانکداری آنلاین جعلی به شما. همچنین توصیه می شود این ترافیک را از ارائه دهنده یا از آن پنهان کنید اجرای قانون(شما هرگز جی را نمی شناسید).

2) سرورهای ISP DNS طبق قانون ملزم به ذخیره گزارش‌ها هستند(از چه IP، چه سایت هایی بازدید شده اند و زمان اتصال)، و همچنین در صورت درخواست سازمان های مجری قانون، این لاگ ها را ارائه دهید (امیدوارم همه این را بدانند؟ J). حتی بیشتر می گویم، 99٪ از سرورهای DNS جهان گزارش می نویسند و آن را پنهان نمی کنند.

اگر به طور ناگهانی نمی خواهید کسی داده های شما را رهگیری کند یا گزارش های بازدیدهای شما را بخواند، وجود دارد گزینه قابل اعتماد. آنچه باید انجام شود:

1) باید اتصال را رمزگذاری کنید. یک برنامه DNSproxy برای این کار وجود دارد. نه مستقیماً به سرور DNS، بلکه از طریق یک حل‌کننده DNS رمزگذاری شده است (به سادگی درخواست‌ها را به سرور DNS هدایت می‌کند). به نوبه خود، حل کننده داده ها را به سرور DNS، همچنین از طریق یک اتصال رمزگذاری شده، منتقل می کند. یعنی از این طریق با استفاده از sniffers (مثلا WIreshark) فقط می توانید آدرس IP رزولور را پیدا کنید. اما از آنجایی که بسته ها با استفاده از "رمزگذاری منحنی بیضوی" رمزگذاری می شوند، نمی توان تعیین کرد که با کدام سرور DNS خاصی مبادله می کنیم.

2) باید از سرورهای DNS استفاده کنید که لاگ نگه نمی دارند. همانطور که خودتان متوجه شدید، سرورهای ارائه دهنده بلافاصله ناپدید می شوند. همچنین، برای ناشناس ماندن، نمی توانید از سرورهای DNS Google یا Yandex استفاده کنید، زیرا آنها صادقانه به ذخیره اطلاعات اعتراف می کنند (قراردادهای محرمانه آنها را بخوانید). اما سرورهای DNS وجود دارند که به ما کمک می کنند. این www.opennicproject.org است. سایت می گوید که سرورها هیچ گزارشی را نمی نویسند (خب، بیایید آن را باور کنیم). اما متاسفانه این سرورها ناپایدار هستند و گاهی اوقات از کار می افتند. برای حل این مشکل می توانید از برنامه استفاده کنید "پراکسی اکریلیک DNS". این امکان را به شما می دهد که نه به یک سرور DNS، بلکه به 10 مورد به طور همزمان پرس و جو کنید. و بسته ای از سروری که سریعتر می رسد توسط برنامه پذیرفته می شود. بنابراین، ما دو مشکل را به طور همزمان حل خواهیم کرد - از دست دادن سرعت درخواست را به حداقل می رسانیم (زیرا بیشترین تبادل سریعداده‌ها معمولاً با سرورهای DNS ارائه‌دهنده رخ می‌دهند)، و ما ناپایداری هر سروری را کاهش می‌دهیم.

بنابراین باید اتصال به را رمزگذاری کنیم DNS امنسرور این نه تنها برای کسانی که از VPN استفاده نمی کنند مفید خواهد بود (نحوه حل مشکل نشت DNS بعداً نوشته خواهد شد). بیا شروع کنیم:

2) در تنظیمات شما اتصال شبکهباید به صورت دستی آدرس DNS را وارد کنید. به "شبکه و مرکز کنترل" بروید دسترسی مشترک" -> "اتصال از طریق شبکه محلی" -> "Properties" -> "Internet Protocol version 4 TCP/IPv4". در آنجا 127.0.0.1 قرار دادیم. خط دوم باید خالی بماند.

3) برای راه اندازی AcrylicDNSProxy، از طریق Start بروید و روی " کلیک کنید سرویس اکریلیک را شروع کنید».یک پیام نشان دهنده راه اندازی موفقیت آمیز باید ظاهر شود.

4) اکنون سرورهای DNS خود را در وب سایت www.perfect-privacy.com/dns-leaktest بررسی می کنیم. باید چیزی شبیه این باشد:


برنج. 2

می توانید یک فایل اضافه کنید AcrylicController.exeبه راه اندازی

5) اکنون با استفاده از برنامه DNScrypt درخواست های خود را به سرورهای DNS رمزگذاری می کنیم.

6) dnscrypt-winclient.exe را باز کرده و اجرا کنید. در آنجا کارت شبکه خود را انتخاب کرده و Install را کلیک می کنیم. اکنون اتصال به سرورهای DNS رمزگذاری شده است.

7) بیایید بررسی کنیم که خدمات تأیید ما اکنون چه چیزی را به ما نشان می دهد. به www.perfect-privacy.com/dns-leaktest بروید. هیچ یک از سرورهای ما نباید تصمیم بگیرند.

و اگر به http://whoer.net بروید، تنها چیزی که می‌تواند نشان دهد آدرس حل‌کننده DNS است که کوئری‌های DNS از آن عبور می‌کنند. خود سرورها "ناشناخته" هستند.


برنج. 3

رمزگذاری VPN + DNS

شکل یک نمودار معمولی از اتصال شما را هنگام اتصال به سرورهای VPN نشان می دهد.


شکل 4.

همانطور که می بینید، یک آسیب پذیری وجود دارد - درخواست های DNS می توانند به طور همزمان هم از طریق سرور VPN و هم مستقیماً به سرور DNS مشخص شده اتصال شبکه شما ارسال شوند.

به نظر می رسد که شما به سادگی می توانید سرور DNS را به صورت دستی در تنظیمات اتصال به عنوان 127.0.0.1 ثبت کنید، به طوری که هیچ درخواست های غیر ضروریبه ارائه دهنده DNS. اما، بدیهی است، هنگام قطع ارتباط از اینترنت VPNکار نخواهد کرد زیرا اتصال به VPN از سرورهای DNS خود استفاده می کند. اگر به سادگی دو سرور پروژه www.opennicproject.org را وارد کنید، این کار باعث کاهش سرعت گشت و گذار در اینترنت در هنگام غیرفعال شدن VPN می شود. در این مورد نیز توصیه می شود برنامه AcrylicDNSProxy را نصب کنید که اجازه نمی دهد سرعت گشت و گذار شما کاهش پیدا کند. اما از آنجایی که AcrylicDNSProxy را نصب کردید، چرا DNScrypt را نصب نمی کنید؟

اگر 100٪ مواقع از خدمات VPN استفاده می کنید، می توانید به سادگی یک آدرس IP را در آن ثبت کنید تنظیمات DNS: 127.0.0.1. کافی خواهد بود.

بنابراین، طرح جالبی پیدا شد که به شما امکان می‌دهد درخواست‌های DNS را ناشناس کنید و پنهان کنید، که در صورت مواجهه با «مقامات» و اگر یک هکر شرور محلی تصمیم بگیرد درخواست‌های DNS را تغییر مسیر دهد و سایت‌های فرزندانتان را به جای «خب یک دقیقه صبر کنید” - سایت هایی برای بزرگسالان .

توجه: اگر همه اینها برای شما فایده ای نداشت، فقط AcrylicDNSProxy را نصب کنید که سرورهای ارائه دهنده شما، Yandex، Google و غیره را نشان می دهد، که به شما سرعت قابل توجهی در گشت و گذار در اینترنت می دهد.

با تشکر از توجه شما.

بهترین مقالات در این زمینه