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

از سرور DNS با رمزگذاری استفاده کنید. ناشناس بودن پرس و جوهای DNS

هر کسی که به گمنامی در اینترنت فکر می کند می داند راه عالیمخفی کردن آدرس 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 و غیره را نشان می دهد، که به شما سرعت قابل توجهی در گشت و گذار در اینترنت می دهد.

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

مردم اغلب می پرسند 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". واقعیت این است که در مدل تهدیدی که هدف قرار گرفته است با استفاده از DNSکریپت در Yandex.Browser، اعتبار گواهینامه چندان منطقی نیست، و همچنین مقایسه مقدار کلید با یک کپی ذخیره شده (در زیر به این نقطه بازخواهم گشت).

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

رمز XSalsa20 در حالت رمزگذاری احراز هویت شده به طول غیرانسی 192 بیت (24 بایت) نیاز دارد. استفاده مکرر از همان کلید و ترکیب nonce مجاز نیست. این به دلیل معماری رمز 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 نیز پشتیبانی کنند.

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

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

DNSCrypt به شما کمک می کند تا ترافیک DNS را رمزگذاری کنید و از آن در برابر اشخاص ثالث محافظت کنید.

    DNS برای چیست؟
  1. راه اندازی یک سرور DNS خوب است، اما حتی بهتر است ترافیک بین سرور و مشتری، یعنی شما، رمزگذاری شود. قبلاً در مقالات دیگری نوشته ام که DNS چیست و پیشرفته ترین خدمات سرور DNS را بررسی کرده ام. تفاوت بین DNS ساده و DNSCrypt این است که تمام ترافیک ارسال شده از دستگاه رایانه شما به سرور DNS رمزگذاری نشده است. تنها چیزی که می دهند خدمات ساده DNS مسدود کردن سایت های مشکوک است. و ترافیک، همانطور که در بالا نوشتم، که به کامپیوتر شما منتقل می شود و یک درخواست از کامپیوتر شما به سرور DNS ارسال می شود، در حالت شفاف عبور می کند.
  2. در اینجا لیستی از مقالاتی است که قبلاً در مورد آنها نوشتم سرویس معروف DNS:
  3. اینها خدمات DNSکاملاً از دستگاه رایانه خود محافظت کنید و گزینه فیلتر سایت را ارائه دهید. اما همانطور که در بالا نوشتم، ترافیک ارسال شده از سرور DNS به دستگاه رایانه شما رمزگذاری نشده است. می‌توانید از اولین مقاله‌ای که در بالا فهرست کردم، درباره راه‌اندازی دستگاه‌های رایانه‌ای مختلف در کنار خود به عنوان مشتری اطلاعات بیشتری کسب کنید. همچنین یک نمای کلی از نحوه انتخاب وجود دارد سرور مناسب DNS. شاید او در مورد DNS بیشتر به شما بگوید. از آنجایی که در این مقاله ما در مورد DNS صحبت می کنیم، اما ما فقط روی رمزگذاری خود اتصال از سرور DnS و رایانه شما تمرکز می کنیم.
  4. رمزگذاری اتصال DNS:
  5. خود را رمزگذاری کنید اتصال DNSرا می توان بر روی خود نصب و پیکربندی کرد دستگاه کامپیوتریو همچنین به وب سایت رسمی مراجعه کنید. دانلود آخرین نسخه DNSCrypt برای دستگاه رایانه شما که دارای ویندوز است، همه پیوندها را در پایان مقاله ارسال خواهم کرد. پس از باز کردن آرشیو به دیسک سیستمپوشه C:/ می تواند بنا به صلاحدید شما نامگذاری شود یا به عنوان پیش فرض باقی بماند. خط فرمان را به عنوان یک مدیر باز کنید، اگر نمی دانید با خواندن مقاله می توانید این کار را انجام دهید. بعدی در خط فرمانبه پوشه ای که در درایو C:/ باز کرده اید بروید. نام پوشه موجود در مسیر با نامی که شما انتخاب کردید متفاوت است، Enter را فشار دهید و اگر همه چیز درست بود به عکس زیر پاسخ می دهید:
  6. بعد، به پوشه ای که آن را باز کرده اید بروید، پوشه را در یک Explorer معمولی باز کنید و فایل dnscrypt-resolvers.csv را در آن پیدا کنید، سرور DNS را که به آن متصل خواهید شد انتخاب کنید. در وهله اول سرور است.احتمالاً همه چنین برنامه ای را می شناسند. علاوه بر سرورهای Adguard، بسیاری از سرورهای دیگر نیز برای انتخاب وجود دارد، اما از لیست، این معروف ترین است. اگرچه من Yandex را ترجیح می دهم.
  7. می توانید از DNSCrypt استفاده کنید و آن را برای اتصال به Yandex DNS پیکربندی کنید، در وب سایت رسمی با جزئیات بیشتر یک نام و غیره برای راه اندازی برنامه DNSCrypt وجود دارد (شخصا، به نظر من، من پیکربندی کردم Yandex DNS). پارامترهای DNSYandex: yandex"Yandex"،"Yandex سرور عمومی DNS"، "Anycast"،"""https://www.yandex.com،1، نه، نه، نه،77.88.8.78:15353،2.dnscrypt -cert.browser.yandex.net,D384:C071:C9F7:4662:AF2A:CCD5:7B5D:CC97:14D4:07B6:AD36:01E1:AEDC:06D5:6D49:6327 برگرفته از آن فایل با تنظیمات برنامه solvers.csv) همانطور که می بینید، یک اتصال به سرور DNS از قبل انتخاب شده تنظیم کنید، و نه تنها از فایل، بلکه از مقالات ذکر شده در بالا. با راه اندازی اتصال خود با استفاده از این روش، نیازی به نصب برنامه های ضد تبلیغات و نظارت نخواهید داشت.
  8. در این مثال در مورد اتصال سرور DNS ADGuard صحبت خواهم کرد. بعد از لیست فایل dnscrypt-resolvers.csv نام ها را انتخاب کردیم، نام سرور به صورت زیر خواهد بود: adguard-dns-family-ns1 و دستور را در خط فرمان تایپ کنید، در تصویر آن را هایلایت کردم. زیر:
  9. اگر سرور در دسترس باشد، مانند تصویر بالا در مستطیل ضربه بزنید. با دستور زیر که در تصویر زیر مشخص شده است DNSCrypt را روی سیستم نصب کنید و Enter را فشار دهید:
  10. اگر همه چیز خوب پیش برود، پاسخ در خط فرمان مانند تصویر بالا در یک مستطیل خواهد بود. اگر می خواهید DnSCrypt را حذف کنید، دستور یکسان است، فقط در محل آخرین Install، Uninstall وجود دارد. سپس همه چیز یکسان است اگر می خواهید سرور را تغییر دهید، همین کار را با آن انجام دهید نصب و راه اندازیو غیره برنامه پیکربندی شده است و اکنون باید دستگاه رایانه خود را از طریق DNSCrypt متصل کنید. ما به اتصالات اتصال شما می رویم و در ویژگی های اتصال سرورهای DNS ترجیحی، 127.0.0.1 را شماره گیری کنید این آدرس دستگاه شما است. در مورد تغییر آدرس های DNSاز نمونه مقالاتی که در بالا نوشتم می توانید سرورهای موجود در اتصال را پیدا کنید. با استفاده از پیوندهای بالای مقاله می توانید نحوه ورود به ویژگی های اتصال برای تغییر آدرس Dns را بیابید.

شما فکر می کنید که ناشناس بودن شما به طور قابل اعتماد محافظت می شود. اما متاسفانه اینطور نیست. یک کانال بسیار مهم برای افشای اطلاعات خصوصی شما وجود دارد - سرویس 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 ISP تماس می گیرد تا نام IP را حل کند. در نتیجه، ارائه‌دهنده شما یا هر کسی که در «آخرین مایل»، یعنی بین شما و ارائه‌دهنده قرار دارد، می‌تواند همه نام‌های گره‌هایی را که به آنها دسترسی دارید دریافت کند. گزینه فوق با جایگزینی آدرس IP کاملاً بی رحمانه است، اما در هر صورت می توان گره هایی را که بازدید کرده اید ردیابی کرد و از این اطلاعات برای اهداف خود استفاده کرد.

اگر از ISP خود می ترسید یا نمی خواهید آنها ببینند از چه سایت هایی بازدید می کنید، می توانید (البته، به جز با استفاده از 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.

DNSCrypt مشخصاتی است که در آن پیاده سازی شده است نرم افزار unbound، dnsdist، dnscrypt-wrapper و dnscrypt-proxy.

2. یک کپی را ذخیره کنید منبع فایلپیکربندی example-dnscrypt-proxy.toml را انجام دهید و مطابق با نیاز خود پیکربندی کنید.

مثال ما از راه اندازی یک . لیستی از حل کننده های DNS عمومی در این لینک موجود است.

3. مطمئن شوید که برنامه ها و سرویس های دیگر به پورت 53 سیستم شما گوش نمی دهند و برنامه dnscrypt-proxy را در خط فرمان اجرا کنید. خط ویندوزدر حالت مدیر دستگاه تنظیمات DNS خود را برای آدرس IP پیکربندی شده تغییر دهید.

در مورد ما، ما باید DNS را به 127.0.0.1 پیکربندی کنیم ( مقدار مشخص شدهبرای پارامتر listen_addresses در فایل پیکربندی) در پارامترهای پروتکل TCP/IP. نحوه انجام این کار برای ویندوز در مقاله تنظیم DNS در رایانه ای که ویندوز دارد توضیح داده شده است. در اینجا یک اسکرین شات از تنظیمات مورد ما آمده است:

4. سرویس سیستم را نصب کنید.

نصب سرویس سیستم dnscrypt-proxy (ویندوز، لینوکس، مک او اس)

از یک خط فرمان که به عنوان مدیر اجرا می شود، دستور زیر dnscrypt-proxy -service install را وارد کنید تا dnscrypt-proxy به عنوان ثبت شود. سرویس سیستمو سپس دستور dnscrypt-proxy -service start را وارد کنید تا سرویس راه اندازی شود.

در ویندوز این مرحلهلازم نیست. فقط روی فایل دوبار کلیک کنید server-install.batبرای نصب سرویس

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

مراحل نصب با سیستم عامل ها سازگار است سیستم های ویندوز، لینوکس (systemd، Upstart، SysV) و macOS (راه اندازی شد).

دیگر دستورات مفید: توقف، راه اندازی مجدد (مفید هنگام تغییر پیکربندی) و حذف نصب.

نصب dnscrypt-proxy در اوبونتو 18.04، 17.10

sudo add-apt-repository ppa:shevchuk/dnscrypt-proxy
به روز رسانی sudo apt
sudo apt نصب dnscrypt-proxy
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml

بیایید خط server_names را از کامنت برداریم (علامت # را برداریم) (و نام سرورها را با آنهایی که نیاز داریم جایگزین کنیم). برای ذخیره تغییرات، CTRL+O را فشار دهید، با تغییرات موافقت کنید و سپس CTRL+X را برای بسته شدن فشار دهید. یا از طرف مدیر در ویرایشگر متنفایل dnscrypt-proxy.toml واقع در /etc/dnscrypt-proxy/ را ویرایش کنید.

در تنظیمات شبکه - IPV4 - DNS - Automatic را غیرفعال کنید و 127.0.0.1 را تنظیم کنید.

Sudo sed -i "s/127.0.2.1/127.0.0.1/g" /lib/systemd/system/dnscrypt-proxy.socket
sudo systemctl daemon-reload
sudo systemctl stop dnscrypt-proxy.socket
sudo systemctl dnscrypt-proxy را فعال می کند
sudo systemctl start dnscrypt-proxy

سیستم را مجدد راه اندازی کنید.

نصب سرویس سیستم dnscrypt-proxy (Arch Linux)

مخزن Arch Linux AUR از نسخه 2 بسته پشتیبانی می کند.

1. نصب را کامل کنید:

Yaourt -S dnscrypt-proxy-go

2. سرویس را فعال و راه اندازی کنید:

Systemctl dnscrypt-proxy.service را فعال می کند
systemctl dnscrypt-proxy.service را شروع کنید

3. بررسی کنید که آیا سرویس با موفقیت شروع شده است:

وضعیت Systemctl dnscrypt-proxy.service

4. مشاهده محتویات لاگ:

Dnscrypt-proxy آماده است - سرورهای زنده:

اکنون dnscrypt-proxy در 127.0.0.1:53 گوش می دهد

اجرا بر روی لینوکس بدون روت

دستور زیر ویژگی های لازم را به فایل dnscrypt-proxy اضافه می کند و اجرای آن را بدون حقوق ریشه ممکن می کند:

Sudo setcap cap_net_bind_service=+pe dnscrypt-proxy

بررسی کار

بررسی کنید که همه چیز به درستی کار می کند. درخواست DNS برای solver.dnscrypt.info باید یکی از سرورهای DNS انتخابی را به جای سرورهای ISP شما برگرداند.

می توانید اطلاعات DNS خود را با استفاده از DNSLeak.com بررسی کنید. این سایت ها اطلاعات مربوط به آدرس IP شما و صاحب سرور DNS استفاده شده را برمی گردانند. اگر نتایج سرویس ISP شما را نشان دهد، نشت DNS وجود دارد.

DNSCrypt ساده برای ویندوز

برای ویندوز نیز می توانید از - ابزار پیکربندی استفاده کنید رمزگذاری DNSCryptبر کامپیوترهای ویندوزیبا رابط کاربری آسان

اشتباه تایپی پیدا کردید؟ Ctrl + Enter را فشار دهید

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