Təhlükəsiz WebSocket daxilində daşınan tunel müştərinin ona qoyduğu qədər şifrələmə daşıyır, artıq yox. wss:// sxemi TLS-in bir hopda bir bağlantını qoruduğunu bildirir. WebSocket mesajlarının içindəki baytların ayrıca qorunub-qorunmadığı barədə heç nə demir və ortada nəyinsə TLS-i sonlandırdığı halda trafiki kimin oxuya biləcəyini məhz bu fərq müəyyən edir.

Bir kimi görünən iki qat

Təhlükəsiz WebSocket, üzərində WebSocket əl sıxması aparılan TLS-dir; RFC 6455 bunu öz bağlantı və təhlükəsizlik bölmələrində təsvir edir. TLS qatı serveri autentifikasiya edir və axını şifrələyir, sonra WebSocket qatı tətbiqin göndərməyə qərar verdiyi hər şeyi kadrlaşdırır.

Bunlar iki müstəqil qərardır və bütün yolun üzərinə tək bir kilid çəkən diaqram ikincini gizlədir. TLS bağlantısını kimin sonlandırdığını soruşun. Sonra müştərinin hər mesajın içərisinə nə qoyduğunu soruşun. Yerləşdirmə barədə qalan hər şey bu iki cavabdan çıxır.

Dizayn A: yeganə şifrələmə nəqliyyatdır

Daha sadə dizaynda müştəri xam IP paketlərini götürür və onları WebSocket mesajlarına bükür. İçəridə heç nə şifrələnmir, ona görə TLS sessiyasını saxlayan komponent düz mətn yüklərini oxuyur. Həmin komponent öz tunel serveriniz olduqda bu, nəzərdə tutulan son nöqtədir və dizayn tutarlıdır, çünki server trafiki hər halda görəcəkdi.

Yolda yoxlama proksisi oturub TLS-i müştərinin etibar etdiyi sertifikatla sonlandırdıqda bu, başqa bir quruluşa çevrilir. Həmin proksi indi serverin saxlayacağı düz mətnin eynisini saxlayır və heç bir həcmdə WebSocket kadrlaması bunu dəyişmir. Müştərinin etibar anbarı bu nəticəni tunel açılmadan çox əvvəl qərarlaşdırdı, çünki həmin ad üçün həmin sertifikatı qəbul etməyi seçdi. Proksi həmçinin tələb olunan hostu və hər mesajın ölçüsünü görür ki, bu da heç nəyi daha da deşifrə etmədən çoxlu fəaliyyətin barmaq izini çıxarmaq üçün kifayətdir.

Dizayn B: yük öz açarlarını daşıyır

İkinci dizaynda müştəri paketlərini öz peer kimliyi və açar mübadiləsi olan VPN protokolu ilə şifrələyir və autentifikasiya edir, sonra nəticəni WebSocket mesajları daxilində daşıyır. Burada xarici TLS-i sonlandırmaq trafiki deyil, şifrə mətnini açır. Proksi mesaj ölçülərini və vaxtını görə bilər, yükün içində başqa heç nəyi yox. Bu, qat-qat kiçik bir məruz qalmadır və yenə də rəydə ad çəkilməyə dəyər metadata olaraq qalır, kənara atılmalı bir şey kimi deyil.

Daxili protokolun öz son nöqtələri hələ də düz mətn görür; bu, quruluşun məqsədi və eyni zamanda həddidir. Son nöqtədəki komponent şifrələmədən əvvəl və ya deşifrədən sonra məlumatı oxumağa səlahiyyətli olarsa, əlavə qat onu məhdudlaşdırmır. Açarlar və onlarla işləyən proqram təminatı vacib sərhəd olaraq qalır.

VPN etiketi, tanış müştəri ikonu və ya marketinq səhifəsi bu dizaynın mövcud olduğuna dəlil deyil. Yük formatını oxumaq dəlildir.

Düz mətnin həqiqətən harada göründüyünü izləyin

URL sxemi sizə bir fakt verir, qalanını interfeyslərdən alın. Aşağıdakı yoxlamaları ardıcıllıqla işlədin, çünki hər biri növbətini daraldır:

ss -tnp | grep -E ':(443|8443)\b'
ip -br link show type tun
openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief
tcpdump -ni tun0 -c 5 -X

Xarici bağlantı ilə başlayın. TLS portuna bir uzunömürlü TCP sessiyası WebSocket daşıyıcısının görünüşüdür və əlaqəsiz bir hosta ikinci sessiya daha dərinə baxmazdan əvvəl izah olunmağa dəyər. Sonra müştəridə tunel interfeysini tapın, çünki tun və ya tap qurğusu müştərinin tək tətbiq axını proksiləşdirməkdənsə IP paketləri ilə işlədiyini göstərir.

Tunel interfeysindəki tutma adətən yük məsələsini həll edir. Orada oxuna bilən başlıqlar daxili paketlərin heç vaxt ayrıca şifrələnmədiyini, yüksək entropiyalı yüklər isə şifrələndiyini bildirir. Tutmanı xarici interfeysdə təkrarlayın və ikisini müqayisə edin: əgər hər ikisi təsadüfi görünürsə, daxili qat xarici qatın geri qaytara bilməyəcəyi işi görür.

Həqiqətən verdiyiniz etimadı nəzərdən keçirin

Quraşdırılmış korporativ kök sertifikat müştərinin etibar anbarı haqqında bir faktdır, hər hansı proksinin nə qeyd etdiyi və ya yoxladığı barədə bəyanat deyil. Davranışı CA-nın varlığından çıxarmaq əvəzinə yerləşdirilmiş siyasəti və real bağlantı yolunu müəyyənləşdirin.

İdarə olunan avadanlıqda inzibatçıdan hansı komponentin TLS-i sonlandırdığını, müştərinin sabitlənmiş sertifikatı yoxsa açıq sertifikatı doğruladığını və yük formatının nə olduğunu soruşun. Bu üç cavab sonradan müdafiə edə biləcəyiniz bir nəticə verir.

Nəticəni hökm əvəzinə sərhəd kimi yazın. "TLS yoxlama proksisində sonlanır və daxili yük yalnız son nöqtələrin saxladığı açarlarla ayrıca şifrələnir" yoxlanıla bilən və satıcı dəyişikliyindən sonra da qüvvədə qalan bir ifadədir. "WebSockets təhlükəsizdir" isə belə deyil.

Əlaqəli məqalələr