Squid CONNECT сұрауына сәйкес келетін бірінші http_access жолымен жауап береді, және бұл жол бас тарту болуы мүмкін. Осы бір факт VPN соңғы нүктесі үшін ерекшеліктің неге әдетте бірінші әрекетте сәтсіз болатынын түсіндіреді, өйткені сұрау төменде біреу қосқан рұқсатқа ешқашан жетпейді. Тар түзету бар порт күзетшілерін сақтайды және оларға бір тексерілген көзді, межені және портты үйретеді. Проксидегі қалғанның бәрі бұрынғыдай әрекет етеді.

Squid CONNECT сұрауын қалай шешеді

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

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

Сұрауды қабылдамайтын құрамдас — прокси екенін растаңыз. Squid жасаған 403 VPN серверінің TLS ескертуіне мүлдем ұқсамайды, ал екеуін бір мәселеге біріктіру бірінші сағатты алады. Сұрау үшін кіру журналының жолын тексеріңіз, өйткені ол әрекетті де, оны тудырған ережені де жазады.

Үш бөлек ACL орнына бір біріктірілген сәйкестік құрыңыз

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

Төмендегі пішін тексерілген мәндермен алмастырылуы керек құжаттама ауқымдарын пайдаланады. Squid бұл атаулардың ешқайсысын өзіне қалдырмайды, сондықтан оларды таңдау да, дәйекті ұстау да сіздің ісіңіз. Бұл рецепт all-of тобын қолдайтын құжатталған конфигурациясы бар Squid 6 және 7-ге шектелген. Ағымдағы анықтамалық бұл директиваларды Squid 8-де қолжетімсіз деп белгілейді, сондықтан мұны көшіру жолы емес, нұсқаға байланған рецепт ретінде қарастырыңыз және қолданар алдында директиваны өз нұсқаңыздың анықтамалығынан тексеріңіз.

acl pvpn_src src 192.0.2.128/25
acl pvpn_dst dst 198.51.100.77/32
acl pvpn_port port 1194
acl pvpn_ok all-of CONNECT pvpn_port pvpn_dst pvpn_src

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

Порт күзетшілерін алып тастамай бүгіңіз

Қазіргі орындарында екі дәстүрлі күзетші жолы осылай көрінеді. Олар әдетте аутентификациядан кейін және бәріне рұқсат беретін саясат жолдарының алдында тұрады.

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

Әрқайсысына терістелген біріктірілген сәйкестікті қосыңыз, сонда сәйкес келетін ерекшелік әйтпесе оны қабылдамайтын күзетшіден өтеді. Тек күзетші жолдары өзгереді, және әрқайсысы тек бір қосымша шартпен.

http_access deny CONNECT !SSL_ports !pvpn_ok
http_access deny !Safe_ports !pvpn_ok

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

Ерекшелікті қайда қоюға болмайтыны

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

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

Соңғы нүкте тіпті TCP пе екенін ойлаңыз. CONNECT ерекшелігі TCP ағындарын тасымалдайды, ал UDP пайдаланатын OpenVPN профилі ол арқылы қолжетімді бола қоймайды. Профильді TCP-ге сервер осылай тыңдаса және оператор мінез айырмашылығын қабылдаса ғана өзгертіңіз.

Шекараны талдағышпен және нақты сұраумен тексеріңіз

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

Содан кейін қайта жүктеп, мақұлданған көзден прокси арқылы бір нақты CONNECT жіберіңіз. Талдағышты іске қосу бірінші келеді, өйткені қате терумен қайта жүктеу сізге саясат туралы ештеңе үйретпейді.

squid -k parse
squid -k reconfigure
curl -v -p -x http://proxy.lab.internal:3128 https://vpn.lab.internal:1194/ --max-time 5

Үш жағдайды сынаңыз: мақұлданған көз бен тіркелгі, мақұлданбаған көз және сол порттағы басқа меже. Үшінші жағдай ерекшеліктің тар екенін дәлелдейді, өйткені портты меже сәйкестігінсіз тексереді. Клиент хабарламасына сенудің орнына үшеуі үшін кіру журналын оқыңыз. Сәтті CONNECT TCP ағынын орнатады, одан артық емес, сондықтан VPN қол алысуы бөлек сынақ болып қалады.

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