VPN-ийн ард байгаа SaaS-ийн админ бүс: аль хаягт итгэх вэ?
Эх сурвалж нь зөөврийн компьютерын туннелийн хаяг биш, таны VPN гарцын гаралтын хаягийг хардаг. Зөвхөн тохируулсан прокси толгойд итгэж, дараа нь админ үйлдэл бүрийг хаа.
Нийтийн SaaS хуудсууд хүн бүрт нээлттэй байж болох боловч тэдний ард байгаа админ үйлдлүүд VPN-ээс гадуурх хүн бүрийг татгалздаг. Үүнийг боломжтой болгодог механизм нь далд цэс эсвэл тусдаа нэвтрэх хуудас биш; энэ нь хүсэлтийг хүргэсэн сүлжээний замын шалгалт юм. Хаягийн нотолгоо буруу бол шалгалт нь жинхэнэ админуудыг хааж, эсвэл толгой бичиж чадах хэн бүхнийг оруулна. Эх сурвалж үнэхээр юу хүлээж авдгаас эхэл.
Туннелийн дараа эх сурвалж үнэхээр юу хүлээж авдаг
Хөтөч интернетийн урсгалыг мөн зөөдөг VPN-ээр дамжуулан нийтийн сайтад хүрэхэд гарц нь холболтыг гарахаас өмнө хөрвүүлдэг. SaaS нь гарцын нийтийн гаралтын хаягийг хардаг, ихэвчлэн нэг хаяг эсвэл бага хүрээ, ба зөөврийн компьютерын туннелийн хаягийг хэзээ ч хардаггүй. Тиймээс 10.90.0.42-г зөвшөөрөгдсөн жагсаалтад оруулах нь бүтэлгүйтдэг, тиймээс бүх RFC 1918-г оруулах нь бүр ч чанга бүтэлгүйтдэг: хоёр дахь нь танд хүрч чадах бүх хувийн сүлжээг оруулдаг. Нөхцөл тавих үнэ цэнэтэй цорын ганц хаяг бол танай байгууллага гаралт дээр үнэхээр эзэмшдэг хаяг юм.
curl -s https://ifconfig.me
dig +short admin.example.com
Хуваасан туннель энэ таамаглалыг чимээгүй эвддэг. Хэрэв VPN зөвхөн хувийн оффисын маршрутыг зөөдөг бол нийтийн админ хост нэр рүү хийх хүсэлт орон нутгийн үйлчилгээ үзүүлэгчээр гарч, эх сурвалж орон сууцны хаяг хардаг. Холбогдсон VPN дүрс нь энэ тодорхой очих газрын талаар юу ч нотолдоггүй тул туннелийг биш, очих газрыг шалга.
Гаралтын хаяг хэрэглэгч бүрт өөр байвал ямар ч бодлого бичихээс өмнө зогсоож, чиглүүлэлтийг зас. Зөвхөн зарим админд тохирох нөхцөл нь нөхцөлгүйгээс дор, учир нь асуудлыг осол болох хүртэл нуудаг.
Хаягийг дахин бичдэг проксид л итгэ
Ихэнх нийтийн сайтууд CDN эсвэл урвуу проксины ард байдаг тул эх сурвалжийн сокетийн хаяг нь зочны биш, тэр фронтендийнх юм. Фронтенд ихэвчлэн анхны хаягийг толгойд дамжуулдаг, ба эх сурвалж түүнийг зөвхөн мэдэгдэж буй проксинуудаас хүлээж авахгүй л бол тэр толгойг халдагч удирддаг. Итгэмжлэгдсэн эх сурвалжуудын жагсаалтыг тодорхой тохируулж, эх сурвалжийг өөр газраас хүрэхгүй болго. Тэр хоёр дахь хагасгүй бол халдагч проксийг тойрч, толгойг шууд илгээдэг.
set_real_ip_from 192.0.2.0/24;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
curl -H 'X-Forwarded-For: 198.51.100.27' https://origin.example.com/admin
Мөн адил үндэслэл PROXY протоколд хамаарна: сонсогч нь прокси хүрч чадах, өөр юу ч хүрч чадахгүй интерфейсэд холбогдсон үед л итгэмжлэгдэнэ. Алга болсон хаягийн контекст нь хамгаалагдсан шалгалтыг бүтэлгүйтүүлэх ёстой, анхдагч зөвшөөрөл рүү унах ёсгүй. Байхгүй толгой нь итгэмжлэгдсэн замын нотолгоо биш.
Нөхцөлийг хамгаалагдсан үйлдэл бүрт хавсарга
Шалгалтыг цэс рендэрлэдэг хуудас биш, хамгаалагдсан үйлдэл бүрийн дамждаг эрх олгох хязгаарт тавь. Маршрутын бүлэг, middleware эсвэл бодлогын давхарга бүгд ажилладаг; боловсруулагч бүрт хуулбар нь ажиллахгүй, учир нь дараа улиралд нэмэгдэх боловсруулагчид тэр байхгүй.
user = requireAuthenticatedSession()
requirePermission(user, "admin")
requireVpnEgress(verifiedClientAddress(request))
performProtectedOperation(user, request)
Мөн тэр хязгаар нь JSON API, экспорт, гарын үсэгтэй татах URL, WebSocket гар барилтыг хамарна, учир нь тэдгээрийн аль нь ч эхлээд HTML хуудсыг хүсэх шаардлагагүй. VPN ажиллаж байх үед үүсгэсэн татах холбоос нь татах төгсгөлийн цэг дахин шалгахгүй л бол дараа нь ч хүчинтэй хэвээр байна. Урт хугацааны сессүүдэд дахин үнэлэх дүрэм хэрэгтэй, эс бөгөөс нэг баталгаажсан хүсэлт байнгын үл хамаарах зүйл болно. Анхдагч татгалзал нь ажилтны солилцоог даван туулах цорын ганц тохиргоо.
Хуваалцсан кэшүүд шалгалтыг тойрох нөгөө зам. Хамгаалагдсан хариуг аль хэдийн хадгалсан кэш эх сурвалжтай холбогдохгүйгээр түүнийг өгч чадна, тиймээс админ хариуг хувийн гэж тэмдэглэж, хуваалцсан сангаас гадуур байлга. Хэрэв кэш тэдгээрийг өгөх ёстой бол хандалтын шалгалт өгөхөөс өмнө ажиллах ёстой, энэ нь ихэвчлэн хуваалцсан кэш байж чадахгүй гэсэн үг.
Дөнгөж хаасан тойролтуудаа шалга
Азтай замыг биш, матрицыг дасгалжуул: VPN-ээр дамжсан админ, түүнгүйгээр мөн тэр админ, түүгээр дамжсан админ бус хүн, хуурамч хаягийн толгой. Эх сурвалж руу шууд хүсэлт болон кэшлэсэн хариуны хүсэлтийг нэм, учир нь тэр хоёр нь фронтендийг бүрэн тойрдог.
curl -sI https://admin.example.com/export.csv
curl -s -H 'X-Forwarded-For: 198.51.100.27' https://origin.example.com/admin
curl -s https://admin.example.com/api/me -o /dev/null -w '%{http_code}\n'
Хүсэлт бүр бодлогын амласан төлөвийг буцааж, лог нь ямар хаягийн нотолгоо ашигласныг бүртгэх ёстой. IPv6-г тусдаа хамраарай, учир нь хос стект эх сурвалж таны шалгаснаас өөр эх сурвалжийн гэр бүлийг харж болно. Энгийн хэрэглэгчийн үйлдлүүдийг VPN-ээс гадна ажиллуул, эс бөгөөс хэрэглэгч анх гомдоллоход өөрчлөлт буцаагдана. Гайхмаар тэнцэлт харагдахын тулд мөр бүрийн хүлээгдэж буй үр дүнг ажиллуулахаас өмнө бич.
Гаралтын хаяг нь зөвшөөрөгдсөн сүлжээний замыг нотолдог, хүнийг ч, удирдлагатай төхөөрөмжийг ч биш. Үүнийг баталгаажуулалт, зөвшөөрлийн хажууд нэг нөхцөл болгон байлга, тэгвэл бүтээгдэхүүнийг бүхэлд нь зөвхөн VPN үйлчилгээ болгохгүйгээр админ бүс нарийн хэвээр үлдэнэ. Тэр салангид байдал нь дизайн өөрөө, түүний хязгаарлалт биш.