Тыңдаушыны TLS 1.3-ке жаңарту бақылаушының оқи алатынын өзгертеді, бірақ нұсқа нөмірі меңзегендей емес. ClientHello кез келген шифрлау келісілмес бұрын жолға шығады, ал қарапайым қосылымда сұралған сервер атауы сол жерде ашық мәтінде тұр. Encrypted Client Hello оны жасыратын механизм және ол өз алғышарттары бар жеке орналастыру болып табылады. Екі мінез-құлықтың бірін болжайтын саясат жазбас бұрын осы төрт қадамды орындаңыз.

Қол алысу шын мәнінде нені ашады

TLS 1.3 сервер сертификатын және ServerHello-дан кейінгі қол алысудың көп бөлігін шифрлайды. Клиент бірінші жіберетіннің бәрі осы қорғаныстың сыртында қалады, өйткені кілттер әлі жоқ. Сервер атауының көрсеткіші сол бірінші ұшуға кіреді, сондықтан пассив бақылаушы оны ештеңені бұзбай-ақ оқи алады.

ECH сипаттамасы, RFC 9849, мұны ынтымақтасатын сервер үшін ішкі ClientHello-ды шифрлау арқылы өзгертеді. Сыртқы қол алысу қалады және желі көре алатын жария атауды тасымалдайды, сондықтан орналастыруға делдалдар үшін мағыналы сыртқы сәйкестік әлі қажет. Сол сыртқы атау — адамдар қосылым анонимді болады деп күткенде жіберіп алатын бөлік. Бұл жамылғы атау, жасырын атау емес, және ол кез келген басқасы сияқты шешілуі және аутентификациялануы керек.

Бұлардың ешқайсысы жеткізу жолын жасырмайды. Дереккөз және межелік мекенжайлар, порттар, пакет өлшемдері және уақыт бақыланатын күйінде қалады, олар көбіне кім сөйлеп жатқаны туралы атаудан көбірек айтады. Атауларды шешу және қолданба деңгейіндегі қатынастар тағы бір қабат, әрқайсысының өз көрінуі бар.

Болжамдаудың орнына ClientHello оқыңыз

ServerHello-дағы нұсқа клиенттің не жібергенін айтпайды. Бірінші ұшуды тікелей, сізді қызықтыратын бақылаушыны білдіретін позициядан қараңыз.

openssl s_client -connect app.plant.example:443 -servername app.plant.example -tls1_3 </dev/null> 2>/dev/null | head -20
sudo tcpdump -ni eth0 -c 40 'tcp port 443' -w /tmp/tls.pcap
tshark -r /tmp/tls.pcap -Y 'tls.handshake.extensions_server_name' -T fields -e tls.handshake.extensions_server_name

Бірінші пәрмен қол алысуды орындайды және келісілген параметрлерді көрсетеді, оның ішінде протокол нұсқасы және сіз сұраған атау. Екіншісі нақты қосылымның алғашқы пакеттерін ұстайды, ал үшіншісі сол ұсталымнан SNI өрісін шығарады. Егер өріс толтырылған болса, сіз еліктеген бақылаушы оны оқи алады.

Екеуі сәйкес келмегенде клиент жағында және жолда бөлек ұстаңыз, өйткені жергілікті ұсталым кейіннен аралық құрылғы қайта жазатын немесе тастайтын атауды көрсетуі мүмкін. TLS-ті өзі аяқтамайтын хосттан да ұстаңыз, өйткені аяқтайтын прокси ашық мәтінді өз құрылымы бойынша көреді және желінің не көретінін ештеңемен дәлелдемейді.

ECH кеңейтімін дәлел емес, мәлімдеме ретінде қарастырыңыз

ClientHello ішінде ECH кеңейтімін көру қосылымның ECH қолданғанын білдірмейді. Клиенттер пайдалануға жарамды конфигурациясы болмаған кезде GREASE ECH жібереді, дәл қол алысулары бірдей көрінуі үшін. Кеңейтім бар, ішкі hello — жем, ал нақты атау әлі оқылады.

dig +short HTTPS app.plant.example
openssl s_client -connect app.plant.example:443 -tls1_3 -status </dev/null> 2>/dev/null | grep -i -E 'ech|status_request'

Бірінші пәрмен дереккөздің ECH конфигурация параметрімен HTTPS ресурс жазбасын жариялайтынын көрсетеді, клиенттер кілтті осылай біледі. Екіншісі қол алысу күйі туралы ақпаратты іздейді, дегенмен клиенттің сәттілік хабарламасы неғұрлым күшті дәлел. Қабылдау маңызды: сәйкес кілті жоқ сервер ішкі hello-ды шеше алмайды және қосылым кері шегінеді.

Клиентті де тексеріңіз, өйткені браузерлерді қолдау және конфигурация нұсқа мен платформаға қарай әр түрлі. „Заманауи браузерлер ECH қолданады“ дегенге құрылған саясат флот туралы болжам, сіздің флотыңыз туралы факт емес. Шынымен қосылатын нұсқаларды түгендеп, содан кейін әрқайсысынан біреуін сынап көріңіз. Ағымдағы жұмыс үстелі браузерінен жұмыс істейтін сол бет сол желідегі ескірек клиенттен ештеңе жасырмауы мүмкін.

Бақылаушының ауқымын саясатқа жазыңыз

Бақылау неге сүйене алатынын шешпес бұрын бақылаушының қайда отыратынын және сол нүктеде не көрінетінін көрсетіңіз. Браузердің сайтпен қосылымы, сыртқы VPN тасымалы және TLS-ті аяқтайтын прокси әрқайсысы әр түрлі фактілер жиынтығын ашады, ал бір позиция үшін жазылған ереже екіншісіне сирек таза ауысады.

Егер бақылау SNI оқуға тәуелді болса, орналастырылған клиенттердің ECH қолжетімді және қолжетімсіз кезде қалай әрекет ететінін сынаңыз. Содан кейін үйлесімділік салдарын жазып алыңыз, өйткені үнсіз сәйкестікті тоқтататын сүзгі ешқашан орналастырылмағаннан нашар.

Соңында белгісіздікті жазбада сақтаңыз. Ескі әмбебап тұжырымды жаңарақпен алмастыру сол олқылықты басқа протокол атауымен қалдырады және келесі шолушы оған дәл солай берік сенеді.

Қатысты мақалалар