DNS over HTTPS е сигурен DNS. Това означава, че целият DNS трафик е криптиран и скрит в голямото поточно HTTPS трафика. С DNS over HTTPS се подобрява сигурността и поверителността на потребителя в интернет. Нека настроим сигурен DNS в Linux (Debian) и Windows.

Въведение

DNS (Domain Name System)

DNS (Domain Name System) превръща домейнните имена на ресурсите в интернет в съответните IP адреси. Заявките и отговорите на DNS се изпращат в открит текст. Ето например, как лесно може да се прочете домейнното име (adminkin.pro) в заявката и отговора на DNS с помощта на обикновен анализатор на мрежата:

DNS протокол. Заявка и отговор DNS в открит текст.

DNS утечка

DNS утечка (DNS leak) е ситуация, при която DNS заявките се изпращат чрез незащитени канали, като разкриват информацията за посетените от потребителя уеб сайтове и домейн имена. В тази ситуация трети страни, като интернет доставчици или злонамерени лица, могат да получат достъп до онлайн активността на потребителя. Това нарушава личните данни и безопасността на потребителя в интернет.

DNS през HTTPS (DoH)

DNS над HTTPS (DoH) е протокол за криптиране на DNS трафика, за да не могат трети страни да интерпретират препратените данни. DoH използва порт 443, който се използва и за всички останали HTTPS трафици (уеб трафик).

Dnscrypt-proxy

Dnscrypt-proxy е кроссплатформен DNS прокси. Повишава сигурността и поверителността, като обменя данни със защитени канали с високо ниво на отдалечени DNS сървъри. Поддържа, сред други, протокола за криптиране на DNS чрез HTTPS с използване на TLS 1.3. Ускорява работата чрез кеширане на DNS отговорите. За повече информация вижте документацията на разработчиците на dnscrypt-proxy в GitHub https://github.com/DNSCrypt/dnscrypt-proxy/wiki.

DNS над HTTPS в Windows

Инсталиране на dnscrypt-proxy

Изтегляме dnscrypt-proxy от разработчиците в GitHub: https://github.com/DNSCrypt/dnscrypt-proxy/releases. Търсим файл с име dnscrypt-proxy-win64-*.zip, изтегляме го и разархивираме.

Стартираме Командния ред на Windows като администратор:

DNS през HTTPS. Windows. Стартиране на команден ред.

Прехвърляме се в директорията, където разархивирахме dnscrypt-proxy. В моя случай това ще бъде командата:

cd c:\dnscrypt-proxy\win64\

Създаваме конфигурационен файл dnscrypt-proxy.toml:

copy example-dnscrypt-proxy.toml dnscrypt-proxy.toml

Стартираме dnscrypt-proxy:

.\dnscrypt-proxy.exe
DNS над HTTPS. Стартиране на dnscrypt-proxy.

Dnscrypt-proxy се стартира на IP адрес 127.0.0.1, на порт 53 и се подготвя да получава заявки както по протокола TCP, така и UDP. DNS резолверите се сортират по забавяне на отговора (вижте изображението по-горе).

Всичко! Dnscrypt-proxy е готов за работа:

DNS през HTTPS. Dnscrypt-proxy е готов за работа.

Ще проверим как ще се изпълни заявката за разрешаване на домейнното име adminkin.pro на IP адрес. За целта стартираме още един команден ред на Windows (няма нужда от стартиране като администратор), преминаваме в директорията dnscrypt-proxy и въвеждаме командата:

.\dnscrypt-proxy.exe -resolve adminkin.pro

Домейн името adminkin.pro беше разрешен чрез услугата на 127.0.0.1:53, т.е. чрез dnscrypt-proxy. IP адресът на заявения домейн беше успешно получен (77.222.56.16). Разрешаването на DNS работи!

Dnscrypt-proxy

Настройка DNS over HTTPS

За да пренасочим целия DNS трафик: от браузъри, уеб приложения, от самата ОС Windows чрез dnscrypt-proxy, ще променим DNS настройката на мрежовата връзка, чрез която излизаме в Интернет. Ще посочим като IP адрес на DNS сървъра – 127.0.0.1 (IP адрес на dnscrypt-proxy).

В моят случай мрежовата връзка, чрез която излизам в интернет, е Безжична мрежа. Избирам Свойства:

DNS през HTTPS. Промяна на DNS настройките на мрежовата връзка.

В прозорец Свойства кликвам с мишката върху IP версия 4 (TCP/IPv4), натискам бутона Свойства, след това избирам Използване на следните DNS сървъри и въвеждам 127.0.0.1:

DNS през HTTPS. IP адрес на DNS сървъра е 127.0.0.1.

Проверяваме как работи прегледът на уеб страници, изтеглянето на файлове, уеб приложенията, месинджърите – всичко, което може да използва DNS.

Регистрираме dnscrypt-proxy като системна услуга на Windows. Системната услуга на Windows се стартира при зареждане на операционната система и работи в заден план.

В конзолата, стартирана с администраторски права, натискаме комбинацията от клавиши Ctrl + C, за да спрем dnscrypt-proxy.

За да регистрирате dnscrypt-proxy като системна услуга в Windows, в командния ред на стартирана като администратор прозорец, въведете следната команда:

.\dnscrypt-proxy.exe -service install
DNS през HTTPS. Регистрираме dnscrypt-proxy като системна услуга в Windows.

За да стартирате dnscrypt-proxy, въведете командата:

.\dnscrypt-proxy.exe -service start

Спрете dnscrypt-proxy:

.\dnscrypt-proxy.exe -service stop

Рестартирайте dnscrypt-proxy, например, след като сте променили конфигурационния файл:

.\dnscrypt-proxy.exe -service restart

Отмяна на регистрацията на dnscrypt-proxy като системна услуга в Windows:

.\dnscrypt-proxy.exe -service uninstall

За да проверите дали DNS разрешението работи:

.\dnscrypt-proxy.exe -resolve example.com

Ще направим минимални промени в конфигурационния файл dnscrypt-proxy.toml. За тази цел отворете този конфигурационен файл като текстов файл в който и да е текстов редактор на Windows.

За да използвате само DNS резолвери, които прилагат протокола DNS over HTTPS, деактивираме използването на DNS резолвери, които прилагат протокола DNSCrypt:

dnscrypt_servers = false

За да проверите дали имате връзка с IPv6, можете да посетите уебсайта https://test-ipv6.com/. Дори ако нямате връзка с IPv6, някои приложения задължително ще изпращат DNS заявки за разрешаване на IPv6 адреси. Dnscrypt-proxy може да бъде настроен да дава незабавен отговор „няма IPv6 адреси“, вместо да изпраща заявка към по-високо ниво на DNS резолвера и да очаква безполезен отговор. Настройка за незабавен отговор: „

block_ipv6 = true

Запазваме конфигурационния файл и рестартираме dnscrypt-proxy.

Проверка на работоспособност на DNS over HTTPS.

Първо ще почистим DNS кеш. Стартираме командния ред като администратор и въвеждаме командата:

ipconfig /flushdns

DNS кеш е изчистен.

За да проверим, че целият DNS трафик минава през dnscrypt-proxy, ще спрем dnscrypt-proxy. И ще се уверим, че приложенията, включително уеб браузърите, вече не могат да разрешават DNS имена. Това може да означава, че целият DNS трафик е минавал през dnscrypt-proxy.

За да проверим работоспособността на DNS over HTTPS, ще стартираме захващането на трафика с помощта на мрежов анализатор, като например Wireshark. Ще приложим филтър, за да ни се показват само захванатите DNS пакети. Ще изчакаме известно време и ще се уверим в липсата на DNS пакети, т.е. в липсата на незащитен изходящ трафик.

Ето захванати 243 400 пакета, а от тях незашифровани DNS пакети – 0.

Липсва незащитен DNS трафик излизащ.

DNS над HTTPS в Linux (Debian)

Инсталиране на dnscrypt-proxy

Изтегляме dnscrypt-proxy от най-новата версия от разработчиците в GitHub: https://github.com/DNSCrypt/dnscrypt-proxy/releases. Търсим файл с име dnscrypt-proxy-linux_x86_64-*.tar.gz, изтегляме го и разархивираме, например, в директорията /opt/dnscrypt-proxy/ (на момента написването на статията, най-новата версия на dnscrypt-proxy беше 2.1.4):

wget https://github.com/DNSCrypt/dnscrypt-proxy/releases/download/2.1.4/dnscrypt-proxy-linux_x86_64-2.1.4.tar.gz
mkdir -p /opt/dnscrypt-proxy/ && tar -C /opt/dnscrypt-proxy -xvzf dnscrypt-proxy-linux_x86_64-2.1.4.tar.gz

Прехвърляме се в директорията, където разархивирахме dnscrypt-proxy. В моя случай това ще бъде командата:

cd /opt/dnscrypt-proxy/linux-x86_64/

Създаваме конфигурационен файл dnscrypt-proxy.toml:

cp example-dnscrypt-proxy.toml dnscrypt-proxy.toml

Проверяваме дали някой от сървисите не слуша нужния за нас порт 53:

ss -lp 'sport = :domain'

ss е инструмент за извеждане на информация за мрежовите сокети.“

-lp – флаг за извеждане на подробна информация.“

'спорт = :домейн' – това е филтър, който указва за търсене на сокети с определен изходящ порт. В нашия случай това е порт домейн (порт 53), който обикновено се използва за DNS (Domain Name System).’

Ако порт 53 не е зает, изходът от командата ще бъде следният:

Проверяваме дали порт 53 е зает.

Ако порт 53 е зает, трябва да спрете услугата, която го заема, и да я премахнете от автоматичното зареждане. Ако порт 53 е зает от systemd-resolved, тогава командите ще бъдат следните:

systemctl stop systemd-resolved
systemctl disable systemd-resolved

Стартираме dnscrypt-proxy:

./dnscrypt-proxy
DNS през HTTPS. Стартиране на dnscrypt-proxy в Linux (Debian)

Dnscrypt-proxy се стартира на IP адрес 127.0.0.1, на порт 53 и е готов да получава заявки както по протокол TCP, така и по UDP (вижте горната фигура). Зарежда се списък на DNS резолвери с криптиране, тестват се техните наличност и скорост на отговора.

Dnscrypt-proxy е готов за работа:

DNS през HTTPS. Dnscrypt-proxy е готов за работа в Linux (Debian).

Настройка DNS over HTTPS

Ще променим системните DNS настройки. Първо ще направим резервно копие на файла /etc/resolv.conf:

cp /etc/resolv.conf /etc/resolv.conf.backup

/etc/resolv.conf може да бъде как файл, така и символична връзка. Затова първо ще го изтрием с командата:

rm -f /etc/resolv.conf

След това ще създадем нов файл /etc/resolv.conf със следното съдържание:

nameserver 127.0.0.1
options edns0

Ще зададем атрибут „само за четене“ (immutable) на файла /etc/resolv.conf. Този атрибут не позволява дори на привилегировани потребители да променят файла и го защитава от случайни или нежелани промени.

chattr +i /etc/resolv.conf

За да премахнете атрибута „само за четене“, въведете командата:

chattr -i /etc/resolv.conf

Ще проверим как ще се изпълни заявката за разрешаване на домейнното име adminkin.pro към IP адреса. Въвеждаме командата:

/opt/dnscrypt-proxy/linux-x86_64/dnscrypt-proxy -resolve adminkin.pro

Името на домейн adminkin.pro беше разрешено чрез услугата на 127.0.0.1:53, т.е. чрез dnscrypt-proxy. IP адресът на заявения домейн беше успешно получен (77.222.56.16). Разрешаването на DNS работи!

Dnscrypt-proxy. Разрешаване на DNS имена в Linux.

Проверяваме работата на преглед на уеб страници, изтегляне на файлове и други дейности в система, където е необходимо разрешение на DNS имена.

Например, можем да получим съдържанието на началната страница на сайта https://adminkin.pro с помощта на инструмента curl от командния ред:

apt install curl
curl https://adminkin.pro

Получихте ли? Супер!

Сега ще регистрираме dnscrypt-proxy като системна услуга на Linux. Системната услуга се стартира при зареждане на системата и работи в фонов режим.

Спираме dnscrypt-proxy, като натиснем комбинацията от клавиши Ctrl + C в терминалното прозорец, където стартирахме dnscrypt-proxy.

За да регистрирате dnscrypt-proxy като системна услуга, въведете командата:

./dnscrypt-proxy -service install

Стартираме dnscrypt-proxy:

./dnscrypt-proxy -service start

За да спрете dnscrypt-proxy:

./dnscrypt-proxy -service stop

Рестартирайте dnscrypt-proxy, например, след като сте променили конфигурационния файл:

./dnscrypt-proxy -service restart

Отмяна на регистрацията на dnscrypt-proxy като системна услуга:

./dnscrypt-proxy -service uninstall

Редактираме конфигурационния файл dnscrypt-proxy.toml по същия начин, както го направихме в Windows (Настройка конфигурационного файла dnscrypt-proxy.toml в Windows). И не забравяме след промяната на конфигурационния файл да рестартираме dnscrypt-proxy.

Проверка на работоспособност на DNS over HTTPS.

Ще проверим работоспособността на DNS over HTTPS. Ще стартираме захващането на трафика с помощта на мрежов анализатор tcpdump:

apt install tcpdump
tcpdump -n dst port 53

Тази команда ще позволи да се заснемат и покажат само пакетите, които минават през порт 53. Така ще уловим незашифровани DNS пакети, ако са останали.

„-n“ означава, че tcpdump няма да извършва обратно DNS разрешаване на IP адреси и портове, а ще ги остави в числов формат.

В нов прозорец на терминала ще стартираме командата за получаване на началната страница на сайта https://adminkin.pro с помощта на утилитата curl:

curl https://adminkin.pro

Ура! Няма незашифровани DNS пакети:

DNS над HTTPS работи. Няма незащитени DNS пакети.

Ако спрете dnscrypt-proxy и възстановите файла /etc/resolv.conf от резервното копие, картината ще бъде различна:

Некриптирани DNS пакети

Изводи

Когато въвеждате домейнно име на сайт в адресната лента на браузъра, вашата система изпраща заявка за търсене на IP адреса на този домейн. В този момент, например, вашият интернет доставчик може да регистрира към кой домейн се свързвате. DNS over HTTPS прави този надзор невъзможен, а анонимността и поверителността на потребителя в интернет стават възможни. Благодарение на тази статия, настройката на DNS over HTTPS става възможна.

Много очаквам вашите въпроси в коментарите под статията!

Коментари

Вашият коментар

Этот сайт защищен reCAPTCHA, и к нему применяются Google Политика конфиденциальности и Условия использования.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.