Linux дээрх AnyConnect-ийн хүчингүй TLS хувилбар: эхлээд засварын хүрээг тодорхойл
Бүх хостод үйлчлэх LEGACY бодлого, процесс тус бүрийн OpenSSL тохиргоо, нэг удаагийн VM-ийг харьцуулж, алдааг бүрмөсөн арилгах гарцын өөрчлөлтийг мөн тайлбарлав.
Энэ алдаа нууц үг асуухаас өмнө гарч ирдэг, энэ нь хэрэгтэй хэсэг: одоо хүртэл юу ч баталгаажаагүй тул нэвтрэх мэдээлэл нь асуудал биш юм. Linux дээр ижил AnyConnect цонх хуучин протоколын хувилбар, 1024 битийн түлхүүр солилцох бүлэг, эсвэл системийн крипто бодлогоос татгалзсан шифрлэлтийн багцаас үүсч болно. Би үүнийг гурван машин дээр гурван өөр аргаар арилгасан бөгөөд эдгээр шийдлийг ялгах нь ухаан биш, нөлөөллийн хүрээ юм. Нэг нь зөв газартаа үндэслэлтэй, бусад бүх газарт муу өгөгдмөл байна.
Бодлогод хүрэхээс өмнө мессежийг уншина уу
Цонхноос яг тэр мөрийг хадгал. Хувилбарын гомдол протоколын давхаргыг, гэрчилгээний гомдол итгэл эсвэл нэрлэлийг, нэвтрэлтийн алдаа нэвтрэх мэдээллийг заана. TLS 1.0, 1024 битийн DHE бүлэг, AES-256-CBC, SHA-1 гарын үсэг санал болгож буй гарц бүрэн хүчинтэй гэрчилгээтэй байсан ч таны мэдээлэл илгээгдэхээс өмнө орчин үеийн бодлогоос татгалзаж болно.
Төгсгөлийн цэгийг системийн OpenSSL-ээр, бодит хостны нэр болон клиентийн ашигладаг порттой шалгана уу.
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com бүтэлгүйтэж, -tls1 -cipher DEFAULT@SECLEVEL=0 амжилттай болвол хил нь хувилбар ба түлхүүрийн хэмжээ хамт гэсэн үг. Эхний команд протоколын анхааруулгын оронд жижиг DH түлхүүр мэдээлбэл, хувилбар зөв бөгөөд зөвхөн бүлэгт анхаарал хэрэгтэй. Шалгалтад хэзээ ч хувийн түлхүүр эсвэл нууц үг хийж болохгүй.
Сонголт 1: крипто бодлогоор бүх хостод суллах
Fedora болон RHEL 8, 9 дээр update-crypto-policies --set LEGACY OpenSSL-ийн системийн бодлогыг бууруулж, update-crypto-policies --show юу идэвхтэй байгааг батална. Энэ нь ихэвчлэн туннелийг сэргээдэг боловч бодлого процессыг эхлүүлэх үед уншигддаг тул дахин шалгахаас өмнө клиент болон түүний үүсгэсэн туслах процессыг дахин эхлүүлнэ үү. Мөн машин дээрх бүх TLS клиентэд хуучин протокол, сул бүлгийг зөвшөөрдөг, хажуугийн цонхны хөтчөөс эхлээд цөмийг шинэчилдэг багц менежер хүртэл.
Энэ өргөн нь бүх зорилго бөгөөд бүх асуудал юм. LEGACY бүх хостод үйлчилдэг, байнгын бөгөөд мартахад хялбар тул удирдлагатай бүтцэд оношлогооны алхам эсвэл баримтжуулсан үл хамаарах зүйл байх ёстой, хэзээ ч ажлын станцын тайван байдал байж болохгүй. Нэг дотоод портал шаардсан учраас хоёр жил LEGACY дээр үлдсэн нэгийг би харсан, хэзээ эхэлснийг хэн ч хэлж чадаагүй.
Debian болон Ubuntu-д үүнд нэг унтраалга байхгүй. Ижил утга нь системийн өгөгдмөл хэсэгт доогуур MinProtocol болон CipherString = DEFAULT@SECLEVEL=0 тогтоох /etc/ssl/openssl.cnf засвар юм. Ижил хүрээ, өөр файл, хувилбар шинэчлэх үед нүднээс алдахад бага зэрэг хялбар.
Сонголт 2: нэг клиентэд нэг тохиргооны файл
Процесс тус бүрийн OpenSSL тохиргоо өөрчлөлтийг нэг процессын мод дотор байлгадаг, гэхдээ файл нь номын сангийн хүлээж буйгаар холбогдсон үед л. ssl_conf хэсгийг нэрлэх нь хангалтгүй: OpenSSL дээд түвшний openssl_conf түлхүүрийг уншиж, түүнийг эхлүүлэх хэсэг хүртэл дагаж, дараа нь л SSL-ийн өгөгдмөлд хүрдэг.
openssl_conf = openssl_init
[openssl_init]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=0OPENSSL_CONF-г тэр файл руу чиглүүлж, VPN клиентийг түүнийг экспортолдог бүрхүүлээр эхлүүлнэ үү. Хост дээрх бусад бүх зүйл өгөгдмөл бодлогыг хадгална, нийцлийн асуулт ирэхэд чухал нь энэ шинж чанар юм. Гарцыг буруутгахаас өмнө файл үнэхээр хүчин төгөлдөр эсэхийг батал: OPENSSL_CONF=/path/to/file openssl ciphers -s -tls1 TLS 1.0 шифрүүдийг жагсаах ёстой, хоосон үр дүн нь гинжин холбоо тасарсан, клиент системийн өгөгдмөлийг чимээгүй хадгалсан гэсэн үг.
Файл хувилбарт мэдрэмтгий. OpenSSL 1.1.1 болон 3.x ижил хэсгийн нэрийг хүлээн авдаг боловч нийлүүлэгчдийн эргэн тойрон дахь заавар боловсруулалт 3.x-д өөрчлөгдсөн тул файлыг уншсан гэж үзэхийн оронд клиентийн өөрийн лог болон туршилтын гар барилтаар шалгана уу. Хэсгийн нэрэнд гарсан алдаа нээлттэйгээр бүтэлгүйтэж, клиент системийн өгөгдмөлийг чимээгүй ашиглана.
Хязгаарлалт нь хамрах хүрээ юм. GnuTLS эсвэл NSS-тэй холбогдсон бүхэн OPENSSL_CONF-г үл тоомсорлодог, клиент орчныг өвлөхгүйгээр эхлүүлсэн аливаа туслах процесс мөн адил. Бүрхүүл барихаас өмнө ldd-аар хоёртын файл үнэхээр аль TLS номын сантай холбогдсоныг шалгана уу, учир нь хариулт нь энэ сонголт огт байгаа эсэхийг шийднэ.
Сонголт 3: нэг удаагийн VM эсвэл контейнер
Хоёр долоо хоногийн турш нэг хуучин гарц руу довтолж буй гэрээт ажилтны хувьд сулласан бодлоготой тусдаа VM нь ажлын станцаас илүү цэвэр хил юм. Хуучин гадаргуу болон өдөр тутмын хөтчийн профайл цаашид цөмийн бодлогыг хуваалцахгүй, устгах нь аудитын илрэл биш, устгал юм.
Энэ нь сүлжээнд холбогдсон машин хэвээр байгаа тул хандалтыг нь хязгаарлаж, ерөнхий вэб үзэлтээс хол байлгана уу. Зардлын зардал нь нөхөх шаардлагатай өөр нэг дүрс бөгөөд энэ нь бодит ч хязгаарлагдмал, харагдахуйц, зөөврийн компьютер дээр мартагдсан LEGACY тугнаас ялгаатай.
Харьцуулалт танд юу үлдээх вэ
Гурван асуултаар сонго: хуучин протокол хэнд хэрэгтэй, хэр удаан, үл хамаарах зүйл үндэслэлээсээ урт насалбал хэн анзаарах вэ. Нэг апп, нэг хүн, хэдэн өдөр нь процессып тохиргоог заана. Нэг төхөөрөмжийн ард байгаа бүхэл флот нь гарц өөрөө рүү заана. Хост дээр байнгын LEGACY бодлого шаарддаг бүхэн бол техникийн хувцас өмссөн худалдан авалтын шийдвэр юм.
Бат бөх засвар нь төхөөрөмжид хамаарна: TLS 1.2 буюу түүнээс шинэ, дор хаяж 2048 битийн бүлэг, AEAD шифр, орчин үеийн гарын үсэгтэй гэрчилгээ. Энэ өөрчлөлтийг төхөөрөмжийн эзнээс хүсэж, дараа нь тохиролцсон хувилбар болон шифрийг клиентийн лог дээр батал. Үл хамаарах зүйлийг хост, гарц, тохиролцсон протокол, зөвшөөрсөн хүн, хугацаа дуусах өдөртэй хамт бич, учир нь түр шийдэл өгөгдмөл болохоос сэргийлдэг нь тэр тэмдэглэл юм.