Virheellisten salaisuuksien näkeminen johtaa yleensä yhteen johtopäätökseen: VPN ei pidä välimerkeistä. Tämä johtopäätös on yleensä väärä, koska viesti tulee usein paikallisesta käsittelystä ennen kuin yksikään yhdyskäytävä on katsonut tiliä. Kaksi rakennetta välittävät saman salasanan, graafinen kenttä ja tunnistetiedostosto, ja ne epäonnistuvat eri kohdissa. Vertaa säilöjä ennen kuin yksinkertaistat salasanaa, joka oli koko ajan kunnossa.

Virhe tulee ennen yhdyskäytävää

Paikallinen validointi, lukittu salaisuussäilö, puuttuva agentti ja väärin muodostettu tunnistetiedosto tuottavat kaikki epäonnistumisia, jotka käyttäjä kokee yhtenä hylkäyksenä. Mikään niistä ei liity todennuspalvelimeen. Yhdyskäytävän oma hylkäys on erillinen tapahtuma, ja se saapuu yleensä eri viestillä ja eri aikaan. Se tapahtuu, kun tunneli on olemassa ja tunnistetiedot on siirretty.

Ensimmäinen kysymys ei siis ole, mitkä merkit ovat sallittuja, vaan mihin yritys pysähtyi. Asiakasohjelmaa, joka ei koskaan avannut yhteyttä, ei ole hylännyt kukaan. Kirjoita muistiin havaittu vaihe, koska jokainen myöhempi askel riippuu tästä luokittelusta.

Ero muuttaa myös sitä, kuka sen korjaa. Säilön ongelma kuuluu laitteelle ja sen omistajalle, kun taas tilin hylkäys kuuluu sille, joka ylläpitää todennuksen taustajärjestelmää.

Vertaa säilöjä, älä merkkejä

Graafinen salasanakenttä, avainnipun merkintä, kaksirivinen tunnistetiedosto ja automaation salaisuus kantavat kukin saman arvon eri kirjekuoressa. Kirjekuorella on omat sääntönsä, ja juuri ne säännöt yleensä rikkoutuvat. Arvo on harvoin ongelma; arvon siirto on. Pidä kaksi ajatusta erillään, niin diagnoosi lyhenee.

Where the value stopsWhat you seeWhat you checkWho owns the fix
GUI field or managed profileA validation message before any connection opensThe selected authentication mode and whether the field holds the secret or the usernameThe device owner or the profile author
Keychain or secret agentA prompt that keeps reappearing, or an agent errorWhether the agent is unlocked and holds an entry for this profileThe user who owns the keychain
Two-line credential fileA prompt for a password that was already suppliedLine count, line order and whether a trailing newline is presentWhoever generated the file
Shell argument or environmentWorks interactively but fails in automationWhether the shell expanded, trimmed or logged the valueWhoever wrote the automation

OpenVPN 2.6 -yhteisön asiakasvalinnat kuvaavat tuon kaksirivisen tiedoston auth-user-pass-kohdassa, mukaan lukien käyttäytymisen, kun salasanarivi puuttuu: silloin asiakasohjelma kysyy sen itse. Tämä yksi yksityiskohta selittää kokonaisen luokan raportteja tyyppiä «se kysyy salasanaa, jonka olen jo antanut». Se kertoo myös, että tyhjä toinen rivi on merkityksellinen tila eikä harmiton muotoiluvalinta.

Lainausmerkit ovat taas oma kerroksensa: tavallisen tunnistetiedoston lainausmerkit tallennetaan datana, kun taas komentotulkki poistaa ne ennen kuin ohjelma näkee mitään. Sama merkki on harmiton yhdessä paikassa ja rakenteellinen toisessa. Taulukko ei voi kertoa, mitä säilöä asiakasohjelmasi käytti, joten lue asiakasohjelman oma kokoonpano ennen rivin valitsemista.

Myös rivinvaihdot ovat rakenteellisia. Tiedosto, jonka kentät on erotettu rivein, ei voi kantaa arvoa, joka sisältää rivinvaihdon, ja se on muodon rajoitus, ei arvio salasanan vahvuudesta. Käytä käyttöönoton tukemaa toimitustapaa sen sijaan, että leikkaisit salaisuutta mahtuaksesi itse tehtyyn tiedostoon.

Luo tunnistetiedosto ilman komentotulkin vaurioita

Turvallisin paikallinen reitti pitää salaisuuden poissa komentotulkin historiasta ja prosessin argumenttiluettelosta. Lue molemmat kentät vuorovaikutteisesti ja kirjoita sitten ne kaksi riviä, joita asiakasohjelma odottaa. Kaikki muu voi jäädä helposti tarkasteltavaan kokoonpanotiedostoon.

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

Kaksi ensimmäistä komentoa lukevat käyttäjänimen ja sitten salasanan sitä näyttämättä, kolmas kirjoittaa molemmat rivit, neljäs rajoittaa tiedoston ja viimeinen käynnistää asiakasohjelman tuolla tiedostolla. Huomaa, että read -r säilyttää kenoviivat, ja juuri sellainen yksityiskohta muuttaa toimivan salasanan epäonnistuvaksi, kun se jätetään pois.

Vältä tiedoston rakentamista lainausmerkeittömällä muuttujalla tai here-dokumentilla, joka on täynnä komentotulkin laajennuksia. Molemmat voivat muuntaa merkkejä ennen kuin ne päätyvät tiedostoon, ja tuloksena oleva epäonnistuminen näyttää VPN:n hylkäykseltä, koska levyllä oleva salasana on todella eri kuin tuntemasi salasana. Jos epäilet tätä, vertaa tiedoston tavupituutta odotettuun arvoon tulostamatta itse salaisuutta. Yhden tai kahden tavun ero on lainausmerkkionnettomuuden allekirjoitus.

Lue vaihe ensimmäisestä virheestä

Säilytä yhden yrityksen ensimmäinen konkreettinen viesti ja luokittele se sitten. Paikallinen validointivirhe, puuttuva yksityinen avain, käyttämätön salaisuusagentti ja yhdyskäytävän todennusvirhe ovat neljä eri tulosta neljällä eri omistajalla. Vain yksi niistä koskee tiliä.

Jos yhdyskäytävä todella hylkää oikein toimitetun tunnistetiedon, tarkista tili, todennuksen taustajärjestelmä ja mahdollinen vaadittu haaste ylläpitäjän kanssa. Yleinen todennusvirhe ei nimeä kiellettyä merkkiä.

Palauta hyväksytty arvo oikean mekanismin kautta sen sijaan, että kutistaisit sen kirjaimiksi ja numeroiksi. Salasanakäytäntö kuuluu operaattorille, eikä sitä hiljaa kiertävä kiertotie ole korjaus. Se myös piilottaa varsinaisen vian seuraavalta henkilöltä, joka kohtaa saman virheen heikommalla salasanalla ja ilman parempaa ideaa.

Aiheeseen liittyvät artikkelit