Энд хамгийн их хохирол учруулдаг хоёр итгэл байна: өөрөө гарын үсэг зурсан VPN гэрчилгээ гэдэг нь туннель шифрлэгдээгүй гэсэн үг гэх, мөн VPN клиент юу ч гуйсан бай оруулах нь зөвхөн VPN-д нөлөөлдөг гэх. Аль нь ч бодит байршуулалттай тулгарах үед тэсвэрлэхгүй. Өөрөө гарын үсэг зурсан гэрчилгээ гарын үсгийн харилцааг тодорхойлдог, аюулгүй байдлын дүгнэлт биш, таны нэмсэн итгэлийн хүрээ түүний аль санд орохоос хамаарна. Тусламжийн төв нэг анхааруулгыг намжаахын тулд үйлчилгээ үзүүлэгчийн үндсийг Windows машинд импортолж, дараа нь хөтөч холбоогүй порталын талаар гомдоллохоо больсон шалтгааныг тайлбарлаж өдөржин өнгөрүүлснийг би харсан. Энэ асуултын хоёр хагас нь хамт хамаарах тул нэг гэж үзээрэй.

Гэрчилгээ нь итгэлийн сан биш

Серверийн танилцуулсан файл нийтийн түлхүүр, субъектийн нэр, олгогчийн нэр, хүчинтэй хугацаа, өргөтгөлүүдийг агуулна. Өөрөө гарын үсэг зурсан гэдэг нь субъект болон олгогч нэг ижил байгууллага бөгөөд гарын үсэг гэрчилгээний өөрийн түлхүүрээр баталгаажина гэсэн үг. Тэр тодорхойлолтод холболт сул гэж юу ч хэлээгүй, клиент үүнийг хүлээн авна гэж ч юу ч хэлээгүй.

Хүлээн авалт өөр газраас ирдэг: клиентийг чиглүүлж буй CA файл, гараар харьцуулж буй хурууны хээ, эсвэл клиентийн уншиж буй санд аль хэдийн орсон үндэс. Байршуулалт бүрэн эрүүл байж болох ч түүний гэрчилгээ нийтийн бүх шалгалтад унах байсан. openssl verify системийн багцтай харьцуулахад үл мэдэгдэх олгогчийг мэдээлнэ, энэ мэдээлэл доголдол биш, зөв юм.

OpenVPN-ийн ca сонголт нь програмаар хязгаарлагдсан итгэлийн хамгийн тод жишээ. Тэр файл клиентийн хүлээн авах зангуунуудыг нэрлэдэг бөгөөд нэг хувийн CA эсвэл жижиг байршуулалтад серверийн өөрийнх нь өөрөө гарын үсэг зурсан гэрчилгээг агуулж болно. 2.6 хувилбар нь CA файл тараахын оронд SHA-256 хурууны хээг тогтоох --peer-fingerprint-г ч хүлээн авдаг. WireGuard бүр хол байна: тэнд гэрчилгээ огт байхгүй, зөвхөн хос бүрт статик нийтийн түлхүүр, тиймээс өөрөө гарын үсэг зурах асуулт түүнд хамаарахгүй.

Итгэлийг хаана суулгах нь түүнийг хэн өвлөхийг тодорхойлно

Нэг гэрчилгээг гурван газар тавьбал гурван өөр дэлбэрэлтийн радиус авна. Зөвхөн VPN клиентийн уншдаг багц тэр клиентэд нөлөөлнө. Үйлдлийн системийн сан дахь үндэс тэр сангаас зөвлөгөө авдаг бүх програмад нөлөөлнө. Өөрийн итгэлийн мэдээллийн сантай хөтөч хоёуланг нь үл тоомсорлож болох тул ажилласан мэт санагдсан импортын дараа ч анхааруулга үлдэж болно.

Debian эсвэл Ubuntu дээр /usr/local/share/ca-certificates/ дотор файл хийж, update-ca-certificates ажиллуулах нь системийн багцыг өөрчилнө. Windows дээр certutil -addstore -f Root машины санд бичиж, өргөгдсөн командын мөр шаарддаг бол -user нэмэх нь оронд нь одоогийн хэрэглэгчийн санг онилдог; хоёр нь солилцох боломжгүй. Firefox өөрийн NSS мэдээллийн санг хадгалдаг тул OS түвшний импорт тэнд хэзээ ч харагдахгүй байж болно.

Хүрээ нь эрх мэдэл юу хийж чадахаас шалтгаалж чухал. Олгогч CA нь хамааралгүй нэрсэд гарын үсэг зурж чаддаг тул тэр санд итгэдэг бүхэн тэдгээр гарын үсгийг хүлээн авна. Нэг тогтоосон хуудас үүнийг хийж чадахгүй; энэ нь яг нэг хосын таних тэмдгийг баталгаажуулдаг. Зорилго нь нэг VPN холбогдох бол програмаар хязгаарлагдсан CA эсвэл тогтоосон хуудас үүнд хүрдэг бол машины хэмжээний үндэс нь шинж тэмдгийн шаардахаас хамаагүй том концесс юм.

Та нийтийн CA-гүйгээр шифрлэсээр байна

TLS гар барих нь хосын гэрчилгээ таны аль хэдийн итгэдэг зүйлтэй гинжилж байгаа эсэхээс үл хамааран сессийн түлхүүрүүдийг гаргаж авдаг. Өөрөө гарын үсэг зурсан нь энгийн текст гэсэн үг биш, трафик нислэгийн үед уншигдана гэсэн үг ч биш. Энэ нь клиент түлхүүр нь өөрийн гуйсан серверт хамаарна гэдэгт урьдчилан итгэх ямар ч шалтгаангүй гэсэн үг.

Яг тэр завсарт бодит халдлагууд амьдардаг. Ямар ч гэрчилгээг хүлээн авахаар тохируулсан клиент, идэвхгүй болгосон шалгалтын тохиргоогоор ч бай, нэг удаа дарж мартсан «ямар ч байсан итгэ» товчоор ч бай, хариу өгсөн хэнд ч баяртайгаар шифрлэнэ. Тасалдал нь баталгаажуулалтын шатанд, програмын өгөгдөл хөдлөхөөс өмнө болно. Таних тэмдэг шалгахгүйгээр шифрлэх нь идэвхгүй ажиглагчийг гадагш үлдээж, өөр их зүйл хийхгүй.

Олгогчид итгэх нь нэрийн шалгалтыг алгасахгүй

Гинжийн баталгаажуулалт, нэрийн тохирол, гэрчилгээний зориулалт нь тусдаа шийдвэрүүд. Гинж хүчинтэй байхад нэр буруу байж болно, нэр тохирч байхад гэрчилгээ өөр үүрэгт олгогдсон байж болно. RFC 5280 эдгээр хязгаарлалтыг агуулсан талбаруудыг тодорхойлдог бөгөөд клиент тэдгээрийг хэр хатуу хэрэгжүүлэх нь програм бүрийн асуудал.

OpenVPN хуваагдлыг харагдахуйц болгодог. verify-x509-name хүлээгдэж буй субъектийг name, name-prefix эсвэл subject тохирлоор тогтоодог. remote-cert-tls server хосын гэрчилгээ серверийн гэрчилгээ болгон ашиглагдах боломжтой байхыг шаарддаг бөгөөд энэ нь олгогчид итгэсэн ч зөвхөн клиентийн гэрчилгээг татгалздаг. Хоёр тохиргоог аль нь ч CA файл илгээхээр солигддоггүй.

Ямар нэгэн зүйл шийдэхээс өмнө гэрчилгээг шалгана уу:

  • openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltName үүнийг хэн, ямар нэрсэд, хэзээ хүртэл олгосныг харуулна.
  • openssl verify -CAfile ca.crt server.crt илгээхээр төлөвлөж буй гинж хуудсыг үнэхээр баталгаажуулж байгаа эсэхийг шалгана.
  • openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_error вэб портал зэрэг TLS төгсгөлийн цэгүүдэд ажиллана; 1194 дээрх OpenVPN протокол нь энгийн TLS урсгал биш тул тэр шалгалт тэнд хамаарахгүй.

Хугацаа дууссан, холбогдох нэрийн subjectAltNameгүй, эсвэл serverAuth хэрэглээгүй гэрчилгээ нь зангуу хэр болгоомжтой суулгасан ч бүтэлгүйтнэ.

Нэгийг хүлээн авахаас өмнө таван шалгалт

Засварлах гэж буй холболт биш сувгаар хурууны хээг харьцуулна уу: консол, аль хэдийн байгаа суулгагч, гарын үсэг зурсан тохиргооны файл. Сервер дээрх openssl x509 -in server.crt -noout -fingerprint -sha256 болон клиентийн лог дахь ижил утга нь нэг объектыг харж байгааг мэдэхэд хангалттай.

Дараа нь юу суулгаж байгаагаа шийднэ үү: нэг хуудас уу, эсвэл илүү цутгаж чадах эрх мэдэл үү. Дараа нь хаашаа явахыг шийдэж, тэр санг уншдаг програмуудыг нэрлэнэ үү. Устгах замаа одоо ч санаж байхдаа бичээрэй, учир нь итгээд-цааш-яв гэдэг нь түр импортыг байнгын болгох арга юм.

Эцэст нь, өөрчлөлтийг төлөвлө. Тогтоосон гэрчилгээ эсвэл хурууны хээг гэрчилгээ эргэх үед мөн адил итгэмжлэгдсэн сувгаар шинэчлэх ёстой бөгөөд хувийн CA нь өөрийн олгох, хүчингүй болгох амьдралын мөчлөгтэй. Хувийн түлхүүр алдагдвал ижил гэрчилгээний хуулбарт дахин итгэх нь юу ч засахгүй; таних тэмдгийг солих ёстой.

Хэрэв анхааруулга таван шалгалтыг бүгдийг нь даваад үлдвэл, ашигтай асуулт нь аль товч түүнийг намжаах биш, харин клиент яг аль санг уншиж байгаа, тэр үндэс хаанаас ирсэн бэ. Үүнд хариулбал, хийх гэж буй импорт тань рефлекс биш шийдвэр болно.

Холбоотой нийтлэлүүд