Қатарынан екі VPN секірісі: трафигіңізді шын мәнінде кім көреді?
Сериялық секірістер бірінші шлюзде шифрды шешіп, қайта шифрлайды; кірістірілген секірістер тек сыртқы қабатты алады. Екі дизайнды да қарап, қай оператор нені оқитынын көріңіз.
Әр клиент профилі бір серверді атайды, сондықтан пайдаланушы орнынан бір туннель және қорғаныс аяқталатын бір орын бар. Сол бірінші шлюзден кейін не болатыны — клиент ешқашан көрмейтін дизайн шешімі, ал екі кең таралған дизайн тексеру кезінде мүлде басқаша әрекет етеді. Сериялық тізбекте бірінші шлюз шифрды шешіп, қайта шифрлайды. Кірістірілген тізбекте ол сыртқы қабатты алып тастап, өзі аша алмайтын ішкі туннельді жібереді. Секірістер саны екеуінде де бірдей, сондықтан айырмашылықты санау емес, салу керек.
Клиенттен бастап екі шетті де атаңыз
Пайдаланушы бастайтын жерден, яғни қосылым профилінен бастаңыз. Онда бір қашықтағы мекенжай, бір аутентификация әдісі және дизайн қолдаса, маршруттар тізімі болады. Клиенттен A шлюзіне дейінгі сол сыртқы туннельді белгілеп, оған мысал мекенжайлар беріңіз: клиенттің туннель мекенжайы 10.77.0.2, A-ның 10.77.0.1 және A-ның жария соңғы нүктесі 198.51.100.10, TEST-NET-2 құжаттама диапазонынан алынған, мысалдағы ештеңе нақты хостпен соқтығыспауы үшін.
Бұл профильде B шлюзі туралы ештеңе айтылмаған, және бұл ақау емес. Екінші секіріс A-ға тиесілі, ал клиенттің жалғыз міндеті — трафикті A-ға жеткізу және қайта келгенін қабылдау. A туннельді аяқтай ма, жібере ме әлде жаңасын аша ма — бұл сұраққа осы шолудың қалған бөлігі жауап береді, және бұл A-ның нені оқи алатынын анықтайды.
Сериялы: A шифрды шешеді, содан кейін қайта шифрлайды
Сериялы дизайнда A трафикті екі рет аяқтайды. Ол клиенттен қорғанысты алып тастайды, қолданбаның IP пакетін алады, содан кейін бұл пакетті A-ның B-ге қарай жасайтын екінші туннелі арқылы жібереді. Осы екі операцияның арасында пакет A-ның жіберу жолында жеке межеге адрестелген қарапайым IP пакет ретінде тұрады.
Бұл ашық айтуға тұрарлық екі салдар береді. A ішкі пакетке саясат қолдана алады: маршруттар, сүзгі ережелері және дереккөз бен межені журналдау, сонымен қатар A екі жиынтық тіркелгі деректерін ұстауы керек: біреуі клиент үшін сервер ретінде, екіншісі B-нің клиенті ретінде. Қорғаныс әр сәтте бар, бірақ қорғалатын нысан A-да өзінің сәйкестігін өзгертеді.
Бұдан A қолданбаның ашық мәтінін оқиды деген қорытынды шықпайды. Клиент пен қызмет TLS іске қосып, бір-бірінің сертификаттарын тексеретін кезде, A оқылатын сұраныс емес, TLS жазбалар ағынын көреді. Бұл қорғаныстың қай жерде аяқталатынын растау үшін туннель схемасына емес, қызметтің сертификаттар тізбегіне қарау керек.
Кірістірілген: A тек сыртқы қабатты алады
Кірістірілген дизайнда клиент алдымен B-ге ішкі туннель салады, содан кейін сол туннельді сыртқы туннельдің ішінде A-ға дейін алып жүреді. A сыртқы тақырыпшаны алып тастайды, ішкі туннельді табады және оның кілттерін ұстамай жібереді, сондықтан ішкі қорғаныс әлі де B-де аяқталады.
Сонда клиенттің жоғары арнасы екі қабатты, ал A мен B арасындағы жол бір қабатты тасымалдайды. A ішкі туннельдің сыртқы мекенжайларын көреді, бұл трафиктің бар екенін және шамамен қайда бара жатқанын білуге жетеді, ал жүктемені оқуға жетпейді. Сериялы жағдайдан барлық айырмашылық осы, және оны ешбір секіріс санағышы көрсетпейді. A-ның әлі де істей алатыны — өзі оқи алмайтын нәрсені жіберуден бас тарту, және бұл сол шлюздің операторына әрқашан қолжетімді.
Кірістіру осы қасиет үшін төлейді. Әр қабат тақырыпша шығынын қосады, сондықтан MTU мен MSS жоспарлауы жинақылықтан гөрі міндетті болады, ал бір қабатпен жұмыс істейтін жол екі қабатпен үлкен пакеттерді үнсіз жоғалтуы мүмкін. Әр қабатқа өзінің қайта қосылу және тірі ұстау тәртібі керек, ал бір қабаттағы ақау екіншісі арқылы ішінара үзіліс сияқты көрінеді.
Тек туннельдерді емес, бақылаушыларды да салыңыз
Туннельдер — суреттің оңай бөлігі. Дизайнның мәні — бақылаушылар, сондықтан әр көзқарас үшін бір жол жазып, әрқайсысы шын мәнінде нені оқи алатынын толтырыңыз.
| Vantage point | Serial chain | Nested chain |
|---|---|---|
| Client's access network | Outer tunnel only | Outer tunnel only |
| Operator of A | Inner IP packet between A and B | Outer addresses of the inner tunnel, not its payload |
| Path between A and B | Second tunnel | Second tunnel |
| Operator of B | Inner packet re-originated by A | Payload after the inner layer is removed |
| Service edge | Traffic from the exit address | Traffic from the exit address |
Екі жол үнемі шатастырылады: A операторы және клиент туннелінің жеткізушісі. Олар бір субъект болуы мүмкін, ал бөлек шлюз атаулары оларды тәуелсіз етпейді. Тәуелсіз меншік бөлек әкімшілік бақылауды, бөлек тіркелгі деректерін және бөлек журналдауды қажет етеді.
Метадеректер екі дизайнда да сақталады. Уақыт, пакет өлшемдері және қосылым саны әр секірісте бақыланатын күйінде қалады, сондықтан екі секіріс сигналды жоймай, корреляция құнын арттырады. Көрінбеушілікке уәде беретін дизайнды біреу оған сүйенбес бұрын осы тізіммен салыстыру керек.
Таңдамас бұрын ақау жолдарын жүріп өтіңіз
Клиент жағынан әдейі бұзыңыз, пайдаланушы кездесетін ретпен. Интерфейстен және оның MTU-ынан бастаңыз, өйткені кірістіру пакет өлшемінде аутентификацияға қарағанда әлдеқайда ерте сәтсіздікке ұшырайды.
ip -4 addr show dev tun0
ip link show dev tun0 | grep mtu
ping -M do -s 1380 -c 2 10.77.1.1
Содан кейін қорғаныс шеттерін болжаудың орнына растаңыз. Қосылған кез келген туннельдің ішінен қызметтен оның сертификатын сұраңыз және клиент көретін тізбекті қызмет шын мәнінде ұсынатын тізбекпен салыстырыңыз. Қайта қол қоятын немесе ұстап алатын шлюз сол сертификатты өзгертеді, ал тексеру бір командамен көрінеді.
openssl s_client -connect intranet.example.com:443 -brief < /dev/null
Қайта қосылу матрицасымен аяқтаңыз: клиенттің туннелі түседі, B туннелі түседі, A мен B арасындағы жол өзгереді. Не қайтады, не қайтпайды, және ішкі қосылым өзінің жоспарланған тасығышынан тыс маршрутқа түсе ме — жазып алыңыз. Әр сынақ қолданған мекенжайларды жазыңыз, өйткені оны басқа қолжетімділік желісінде қайталау басқа сұраққа жауап береді. Әр қайта қосылудан кейін MTU тексерісін де қайталаңыз, өйткені өзгерген жол бір конфигурация жолы қозғалмай-ақ пайдалы өлшемді төмендетуі мүмкін.
A ішкі пакетке саясат қолдануы керек болғанда немесе клиент екі қабатталған туннельді іске қоса алмағанда сериялыны таңдаңыз. Ішкі жүктеме A-да оқылмай қалуы керек болғанда кірістіруді таңдаңыз. Таңдауды оның бақылаушыларымен және MTU сандарымен жазып қойыңыз, сонда келесі адам бір сұраққа жауап беру үшін бүкіл суретті қайта салмайды.