Неважечки тајни е контејнерски проблем, а не правило за лозинка
Одбиените акредитиви можеби никогаш не стигнале до портата. Најпрво споредете го влезниот контејнер, фазата на автентикација и самата сметка.
Гледањето "invalid secrets" обично води до еден заклучок: на VPN не му се допаѓаат интерпункциски знаци. Тој заклучок обично е погрешен, бидејќи пораката често доаѓа од локална обработка пред воопшто некоја порта да ја погледне сметката. Два нацрта ја доставуваат истата лозинка, графичко поле и датотека со акредитиви, и тие откажуваат на различни места. Споредете ги контејнерите пред да поедноставите лозинка што цело време била добра.
Грешката доаѓа пред портата
Локална валидација, заклучено складиште на тајни, отсутен агент и погрешно форматирана датотека со акредитиви — сите создаваат дефекти што корисникот ги доживува како едно одбивање. Ниту еден од нив не вклучува сервер за автентикација. Одбивањето на самата порта е посебен настан и обично доаѓа со друга порака и друго време. Тоа се случува откако тунелот постои и акредитивите се пренесени.
Затоа првото прашање не е кои знаци се дозволени, туку каде застана обидот. Клиент што никогаш не отворил врска не е одбиен од никого. Запишете ја фазата што ја набљудувавте, бидејќи секој следен чекор зависи од таа класификација.
Оваа разлика менува и кој го поправа. Контејнерскиот проблем му припаѓа на уредот и неговиот сопственик, додека одбивањето на сметката му припаѓа на оној што го води автентикацискиот бекенд.
Споредете ги контејнерите, не знаците
GUI поле за лозинка, запис во клучен синџир, дволиниска датотека со акредитиви и автоматизациска тајна — сите ја носат истата вредност во различен плик. Пликот има свои правила, и обично токму тие правила се кршат. Вредноста ретко е проблем; проблем е транспортот на вредноста. Држете ги двете идеи одвоени и дијагнозата станува пократка.
| 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 |
Опциите на клиентот Community 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 ги зачувува обратните коси црти, и токму таков детал ја претвора лозинката што работела во таква што не работи кога ќе се испушти.
Не градете ја датотеката со нецитирана променлива или here-document полн со shell проширувања. И двете можат да ги трансформираат знаците пред да стигнат до датотеката, а добиениот дефект изгледа како одбивање од VPN, бидејќи лозинката на дискот навистина се разликува од онаа што ја знаете. Ако се сомневате, споредете ја должината во бајти со очекуваната вредност без да ја печатите самата тајна. Несовпаѓање од еден или два бајти е потпис на цитатна несреќа.
Прочитајте ја фазата од првата грешка
Зачувајте ја првата конкретна порака од еден обид, потоа класифицирајте ја. Локална валидациска грешка, отсутен приватен клуч, недостапен агент за тајни и автентикациски дефект на портата се четири различни резултати со четири различни одговорни. Само еден од нив е за сметката.
Ако портата навистина одбива правилно доставени акредитиви, со администраторот проверете ја сметката, автентикацискиот бекенд и секој потребен предизвик. Општ автентикациски дефект не именува забранет знак.
Вратете ја одобрената вредност преку правилниот механизам наместо да ја сведете на букви и цифри. Политиката за лозинки му припаѓа на операторот, а заобиколното решение што тивко ја победува не е поправка. Тоа го крие и вистинскиот дефект од следниот човек, кој ќе ја сретне истата грешка со послаба лозинка.