Нэг хуучин хамтрагч TLS 1.0-ыг тулгаж байна: үл хамаарах зүйлийг хязгаарла, хостыг биш
TLS 1.0 дээр гацсан нэг төхөөрөмж эсвэл хуучин үйлчилгээ үзүүлэгчийн гэрчилгээ нь илүү сул доод хязгаарыг тулгаж болно. Үл хамаарах зүйлийг хязгаарлаад, дараа нь үнэхээр юу тохиролцсоныг хэмж.
Нэг хуучин төхөөрөмж гарч ирээд холбогдож чадахгүй, хамгийн хурдан харагдах засвар бол холболт амжилттай болтол бүх хостыг сулруулах юм. Тэр солилцоо тэр мөчид үл үзэгдэх бөгөөд практикт байнгын болдог, учир нь эцэст нь ажиллаж эхэлсэн доод хязгаарыг хэн ч арилгадаггүй. Даралтыг хоёр тэс өөр гэмтэл үүсгэдэг бөгөөд тэдгээрийн зөвхөн нэг нь л шифртэй огт холбоотой. Эхлээд гэмтлийг ялгаж, дараа нь үл хамаарах зүйлийг тархаж чадахгүй газарт тавь.
Заавар өөрчлөхөөс өмнө гэмтлийг хоёр хуваа
Хамтарсан шифр байхгүй эсвэл протоколын хувилбар дэмэгдэхгүй гэсэн серверийн лог мөр нь хяналтын сувгаас ирдэг: хоёр тал хэлэлцээрийг өөрөө хэрхэн хамгаалах талаар тохиролцож чадаагүй. Серверийн гэрчилгээг шалгах ямар ч арга идэвхжээгүй гэсэн клиентийн мөр огт өөр газраас ирдэг, учир нь тэр клиент хэн хариулсныг огт шалгадаггүй. Өгөгдлийн шифрийг солих нь хоёр дахь тохиолдолд юу ч хийхгүй, ролийн шалгалт нэмэх нь эхнийхэд юу ч хийхгүй.
Салгахаас өмнөх сүүлчийн мөрийг биш, тал бүрийн хамгийн эрт унасан мөрийг ав, учир нь сүүлчийнх нь ихэвчлэн зөвхөн үр дагавар. Дараа нь клиент үнэхээр аль файлыг нээснийг тогтоо: импортолсон профайл ихэвчлэн өөр өөр харагдах нэрээр хоёр удаа байдаг бөгөөд хэн ч уншдаггүй хуулбарыг засах нь итгэл үнэмшилтэй «өөрчлөлтгүй» байдлыг үүсгэдэг. Ажиллаж буй процесс эхлэх үеийн тохиргоог хадгалдаг тул хадгалсан файл нь ачаалсан файл биш. Доорх командууд нэг оролдлогын клиентийн хэлэлцээр болон серверийн харцгүйг зэрэгцүүлэн харуулна.
openvpn --config <profile>.ovpn --verb 4 2>&1 | head -n 40
journalctl -u [email protected] --since '-10 min' | grep -iE 'cipher|tls|verify'
Сул доод хязгаарт хоёр дахь сонсогч нь шударга газар
Төхөөрөмж 2.5-аас өмнөх өгөгдлийн сувагтай TLS 1.0 дээр зогсвол сервер хяналтын сувгийн доогуур хязгаар болон хуучин клиент таних өгөгдлийн шифрийг санал болгох ёстой. Нөөц заавар нь яг тэр хамтрагчид зориулагдсан бөгөөд шифрийн жагсаалт орчин үеийн клиентүүдийг орчин үеийн багц дээр байлгадаг. Хоёр заавар нь хэрэглэгч эсвэл холболтод биш, сонсогчид хамаарах бөгөөд дараа нь ямар ч клиент тус бүрийн тохиргоо тэдгээрийг нарийсгахгүй. Тиймээс үндсэн порт дээрх нэг хуучин төхөөрөмж нь тухайн портыг хуваалцдаг хамтрагч бүрийн тухай шийдвэр юм.
Платформ зөвшөөрвөл хуучин сонсогчийг тусдаа порт дээр өөрийн инстанц болгон ажиллуул, тэр портыг зөвхөн төхөөрөмжийн хаягаас зөвшөөр, үндсэн үйлчилгээг хөндөхгүй орхи. Хоёр дахь сонсогч яагаад байгааг түүний тохиргоог агуулсан файлд бичиж үлдээ, эс тэгвээс ирээдүйн цэвэрлэгээ үүнийг үлдэгдэл хог гэж уншина. Сул доод хязгаар төхөөрөмж дуусах газарт дууссан тохиолдолд л энэ хуваалт үнэ цэнэтэй.
tls-version-min 1.0
data-ciphers AES-128-GCM:AES-256-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC
Хуучин үйлчилгээ үзүүлэгчийн гэрчилгээ үнэндээ юуг эвддэг
Шалгалтын алдаа бол дутуу ролийн холбоо: үүнгүйгээр клиент итгэмжлэгдсэн CA-тай холбогддог аливаа гэрчилгээг хүлээн авна, тэр нь серверт зориулж олгогдсон эсэхээс үл хамааран. Эхлээд гэрчилгээг серверийн рольтой холбож, холбоог тохируулгын бариул биш, шаардлага гэж үз. Зөвхөн тэр алхмын дараа ч унадаг профайл л жинхэнэ гэрчилгээний асуудалтай.
Түлхүүрийн хэмжээ эсвэл гарын үсгийн алгоритм нь OpenSSL-ийн өгөгдмөл бодлогод цаашид нийцэхгүй байгаа хуучин үйлчилгээ үзүүлэгчийн гэрчилгээ нь хяналтын суваг дээр аюулгүй байдлын түвшинг хязгаарлагдмал өөрчлөх тохиолдол юм. Тэнд түвшинг буулгах нь шалгалтыг унтраахгүй бөгөөд үүнийг хоосон CA, идэвхгүй шалгалт эсвэл шалгаагүй хостын нэртэй хэзээ ч нэгтгэж болохгүй. Мөрийг түүнд хэрэгтэй ганц профайл дотор байлга; суларсан OpenSSL тохиргоог глобал байдлаар экспортлох нь машины бүх програмыг ижил сулралд хүргэнэ.
remote-cert-tls server
tls-cipher "DEFAULT:@SECLEVEL=0"
Баннер биш, тохиролцсон утгуудыг унш
verbosity 4 үед хоёр тал тохиролцсон хяналтын сувгийн TLS хувилбар болон шифр, сессийн өгөгдлийн шифрийг хэвлэнэ. Эхлүүлэх баннерыг биш, тэдгээр мөрийг унш, учир нь баннер амжилтыг мэдээлдэг бөгөөд түүний нөхцлийг биш. Дараа нь орчин үеийн клиентийг үндсэн сонсогчтой дахин холбож, тэр орчин үеийн багц дээр бууж байгаа эсэхийг батал, учир нь хуваалцсан тохиргоонд нэвчсэн үл хамаарах зүйл энд хамгийн түрүүнд илэрдэг. Хуулж авсан утгууд нь дараагийн хяналтын суурь болно.
Хуучин төхөөрөмжийг тусад нь туршиж үз: тэр холбогдох ёстой бөгөөд логуудад сул параметрүүдийг харуулж буй цорын ганц сесс байх ёстой. Хэрэв хоёр дахь хамтрагч мөн хуучин багц дээр тохиролцвол үл хамаарах зүйл төлөвлөснөөс өргөн бөгөөд сонсогчдын хуваалт үнэндээ болоогүй. Зөвхөн дүгнэлтийг биш, хоёр ажиглалтыг ч бичиж тэмдэглэ.
Үл хамаарах зүйл бүрт эзэн ба огноо хэрэгтэй
Арилгах нөхцөлгүй үл хамаарах зүйл чимээгүйгээр өгөгдмөл болдог тул төхөөрөмж, эзэн, шалтгаан, түүний арилах огноог түүнийг зөвтгөж буй тохиргооны хажууд тавь. Тэр мөргүй бол сул доод хязгаар түүнд хэрэгтэй байсан техникээс илүү урт амьдарна.
Клиентийг солих эсвэл үйлчилгээ үзүүлэгчээс одоогийн профайлыг хүсэх нь зорьж хүрэх үр дүн; үл хамаарах зүйл бол дизайн биш, хойшлуулалт. Төхөөрөмж ашиглалтаас гарахад сонсогч болон профайлыг нэг өөрчлөлтөөр устгаж, аль ч хагас нь ажиллаж үлдэхгүй болго. Эдгээрийн аль нь ч хуучин параметрүүдийг аюулгүй болгодоггүй, зөвхөн нэг төхөөрөмжийн хязгаар бүгдийн суурь болохоос сэргийлдэг.