Пешниҳоди домен дар асоси TLS 1.3

Муқаддима

Пешниҳоди домен дар асоси TLS 1.3
Системаҳои муосири филтркунии мундариҷаи корпоративӣ аз истеҳсолкунандагони машҳур ба монанди Cisco, BlueCoat, FireEye бо ҳамтоёни пурқуввати худ - системаҳои DPI, ки дар сатҳи миллӣ фаъолона татбиқ карда мешаванд, умумӣ доранд. Моҳияти кори ҳарду аз тафтиши трафики воридотӣ ва содиротии интернет ва дар асоси рӯйхатҳои сиёҳ/сафед тасмим гирифтан дар бораи манъи пайвастшавӣ ба интернет иборат аст. Ва азбаски ҳардуи онҳо дар асосҳои кори худ ба принсипҳои якхела такя мекунанд, усулҳои канорагирӣ аз онҳо низ умумияти зиёд хоҳанд дошт.

Яке аз технологияҳое, ки ба шумо имкон медиҳад, ки ҳам аз DPI ва ҳам системаҳои корпоративӣ ба таври муассир убур кунед, технологияи доменӣ мебошад. Моҳияти он дар он аст, ки мо ба як манбаи басташуда меравем ва дар паси дигар, домени ҷамъиятӣ бо обрӯи хуб пинҳон мешавем, ки бешубҳа аз ҷониби ягон система, масалан google.com баста намешавад.

Дар бораи ин технология аллакай мақолаҳои зиёде навишта шудаанд ва мисолҳои зиёде оварда шудаанд. Бо вуҷуди ин, технологияҳои маъмул ва ба наздикӣ муҳокимашуда DNS-over-HTTPS ва рамзкунонидашудаи SNI, инчунин версияи нави протоколи TLS 1.3 имкон медиҳанд, ки варианти дигари фронтинги домен баррасӣ шавад.

Фаҳмидани технология

Аввалан, биёед каме мафҳумҳои асосиро муайян кунем, то ҳама фаҳманд, ки кӣ кист ва барои чӣ ин ҳама лозим аст. Мо механизми eSNI-ро зикр кардем, ки фаъолияти он минбаъд баррасӣ хоҳад шуд. Механизми eSNI (Шифри номи сервер) версияи бехатари SNI мебошад, ки танҳо барои протоколи TLS 1.3 дастрас аст. Идеяи асосӣ ин рамзгузорӣ кардани маълумот дар бораи он, ки дархост ба кадом домен фиристода мешавад.

Акнун биёед бубинем, ки механизми eSNI дар амал чӣ гуна кор мекунад.

Фарз мекунем, ки мо як манбаи интернетӣ дорем, ки бо ҳалли муосири DPI баста шудааст (масалан, торрент трекери машҳури rutracker.nl-ро гирем). Вақте ки мо кӯшиш мекунем, ки ба вебсайти трекери торрент дастрасӣ пайдо кунем, мо нотаҳои стандартии провайдерро мебинем, ки нишон медиҳад, ки манбаъ баста шудааст:

Пешниҳоди домен дар асоси TLS 1.3

Дар вебсайти RKN ин домен воқеан дар рӯйхатҳои таваққуф номбар шудааст:

Пешниҳоди домен дар асоси TLS 1.3

Вақте ки шумо ба whois муроҷиат мекунед, шумо мебинед, ки худи домен дар паси провайдери абрии Cloudflare "пинҳон" аст.

Пешниҳоди домен дар асоси TLS 1.3

Аммо бар хилофи “мутахассисон”-и RKN, кормандони аз ҷиҳати техникӣ донотар аз Beeline (ё аз таҷрибаи талхи танзимгари машҳури мо таълим додаанд) аблаҳона сайтро аз рӯи суроғаи IP манъ накарданд, балки номи доменро ба рӯйхат илова карданд. Шумо метавонед инро ба осонӣ тафтиш кунед, агар шумо ба кадом доменҳои дигар дар паси як суроғаи IP пинҳон шудаанд, ба яке аз онҳо ташриф оред ва бубинед, ки дастрасӣ баста нашудааст:

Пешниҳоди домен дар асоси TLS 1.3

Ин чӣ гуна рӯй медиҳад? Чӣ тавр DPI провайдер медонад, ки кадом домени браузери ман фаъол аст, зеро ҳама иртибот тавассути протоколи https сурат мегирад ва мо то ҳол иваз кардани сертификатҳои https-ро аз Beeline мушоҳида накардаем? Оё ӯ фаҳмо аст ё маро дунбол мекунанд?

Биёед кӯшиш кунем, ки ба ин савол тавассути дидани трафик тавассути wireshark ҷавоб диҳем

Пешниҳоди домен дар асоси TLS 1.3

Намоиши скриншот нишон медиҳад, ки аввал браузер суроғаи IP-и серверро тавассути DNS дарёфт мекунад, сипас бо сервери таъинот дастфишории стандартии TCP ба амал меояд ва сипас браузер кӯшиш мекунад, ки пайвасти SSL-ро бо сервер барқарор кунад. Барои ин, он бастаи SSL Client Hello мефиристад, ки дар он номи домени манбаъ дар матни равшан мавҷуд аст. Ин майдонро сервери frontend cloudflare барои дуруст масири пайвастшавӣ талаб мекунад. Ин аст, ки провайдери DPI моро дастгир карда, пайвасти моро вайрон мекунад. Ҳамзамон, мо аз провайдер ягон ноустувор қабул намекунем ва мо хатои стандартии браузерро мебинем, ки гӯё сайт хомӯш карда шудааст ё кор намекунад:

Пешниҳоди домен дар асоси TLS 1.3

Акнун биёед механизми eSNI-ро дар браузер фаъол созем, тавре ки дар дастурҳо навишта шудааст Firefox :
Барои ин мо саҳифаи конфигуратсияи Firefox-ро мекушоем дар бораи: config ва танзимоти зеринро фаъол созед:

network.trr.mode = 2;
network.trr.uri = https://mozilla.cloudflare-dns.com/dns-query
network.security.esni.enabled = true

Пас аз ин, мо тафтиш мекунем, ки танзимот дар вебсайти cloudflare дуруст кор мекунанд. пайванд ва биёед ҳилларо бо трекери торренти худ дубора санҷем.

Пешниҳоди домен дар асоси TLS 1.3

Войла. Назоратчии дӯстдоштаи мо бе ягон сервери VPN ё прокси кушода шуд. Акнун биёед ба партовгоҳи трафик дар Wieshark назар андозем, то бубинем, ки чӣ рӯй дод.

Пешниҳоди домен дар асоси TLS 1.3

Ин дафъа, бастаи мизоҷи hello ssl ба таври возеҳ домени таъинотро дар бар намегирад, аммо ба ҷои он, дар баста майдони нав пайдо шуд - encrypted_server_name - дар ин ҷо арзиши rutracker.nl мавҷуд аст ва танҳо сервери frontend cloudflare метавонад онро рамзкушоӣ кунад майдон. Ва агар ин тавр бошад, пас провайдери DPI дигар илоҷе надорад, ки дастҳои худро бишӯяд ва ба чунин трафик иҷозат диҳад. Дигар имконоти рамзгузорӣ вуҷуд надорад.

Ҳамин тавр, мо дида баромадем, ки технология дар браузер чӣ гуна кор мекунад. Акнун биёед кӯшиш кунем, ки онро ба чизҳои мушаххас ва ҷолибтар истифода барем. Ва аввал, мо ба ҳамон curl таълим медиҳем, ки eSNI-ро барои кор бо TLS 1.3 истифода барад ва ҳамзамон мебинем, ки худи домени ба eSNI асосёфта чӣ гуна кор мекунад.

Пешбурди домен бо eSNI

Аз сабаби он, ки curl китобхонаи стандартии openssl-ро барои пайвастшавӣ тавассути протоколи https истифода мебарад, пеш аз ҳама мо бояд дар он ҷо дастгирии eSNI-ро таъмин кунем. Дар филиалҳои устои openssl то ҳол дастгирии eSNI вуҷуд надорад, аз ин рӯ мо бояд филиали махсуси openssl-ро зеркашӣ кунем, онро тартиб диҳем ва насб кунем.

Мо анборро аз GitHub клон мекунем ва маъмулан тартиб медиҳем:

$ git clone https://github.com/sftcd/openssl
$ cd openssl
$ ./config

$ make
$ cd esnistuff
$ make

Баъдан, мо репозиторийро бо curl клон мекунем ва бо истифода аз китобхонаи openssl тартибдодаамон компиляцияи онро танзим мекунем:

$ cd $HOME/code
$ git clone https://github.com/niallor/curl.git curl-esni
$ cd curl-esni

$ export LD_LIBRARY_PATH=/opt/openssl
$ ./buildconf
$ LDFLAGS="-L/opt/openssl" ./configure --with-ssl=/opt/openssl --enable-esni --enable-debug

Дар ин ҷо муҳим аст, ки ҳамаи директорияҳое, ки openssl ҷойгир аст (дар ҳолати мо, ин /opt/openssl/ аст) ва боварӣ ҳосил кунед, ки раванди конфигуратсия бидуни хато мегузарад.

Агар конфигуратсия муваффақ бошад, мо сатрро мебинем:

Огоҳӣ: esni ESNI фаъол аст, аммо таҷрибавӣ қайд карда шудааст. Бо эҳтиёт истифода баред!

$ make

Пас аз бомуваффақият сохтани баста, мо файли махсуси bash-ро аз openssl барои танзим ва иҷро кардани curl истифода мебарем. Барои роҳат биёед онро ба директория бо curl нусхабардорӣ кунем:

cp /opt/openssl/esnistuff/curl-esni 

ва ба сервери cloudflare дархости https-ро санҷед ва ҳамзамон бастаҳои DNS ва TLS-ро дар Wireshark сабт кунед.

$ ESNI_COVER="www.hello-rkn.ru" ./curl-esni https://cloudflare.com/

Дар посухи сервер, ба ғайр аз маълумоти зиёди ислоҳи хатогиҳо аз openssl ва curl, мо посухи HTTP бо рамзи 301 аз cloudflare мегирем.

HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 13:12:55 GMT
< Transfer-Encoding: chunked
< Connection: keep-alive
< Cache-Control: max-age=3600
< Expires: Sun, 03 Nov 2019 14:12:55 GMT
< Location: https://www.cloudflare.com/

ки ин далолат мекунад, ки дархости мо бомуваффакият ба сервери таъинот расонида шудааст, шунида ва коркард шудааст.

Акнун биёед ба партовгоҳи трафик дар wireshark назар кунем, яъне. он чизе ки провайдери DPI дар ин ҳолат дидааст.

Пешниҳоди домен дар асоси TLS 1.3

Дидан мумкин аст, ки curl аввал ба сервери DNS барои калиди ҷамъиятии eSNI барои сервери cloudflare - дархости TXT DNS ба _esni.cloudflare.com (бастаи № 13) табдил ёфт. Сипас, бо истифода аз китобхонаи openssl, curl дархости TLS 1.3-ро ба сервери cloudflare фиристод, ки дар он майдони SNI бо калиди оммавии дар қадами қаблӣ гирифташуда рамзгузорӣ шуда буд (бастаи №22). Аммо, ба ғайр аз майдони eSNI, бастаи SSL-hello инчунин як майдонро бо SNI-и маъмулӣ дар бар мегирад, ки мо метавонем онро бо дилхоҳ тартиб муайян кунем (дар ин ҳолат - www.hello-rkn.ru).

Ин майдони кушоди SNI ҳангоми коркарди серверҳои cloudflare ба ҳеҷ ваҷҳ ба назар гирифта нашудааст ва танҳо ҳамчун ниқоб барои провайдери DPI хидмат мекард. Сервери cloudflare бастаи ssl-hello-и моро қабул кард, eSNI-ро рамзкушоӣ кард, SNI-и аслии онро аз он ҷо истихроҷ кард ва онро тавре коркард кард, ки гӯё ҳеҷ чиз рӯй надода бошад (он ҳама корро тавре анҷом дод, ки ҳангоми таҳияи eSNI ба нақша гирифта шудааст).

Ягона чизе, ки дар ин ҳолат аз нуқтаи назари DPI гирифта мешавад, дархости ибтидоии DNS ба _esni.cloudflare.com мебошад. Аммо мо дархости DNS-ро танҳо барои нишон додем, ки ин механизм аз дарун чӣ гуна кор мекунад.

Барои дар ниҳоят аз зери DPI берун кардани қолин, мо механизми DNS-over-HTTPS-ро истифода мебарем. Шарҳи каме - DOH протоколест, ки ба шумо имкон медиҳад, ки аз ҳамлаи одам дар миёна тавассути фиристодани дархости DNS тавассути HTTPS муҳофизат кунед.

Биёед дархостро дубора иҷро кунем, аммо ин дафъа мо калидҳои ҷамъиятии eSNI-ро тавассути протоколи https қабул мекунем, на DNS:

ESNI_COVER="www.hello-rkn.ru" DOH_URL=https://mozilla.cloudflare-dns.com/dns-query ./curl-esni https://cloudflare.com/

Партофтани трафики дархост дар тасвири зер нишон дода шудааст:

Пешниҳоди домен дар асоси TLS 1.3

Дидан мумкин аст, ки curl аввал ба сервери mozilla.cloudflare-dns.com тавассути протоколи DoH (пайвасти https ба сервер 104.16.249.249) ворид мешавад, то аз онҳо арзишҳои калидҳои оммавии рамзгузории SNI ва сипас ба макони таъинот дастрас шавад. сервер, дар паси домен пинҳон мешавад www.hello-rkn.ru.

Илова ба ҳалли DoH дар боло mozilla.cloudflare-dns.com, мо метавонем аз дигар хидматҳои маъмули DoH истифода барем, масалан, аз корпоратсияи машҳури бад.
Биёед дархости зеринро иҷро кунем:

ESNI_COVER="www.kremlin.ru" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/

Ва мо ҷавоб мегирем:

< HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 14:10:22 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: __cfduid=da0144d982437e77b0b37af7d00438b1a1572790222; expires=Mon, 02-Nov-20 14:10:22 GMT; path=/; domain=.rutracker.nl; HttpOnly; Secure
< Location: https://rutracker.nl/forum/index.php
< CF-Cache-Status: DYNAMIC
< Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< Server: cloudflare
< CF-RAY: 52feee696f42d891-CPH

Пешниҳоди домен дар асоси TLS 1.3

Дар ин ҳолат, мо ба сервери басташудаи rutracker.nl бо истифода аз Resolver DoH dns.google муроҷиат кардем (дар ин ҷо ягон хатогӣ вуҷуд надорад, ҳоло корпоратсияи машҳур домени дараҷаи якуми худро дорад) ва худро бо домени дигар фаро гирифтем, ки он ба таври қатъӣ аст. барои ҳама DPI манъ аст, ки дар зери дарди марг баста шаванд. Дар асоси посухи гирифташуда, шумо метавонед фаҳмед, ки дархости мо бомуваффақият коркард шудааст.

Ҳамчун санҷиши иловагӣ, ки DPI провайдер ба SNI кушода, ки мо онро ҳамчун сарпӯш интиқол медиҳем, посух медиҳад, мо метавонем ба rutracker.nl зери ниқоби ягон манбаи дигари мамнӯъ, масалан, боз як трекери торренти "хуб" дархост пешниҳод кунем:

$ ESNI_COVER="rutor.info" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/

Мо аз сервер посух нахоҳем гирифт, зеро... дархости мо аз ҷониби системаи DPI баста мешавад.

Хулосаи кӯтоҳ ба қисми якум

Ҳамин тавр, мо тавонистем фаъолияти eSNI-ро бо истифода аз openssl ва curl нишон диҳем ва амалиёти фронтинги доменро дар асоси eSNI санҷем. Ба ҳамин тариқ, мо метавонем абзорҳои дӯстдоштаи худро, ки китобхонаи openssl-ро истифода мебаранд, барои “дар зери ниқоби” доменҳои дигар кор кардан мутобиқ созем. Тафсилоти бештар дар бораи ин дар мақолаҳои навбатии мо.

Манбаъ: will.com

Илова Эзоҳ