Squid-ээр дамжуулан нэг VPN төгсгөлийн цэг: нарийн CONNECT үл хамаарах зүйл
Нэг зөвшөөрөгдсөн эх сурвалжид Squid-ээр дамжуулан 1194 порт дээрх нэг VPN гарц руу хүрэх боломж олгож, глобал портын хамгаалагчдыг хадгалж, өөр юу ч нээгдээгүйг батлаарай.
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_srcall-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 гар барих нь тусдаа туршилт хэвээр үлдэнэ.