Хүчингүй нууц гэдэг нь контейнерын асуудал, нууц үгийн дүрэм биш
Татгалзсан итгэмжлэл нь гарц руу хэзээ ч хүрээгүй байж болно. Эхлээд оруулах контейнер, баталгаажуулалтын үе шат, данс өөрөөг харьцуул.
"Хүчингүй нууц" гэсэн мессежийг харах нь ихэвчлэн нэг дүгнэлт гаргадаг: VPN цэг таслалыг дургүйцдэг. Тэр дүгнэлт ихэвчлэн буруу, учир нь мессеж нь гарц дансыг харахаас өмнө локал боловсруулалтаас ирдэг. Нэг нууц үгийг хоёр өөр загвар хүргэдэг — график талбар ба итгэмжлэлийн файл — тэд өөр өөр газарт бүтэлгүйтдэг. Анхнаасаа зөв байсан нууц үгийг хялбарчлахаас өмнө контейнеруудыг харьцуул.
Алдаа гарцаас өмнө ирдэг
Локал баталгаажуулалт, түгжигдсэн нууцын сан, байхгүй агент, буруу форматтай итгэмжлэлийн файл — эд бүгд хэрэглэгчид нэг татгалзал мэт мэдрэгдэх алдаа үүсгэдэг. Тэдгээрийн аль нь ч баталгаажуулалтын серверийг оролцуулдаггүй. Гарцын өөрийн татгалзал нь тусдаа үзэгдэл бөгөөд ихэвчлэн өөр мессеж, өөр цаг хугацаатай ирдэг. Энэ нь туннель үүссэн, итгэмжлэл дамжуулагдсаны дараа болдог.
Тиймээс эхний асуулт нь ямар тэмдэгт зөвшөөрөгдөх биш, харин оролдлого хаана зогссон бэ. Холболт хэзээ ч нээгээгүй клиентийг хэн ч татгалзаагүй. Ажигласан үе шатаа бич, учир нь дараагийн алхам бүр тэр ангилалаас хамаарна.
Энэ ялгаа нь хэн засахаас ч өөрчлөгддөг. Контейнерын асуудал төхөөрөмж ба эзэмшигчид хамаарна, харин дансны татгалзал нь баталгаажуулалтын backend-ийг ажиллуулдаг хүнд хамаарна.
Контейнеруудыг харьцуул, тэмдэгтүүдийг биш
GUI нууц үгийн талбар, keychain бичлэг, хоёр мөрт итгэмжлэлийн файл, автоматжуулалтын нууц — эд бүгд ижил утгыг өөр дугтуйд агуулна. Дугтуй өөрийн дүрэмтэй, тэр дүрэм нь ихэвчлэн эвдэрдэг. Утга нь ховор асуудал; утгын дамжуулалт нь асуудал. Энэ хоёр санааг тусгаарлавал оношилгоо богиносно.
| Where the value stops | What you see | What you check | Who owns the fix |
|---|---|---|---|
| GUI field or managed profile | A validation message before any connection opens | The selected authentication mode and whether the field holds the secret or the username | The device owner or the profile author |
| Keychain or secret agent | A prompt that keeps reappearing, or an agent error | Whether the agent is unlocked and holds an entry for this profile | The user who owns the keychain |
| Two-line credential file | A prompt for a password that was already supplied | Line count, line order and whether a trailing newline is present | Whoever generated the file |
| Shell argument or environment | Works interactively but fails in automation | Whether the shell expanded, trimmed or logged the value | Whoever wrote the automation |
Нийгэмлэгийн OpenVPN 2.6 клиентийн сонголтууд нь auth-user-pass-ийн тэр хоёр мөрт файлыг тайлбарладаг, үүнд нууц үгийн мөр байхгүй үеийн зан төлөвийг оруулан: клиент оронд нь асуудаг. Энэ ганц дэлгэрэнгүй мэдээлэл "аль хэдийн өгсөн нууц үгийг асууж байна" гэсэн тайлангийн ангийг тайлбарлана. Мөн хоосон хоёр дахь мөр нь хор хөнөөлгүй форматлалтын сонголт биш, утга учиртай төлөв гэдгийг хэлж өгнө.
Ишлэл нь дахин тусдаа давхарга: энгийн итгэмжлэлийн файл доторх ишлэлийн тэмдэг нь өгөгдөл болж хадгалагдана, харин shell програмыг харахаас өмнө тэдгээрийг устгадаг. Ижил тэмдэгт нэг газарт хор хөнөөлгүй, нөгөөд нь бүтцийн шинжтэй. Хүснэгт таны клиент ямар контейнер ашигласныг хэлж чадахгүй, тиймээс мөр сонгохоос өмнө клиентийн өөрийн тохиргоог унш.
Мөрийн таслалт ч мөн бүтцийн шинжтэй. Мөрөөр тусгаарлагдсан талбартай файл шинэ мөр агуулсан утгыг зөөж чадахгүй, энэ нь форматын хязгаарлалт, нууц үгийн бат бэхийн үнэлгээ биш. Нууцыг тохиромжгүй файлд тааруулахын тулд богиносгохын оронд байршуулалтын дэмжигдсэн хүргэх механизмыг ашигла.
Итгэмжлэлийн файлыг shell-ийн гэмтэлгүйгээр бүтээ
Хамгийн аюулгүй локал зам нь нууцыг shell-ийн түүх, процессын аргументын жагсаалтаас гадуур байлгадаг. Хоёр талбарыг интерактив байдлаар уншаад, клиентийн хүлээж буй хоёр мөрийг бич. Бусад бүх зүйл хянахад хялбар тохиргооны файлд үлдэж болно.
read -r VPN_USER
read -rs VPN_PASS
printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS" > /etc/openvpn/client/creds
chmod 600 /etc/openvpn/client/creds
openvpn --config /etc/openvpn/client/office.conf --auth-user-pass /etc/openvpn/client/creds
Эхний хоёр команд хэрэглэгчийн нэрийг, дараа нь нууц үгийг дэлгэцэнд харуулахгүйгээр уншдаг, гурав дахь нь хоёр мөрийг бичнэ, дөрөв дэх нь файлыг хязгаарлана, сүүлчийнх нь клиентийг тэр файлаар эхлүүлнэ. read -r нь backslash-ийг хадгалдаг гэдгийг анхаар, энэ нь орхигдвол ажиллаж байсан нууц үгийг ажилгүй болгодог нарийн ширийн зүйл юм.
Файлыг ишлэлгүй хувьсагч эсвэл shell-ийн өргөтгөлөөр дүүрэн here-document-оор бүтээхээс зайлсхий. Хоёулаа тэмдэгтүүдийг файлд хүрэхээс өмнө өөрчилж болох бөгөөд үүнээс үүсэх алдаа нь VPN-ийн татгалзал мэт харагдана, учир нь диск дээрх нууц үг таны мэддэг нууц үгээс үнэхээр өөр байна. Хэрэв үүнийг сэжиглэж байвал нууцыг өөрөө хэвлэхгүйгээр файлын байтын уртыг хүлээгдэж буй утгатай харьцуул. Нэг эсвэл хоёр байтын зөрүү нь ишлэлийн ослын гарын үсэг юм.
Үе шатыг эхний алдаанаас унш
Нэг оролдлогын эхний тодорхой мессежийг хадгалаад, түүнийг ангил. Локал баталгаажуулалтын алдаа, байхгүй хувийн түлхүүр, боломжгүй нууцын агент, гарцын баталгаажуулалтын алдаа — эдгээр нь дөрвөн өөр эзэнтэй дөрвөн өөр үр дүн. Зөвхөн нэг нь дансны тухай.
Хэрэв гарц нь зөв хүргэгдсэн итгэмжлэлийг үнэхээр татгалзаж байгаа бол данс, баталгаажуулалтын backend болон шаардлагатай сорилтыг шалга администратортой хамт. Ерөнхий баталгаажуулалтын алдаа хориотой тэмдэгтийг нэрлэдэггүй.
Зөвшөөрөгдсөн утгыг зөв механизмаар сэргээ, үсэг, цифр болгон багасгахын оронд. Нууц үгийн бодлого нь операторт хамаарна, түүнийг чимээгүйхэн эвддэг тойрч гарах арга нь засвар биш. Энэ нь дараагийн хүнээс жинхэнэ алдааг нуудаг бөгөөд тэр хүн ижил алдаатай, сул нууц үгтэй, илүү санаагүй тулгарна.