ڊومين فرنٽنگ تي ٻڌل TLS 1.3

تعارف

ڊومين فرنٽنگ تي ٻڌل TLS 1.3
جديد ڪارپوريٽ مواد فلٽرنگ سسٽم جهڙوڪ مشهور ٺاهيندڙن جهڙوڪ Cisco، BlueCoat، FireEye انهن جي وڌيڪ طاقتور هم منصبن - DPI سسٽم سان تمام گهڻو عام آهن، جيڪي قومي سطح تي فعال طور تي لاڳو ٿي رهيا آهن. ٻنهي جي ڪم جو خلاصو اهو آهي ته ايندڙ ۽ نڪرندڙ انٽرنيٽ ٽريفڪ جو معائنو ڪرڻ ۽، ڪاري/اڇي لسٽن جي بنياد تي، انٽرنيٽ ڪنيڪشن تي پابندي لڳائڻ جو فيصلو ڪيو وڃي. ۽ جيئن ته اهي ٻئي پنهنجي ڪم جي بنيادي ڳالهين ۾ هڪجهڙن اصولن تي ڀروسو ڪن ٿا، تنهن ڪري انهن کي روڪڻ جا طريقا به گهڻو ڪجهه عام آهن.

انهن ٽيڪنالاجين مان هڪ آهي جيڪا توهان کي اجازت ڏئي ٿي ته توهان ٻنهي ڊي پي آءِ ۽ ڪارپوريٽ سسٽم کي ڪافي طريقي سان پاسو ڪري سگهو ٿا ڊومين فرنٽنگ ٽيڪنالاجي. ان جو خلاصو اهو آهي ته اسان هڪ بلاڪ ڪيل وسيلن ڏانهن وڃون ٿا، ٻئي جي پويان لڪائي، عوامي ڊومين هڪ سٺي شهرت سان، جيڪو ظاهر آهي ڪنهن به سسٽم طرفان بلاڪ نه ڪيو ويندو، مثال طور google.com.

هن ٽيڪنالاجي جي باري ۾ اڳ ۾ ئي ڪافي مضمون لکيا ويا آهن ۽ ڪيترائي مثال ڏنا ويا آهن. بهرحال، مشهور ۽ تازو بحث ڪيل DNS-over-HTTPS ۽ انڪريپ ٿيل-SNI ٽيڪنالاجيون، انهي سان گڏ TLS 1.3 پروٽوڪول جو نئون ورزن، اهو ممڪن بڻائي ٿو ته ڊومين فرنٽنگ لاءِ ٻئي آپشن تي غور ڪيو وڃي.

ٽيڪنالاجي کي سمجهڻ

پهرين، اچو ته ٿورڙي بنيادي مفهومن جي وضاحت ڪريون ته جيئن هر ڪنهن کي سمجهه ۾ اچي ته ڪير آهي ۽ ڇو اهو سڀ ڪجهه گهربل آهي. اسان eSNI ميڪانيزم جو ذڪر ڪيو، جنهن جي آپريشن تي وڌيڪ بحث ڪيو ويندو. eSNI (انڪريپٽ ٿيل سرور جو نالو اشارو) ميڪانيزم SNI جو هڪ محفوظ نسخو آهي، صرف TLS 1.3 پروٽوڪول لاءِ دستياب آهي. مکيه خيال انڪريپٽ ڪرڻ آهي، ٻين شين جي وچ ۾، معلومات بابت ڪهڙي ڊومين ڏانهن درخواست موڪلي وئي آهي.

هاڻي اچو ته ڏسو ته ڪيئن عمل ۾ eSNI ميڪانيزم ڪم ڪري ٿو.

اچو ته اسان وٽ هڪ انٽرنيٽ وسيلو آهي جيڪو بلاڪ ڪيو ويو آهي جديد DPI حل (اچو ته وٺو، مثال طور، مشهور torrent tracker rutracker.nl). جڏهن اسان ٽورينٽ ٽريڪٽر جي ويب سائيٽ تائين رسائي حاصل ڪرڻ جي ڪوشش ڪندا آهيون، اسان ڏسون ٿا مهيا ڪندڙ جو معياري اسٽب اهو ظاهر ڪري ٿو ته وسيلا بلاڪ ٿيل آهي:

ڊومين فرنٽنگ تي ٻڌل TLS 1.3

RKN ويب سائيٽ تي هي ڊومين اصل ۾ اسٽاپ لسٽن ۾ درج ٿيل آهي:

ڊومين فرنٽنگ تي ٻڌل TLS 1.3

جڏهن توهان پڇو ٿا whois، توهان ڏسي سگهو ٿا ته ڊومين پاڻ ڪلائوڊ فراهم ڪندڙ Cloudflare جي پويان ”لڪيل“ آهي.

ڊومين فرنٽنگ تي ٻڌل TLS 1.3

پر RKN کان ”ماهرن“ جي برعڪس، بي لائن کان وڌيڪ ٽيڪنيڪل طور تي سمجھدار ملازمن (يا اسان جي مشهور ريگيوليٽر جي تلخ تجربي مان سيکاريا) بيوقوفيءَ سان سائيٽ تي IP پتي جي پابندي نه ڪئي، پر ڊومين جو نالو اسٽاپ لسٽ ۾ شامل ڪيو. توهان آساني سان ان جي تصديق ڪري سگهو ٿا جيڪڏهن توهان ڏسو ته ساڳئي IP پتي جي پويان ڪهڙا ٻيا ڊومين لڪيل آهن، انهن مان هڪ جو دورو ڪريو ۽ ڏسو ته رسائي بند ٿيل ناهي:

ڊومين فرنٽنگ تي ٻڌل TLS 1.3

اهو ڪيئن ٿو ٿئي؟ مهيا ڪندڙ جي DPI کي ڪيئن معلوم ٿئي ٿو ته منهنجو برائوزر ڪهڙي ڊومين تي آهي، ڇاڪاڻ ته سڀ ڪميونيڪيشن https پروٽوڪول ذريعي ٿين ٿا، ۽ اسان اڃا تائين بي لائن کان https سرٽيفڪيٽ جي متبادل کي نه ڏٺو آهي؟ ڇا هو دعويدار آهي يا منهنجي پيروي ڪئي پئي وڃي؟

اچو ته هن سوال جو جواب ڏيڻ جي ڪوشش ڪريون وائر شارڪ ذريعي ٽرئفڪ کي ڏسي

ڊومين فرنٽنگ تي ٻڌل TLS 1.3

اسڪرين شاٽ ڏيکاري ٿو ته پهريون برائوزر DNS ذريعي سرور جو IP پتو حاصل ڪري ٿو، پوء هڪ معياري TCP ھٿ شيڪ منزل سرور سان ٿئي ٿو، ۽ پوء برائوزر سرور سان SSL ڪنيڪشن قائم ڪرڻ جي ڪوشش ڪري ٿو. هن کي ڪرڻ لاءِ، اهو موڪلي ٿو هڪ SSL ڪلائنٽ هيلو پيڪٽ، جنهن ۾ ماخذ ڊومين جو نالو واضح متن ۾ آهي. هي فيلڊ ڪلائوڊ فليئر فرنٽ اينڊ سرور طرفان گهربل آهي صحيح طريقي سان ڪنيڪشن کي روٽ ڪرڻ لاءِ. اھو اھو آھي جتي مهيا ڪندڙ DPI اسان کي پڪڙي ٿو، اسان جو ڪنيڪشن ٽوڙيو. ساڳئي وقت، اسان مهيا ڪندڙ کان ڪو به اسٽب حاصل نه ڪندا آهيون، ۽ اسان ڏسون ٿا معياري برائوزر جي غلطي ڄڻ ته سائيٽ غير فعال آهي يا صرف ڪم نه ڪندي:

ڊومين فرنٽنگ تي ٻڌل TLS 1.3

ھاڻي اچو ته برائوزر ۾ eSNI ميڪانيزم کي فعال ڪريون، جيئن ھدايتن ۾ لکيل آھي يقين ڪريو :
ائين ڪرڻ لاءِ اسان کوليون ٿا فائر فاڪس ترتيب واري صفحي اٽڪل: ترتيب ۽ ھيٺ ڏنل سيٽنگون چالو ڪريو:

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

ان کان پوء، اسان چيڪ ڪنداسين ته سيٽنگون صحيح ڪم ڪري رهيا آهن ڪلائوڊ فليئر ويب سائيٽ تي. لنڪ ۽ اچو ته ڪوشش ڪريون اسان جي ٽورينٽ ٽريڪٽر سان.

ڊومين فرنٽنگ تي ٻڌل TLS 1.3

وائيلا. اسان جو پسنديده ٽريڪٽر کوليو ويو بغير ڪنهن وي پي اين يا پراکسي سرور. اچو ته هاڻي وائر شارڪ ۾ ٽريفڪ ڊمپ کي ڏسون ته ڇا ٿيو.

ڊومين فرنٽنگ تي ٻڌل TLS 1.3

هن ڀيري، ايس ايس ايل ڪلائنٽ هيلو پيڪيج واضح طور تي منزل ڊومين تي مشتمل نه آهي، پر ان جي بدران، پيڪيج ۾ هڪ نئون فيلڊ ظاهر ٿيو - encrypted_server_name - اهو آهي جتي rutracker.nl جو قدر موجود آهي، ۽ صرف ڪلائوڊ فليئر فرنٽ اينڊ سرور هن کي رد ڪري سگهي ٿو. ميدان. ۽ جيڪڏهن ائين آهي، ته پوءِ فراهم ڪندڙ ڊي پي آءِ وٽ هٿ ڌوڻ ۽ اهڙي ٽريفڪ جي اجازت ڏيڻ کانسواءِ ٻيو ڪو رستو ناهي. انڪرپشن سان گڏ ٻيو ڪو به آپشن ناهي.

تنهن ڪري، اسان ڏٺو ته ڪيئن ٽيڪنالاجي برائوزر ۾ ڪم ڪري ٿي. هاڻي اچو ته ان کي وڌيڪ مخصوص ۽ دلچسپ شين تي لاڳو ڪرڻ جي ڪوشش ڪريو. ۽ پھريون، اسان ساڳي ڪارل کي سيکارينداسين eSNI استعمال ڪرڻ لاءِ TLS 1.3 سان ڪم ڪرڻ لاءِ، ۽ ساڳئي وقت اسين ڏسنداسين ته ڪيئن eSNI-based ڊومين جي فرنٽنگ پاڻ ڪم ڪري ٿي.

ڊومين جي سامهون eSNI سان

انهي حقيقت جي ڪري ته curl معياري openssl لائبريري استعمال ڪري ٿو https پروٽوڪول ذريعي ڳنڍڻ لاءِ، سڀ کان پهريان اسان کي اتي eSNI سپورٽ مهيا ڪرڻ جي ضرورت آهي. Openssl ماسٽر برانچن ۾ اڃا تائين ڪا به eSNI سپورٽ نه آهي، تنهنڪري اسان کي هڪ خاص اوپن ايس ايل برانچ ڊائون لوڊ ڪرڻ جي ضرورت آهي، ان کي گڏ ڪرڻ ۽ انسٽال ڪرڻ.

اسان GitHub کان مخزن کي کلون ڪيو ۽ معمول وانگر مرتب ڪيو:

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

$ make
$ cd esnistuff
$ make

اڳيون، اسان ڪرل سان مخزن کي ڪلون ڪيو ۽ ان جي تاليف کي ترتيب ڏيو اسان جي مرتب ڪيل اوپن ايس ايل لائبريري استعمال ڪندي:

$ 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

ڪاميابيءَ سان پيڪيج ٺاھڻ کان پوءِ، اسان استعمال ڪنداسين خاص بش فائل Openssl کان ترتيب ڏيڻ ۽ هلائڻ لاءِ. اچو ته ان کي ڊاريڪٽري ۾ ڪاپي ڪريون سھولت لاءِ curl سان:

cp /opt/openssl/esnistuff/curl-esni 

۽ ڪلائوڊ فليئر سرور ڏانهن هڪ ٽيسٽ https جي درخواست ڪريو، جڏهن ته ساڳئي وقت ڊي اين ايس ۽ ٽي ايل ايس پيڪٽس کي Wireshark ۾ رڪارڊ ڪيو.

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

سرور جي جواب ۾، Openssl ۽ curl مان تمام گهڻي ڊيبگنگ معلومات کان علاوه، اسان کي ڪلائوڊ فليئر کان ڪوڊ 301 سان گڏ HTTP جواب حاصل ڪنداسين.

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/

جنهن مان ظاهر ٿئي ٿو ته اسان جي درخواست ڪاميابيءَ سان منزل سرور تائين پهچائي وئي، ٻڌي ۽ عمل ڪيو ويو.

هاڻي اچو ته وائر شارڪ ۾ ٽرئفڪ ڊمپ تي نظر رکون، يعني. مهيا ڪندڙ DPI هن ڪيس ۾ ڇا ڏٺو.

ڊومين فرنٽنگ تي ٻڌل TLS 1.3

اهو ڏسي سگھجي ٿو ته curl پهريون ڀيرو ڪلائوڊ فليئر سرور لاءِ عوامي eSNI ڪيئي لاءِ DNS سرور ڏانهن رخ ڪيو - هڪ TXT DNS درخواست _esni.cloudflare.com ڏانهن (پيڪيج نمبر 13). ان کان پوء، openssl لائبريري استعمال ڪندي، curl ڪلائوڊ فليئر سرور ڏانهن TLS 1.3 جي درخواست موڪلي جنهن ۾ SNI فيلڊ کي اڳوڻي قدم ۾ حاصل ڪيل عوامي ڪيئي سان گڏ ڪيو ويو (پيڪٽ #22). پر، eSNI فيلڊ کان علاوه، SSL-hello packet ۾ پڻ ھڪڙي فيلڊ شامل آھي معمول سان - کليل SNI، جنھن کي اسين ڪنھن به ترتيب ۾ بيان ڪري سگھون ٿا (ھن صورت ۾ - www.hello-rkn.ru).

هي کليل SNI فيلڊ ڪنهن به طريقي سان حساب ۾ نه ورتو ويو جڏهن ڪلائوڊ فليئر سرورز طرفان پروسيس ڪيو ويو ۽ صرف فراهم ڪندڙ ڊي پي آءِ لاءِ ماسڪ طور ڪم ڪيو ويو. ڪلائوڊ فليئر سرور اسان جو ssl-hello packet حاصل ڪيو، eSNI کي ڊريپ ڪيو، اتان کان اصل SNI ڪڍيو ۽ ان کي پروسيس ڪيو ڄڻ ته ڪجھ به نه ٿيو هو (اهو سڀ ڪجهه ائين ڪيو جيئن رٿابندي ڪئي وئي جڏهن eSNI ٺاهيندي).

صرف هڪ شيء جيڪا هن معاملي ۾ DPI نقطي نظر کان پڪڙي سگهجي ٿي _esni.cloudflare.com ڏانهن بنيادي DNS درخواست آهي. پر اسان ڊي اين ايس جي درخواست کي صرف اهو ڏيکارڻ لاءِ کليل ڪيو ته هي ميڪانيزم اندر کان ڪيئن ڪم ڪري ٿو.

آخرڪار ڊي پي آئي جي هيٺان رگ کي ڪڍڻ لاء، اسان اڳ ۾ ئي ذڪر ڪيل DNS-over-HTTPS ميڪانيزم استعمال ڪندا آهيون. ٿورڙي وضاحت - DOH هڪ پروٽوڪول آهي جيڪو توهان کي HTTPS تي DNS درخواست موڪلڻ ذريعي وچين حملي کان بچائڻ جي اجازت ڏئي ٿو.

اچو ته ٻيهر درخواست تي عمل ڪريون، پر هن ڀيري اسان عوامي 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 پروٽوڪول (سرور 104.16.249.249 سان https ڪنيڪشن) ذريعي رسائي حاصل ڪري ٿو انهن مان حاصل ڪرڻ لاءِ 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 سرور ڏانهن رخ ڪيو، DoH حل ڪندڙ dns.google استعمال ڪندي (هتي ڪو به ٽائپو ناهي، هاڻي مشهور ڪارپوريشن پنهنجي پهرين سطح جي ڊومين آهي) ۽ پاڻ کي هڪ ٻئي ڊومين سان ڍڪي ڇڏيو، جيڪو سختي سان سڀني DPIs لاءِ منع ٿيل آهي موت جي درد هيٺ بلاڪ ڪرڻ لاءِ. موصول ٿيل جواب جي بنياد تي، توهان سمجهي سگهو ٿا ته اسان جي درخواست ڪاميابي سان عمل ڪيو ويو.

اضافي چيڪ جي طور تي ته فراهم ڪندڙ جو DPI کليل SNI جو جواب ڏئي ٿو، جنهن کي اسين هڪ ڍڪ جي طور تي منتقل ڪريون ٿا، اسان ڪجهه ٻين ممنوع وسيلن جي آڙ ۾ rutracker.nl کي درخواست ڪري سگهون ٿا، مثال طور، هڪ ٻيو ”سٺو“ torrent ٽريڪٽر:

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

اسان کي سرور کان ڪو جواب نه ملندو، ڇاڪاڻ ته... اسان جي درخواست کي ڊي پي آئي سسٽم طرفان بلاڪ ڪيو ويندو.

پهرين حصي جو مختصر نتيجو

تنهن ڪري، اسان openssl ۽ curl استعمال ڪندي eSNI جي ڪارڪردگي جو مظاهرو ڪرڻ جي قابل ٿي ويا ۽ eSNI جي بنياد تي ڊومين فرنٽنگ جي آپريشن کي جانچيو. ساڳيءَ طرح، اسان پنھنجي من پسند اوزارن کي ترتيب ڏئي سگھون ٿا جيڪي ڪم ڪرڻ لاءِ Openssl لائبريري استعمال ڪن ٿا ٻين ڊومينز جي ”آڑ ۾“. ان بابت وڌيڪ تفصيل اسان جي ايندڙ مضمونن ۾.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو