Нэг үүлэн үйлчилгээнд зориулсан өөрийн TLS, SSH дамжуулалт эсвэл VPN
Өөрийн TLS, SSH дамжуулалт болон чиглүүлэгт давхарга нь өөр өөр интерфейсийг хамгаална. Үйлчилгээг хамарч буй хамгийн бага хил хязгаарыг сонгохын тулд тус бүрийг үзээрэй.
Асуулт нь хоёр үүлэн машины хооронд ямар нэг зүйлийг шифрлэх эсэх нь ховор; асуулт нь та ямар интерфейсийг шифрлэж, хэн хэнийхээ таних тэмдгийг шалгаж байгаа юм. Би эдгээр яриаг сүлжээний диаграмаас биш, үйлчилгээнээс эхэлдэг, учир нь үйлчилгээ юу хэрэгтэйгээ аль хэдийн мэддэг. Гурван хил хязгаар ихэнх тохиолдлыг хамарна: апп-ын өөрийн TLS, SSH-ээр дамжуулсан нэг TCP порт, оролцогч бүрт хаяг өгдөг чиглүүлэгт давхарга. Тэдгээрийг хүчээр биш, асуудлыг хэр их хамарч байгаагаар нь эрэмбэлдэг.
Сүлжээнээс биш, үйлчилгээнээс эхэл
Процессоос гадагш яв. Энэ нь ямар протоколоор ярьдаг, клиент ямар нэрийг шалгах, хэнд ер нь холболт нээхийг зөвшөөрдөг вэ? Эдгээр гурван хариулт нь ямар ч харьцуулалтын хүснэгтээс хурдан сонголтуудыг хасаж, үйлчилгээний өөрийн тохиргоо ихэвчлэн хэдхэн минутын дотор тэдэнд хариулдаг.
8443 порт дээр аль хэдийн HTTPS үйлчилж буй жижиг дотоод API-г ав, api.internal.example-д зориулсан гэрчилгээтэй. Хост дээрх ss -ltnp нь юунд холбогдсоныг харуулж, openssl s_client -connect 127.0.0.1:8443 -verify_hostname api.internal.example нь гэрчилгээ клиентийн бодитоор ашиглах нэрэнд хүчинтэй эсэхийг харуулна. Хоёулаа эрүүл бол үйлчилгээ өөрийн урсгалыг хамгаалж, зөвхөн хүртээмж үлдэнэ. Энэ нь сүлжээ байгуулахаас хамаагүй бага асуудал.
1-р алхам: үйлчилгээ өөрийгөө хамгаалж байна уу?
Энэ нь тохирох үед сонгох сонголт бөгөөд багууд таамаглаж байгаагаас илүү олон удаа тохирдог. Үйлчилгээний шифрлэлт нь клиент ба серверийн хоорондох бүх замыг, тэдгээрийн хоорондын алхам бүрийг оролцуулан хамардаг бөгөөд үүнийг дунд хэсгийг тойрсон ямар ч туннель сайжруулахгүй. Хүлээгдэж буй нэр болон итгэлийг тодорхой тохируул, клиентийн анхдагч санд санамсаргүй байгаа зүйлд найдахын оронд.
Шифрлэлт ба хүртээмж нь тусдаа хяналт хэвээр үлддэг бөгөөд тэдгээрийг нэгтгэх нь энэ сонголт алдаа гаргах газар юм. Хязгааргүй нийтийн сонсогч дээрх TLS үйлчилгээ хэнээс ч холболтын оролдлогыг хүлээн авдаг хэвээр байгаа тул сонсогч болон сүлжээний дүрмийг ачаа хамгаалагдсан эсэхээс үл хамааран тодорхойлох ёстой. Дараа нь хамаарлуудыг шалга, учир нь TLS дээрх API нь илрүүлэх төгсгөлийн цэг, админ порт эсвэл хажууд байгаа бөөн дамжуулалтын сувгийн талаар юу ч хэлдэггүй. Тэдгээр тус бүрд өөрийн хариулт хэрэгтэй бөгөөд нэг хамгаалалтгүй ах нь бүх хилийг зохиомол болгоход хангалттай.
2-р алхам: нэг TCP порт бүх шаардлага мөн үү?
Шаардлага үнэхээр нэг TCP порт бол дамжуулалт нь ажилладаг хамгийн бага зүйл юм. SSH-ийн локал дамжуулалт тэр портыг аль хэдийн оршин буй баталгаажсан холболтоор дамжуулдаг.
Хэлбэр нь ssh -N -L 8443:127.0.0.1:8443 [email protected] бөгөөд чухал дэлгэрэнгүй нь зорилтот хаяг: 127.0.0.1 алслагдсан талд шийдэгддэг тул үйлчилгээ рүү холболт таны зөөврийн компьютерээс биш, бастионоос нээгддэг. Локал сонсогчийг -L 127.0.0.1:8443:... гэж нарийн холбо, үйлчилгээг өөрийн локал сүлжээнд санамсаргүй нийтлэхгүйн тулд. Серверийн талд клиентийн сайн зан төлөвт найдахын оронд бүртгэл юу дамжуулж болохыг хязгаарла. PermitOpen, AllowTcpForwarding local болон анхдагч GatewayPorts no нь ерөнхий реленийг тодорхой суваг болгодог гурван тохиргоо юм.
Гэрээ хоёр чиглэлд нарийн. SSH өөрийн сувгийг хамгаалдаг бөгөөд бастионоос өөр апп руу хийх дараагийн алхам өөрийн хамгаалалтыг шаарддаг. Зөвхөн бастионы loopback дээр сонсдог үйлчилгээ нь өөр сүлжээгээр хүрэх үйлчилгээнээс огт өөр өртөлттэй бөгөөд дамжуулалт үүнийг өөрчлөхгүй. Туннелийг тэдгээрийн орлуулагч гэж үзэхийн оронд апп-ын баталгаажуулалт болон TLS шалгалтыг хадгал.
Энэ нь нэг эзэмшигчтэй нэг холболтод сайн ажилладаг. Хэмжээнд энэ нь систем болдог: локал портын зөрчил, хяналт, түлхүүрийн эргэлт, дахин ачаалсны дараа дамжуулалтыг хэн дахин эхлүүлэх вэ гэсэн асуулт.
3-р алхам: чиглүүлэлт нь жинхэнэ шаардлага мөн үү?
Тэр жагсаалт нь хамгийн бага сонголтын шударга үнэ бөгөөд багууд эцэст нь мартагдсан хэдэн арван арын командыг удирдагдах зүйлээр сольдог шалтгаан нь энэ юм. Орлуулалт нь автоматаар VPN биш. Шаардлага нь одоо ч нэг TCP порт бол баримтжуулсан эзэмшигчтэй хяналттай дамжуулалт нь давхаргаас хямд ажилладаг бөгөөд таны харж болох аргаар бүтэлгүйтдэг. Эв найрамдлыг хэмжихээс өмнө үйл ажиллагааны эзэмшлийг хэмж.
Чиглүүлэлт нь шаардлага болох үед чиглүүлэлт зөв хариулт болдог. Энгийн IP холболт шаарддаг хэд хэдэн апп, TCP дамжуулалт дамжуулж чадахгүй протоколууд эсвэл хост хооронд шилждэг үйлчилгээнүүд бүгд нэг чиглэлд заадаг.
Давхарга нь оролцогчдод хаяг, маршрут өгдөг, дараа нь жинхэнэ ажил эхэлдэг: давхцахгүй хүрээ, маршрутын эзэмшил, DNS, бүртгэл, хүчингүй болгох, түнш алга болоход юу болох вэ. Эдгээрийн аль нь ч хаягтай хамт ирдэггүй. Давхаргад хүлээн авсан түнш нь очих газрын үйлдэл бүрт автоматаар эрхлэгддэггүй тул үйлчилгээний түвшний баталгаажуулалт үлддэг.
Дараа нь танд юу байна
Таны үлдээх бүртгэлд хоёр зүйл хамаарна. Эхнийх нь клиентийн шалгах ёстой таних тэмдэг, учир нь ямар нэг зүйлийг ажиллуулахын тулд нэрний шалгалт сулармагц эдгээр хилийн аль нь ч чимээгүй мууддаг. Хоёр дахь нь хасах алхам: хандалт дуусахад аль түлхүүр, аль дүрэм эсвэл аль маршрут алга болж, хэн үүнийг хийдэг.
Энэ аялал эхэлсэн газраа, үйлчилгээ дээр дуусна. Бодит траффикийг хамарч, шалгахаар зорьсон түншүүдийг шалгадаг хилийг сонгоод, хандалт хэрхэн шинэчлэгдэж, хянагдаж, хасагдахыг бич. OpenSSH лавлагаа нь нарийн гэрээ амлахаас өмнө дамжуулалтын сонголтуудыг баталгаажуулах газар юм. Хасах алхмыг нэг өгүүлбэрээр дүрсэлж чадахгүй бол хил нь асуудлаас том.