duplicate-cn annab kahele seadmele ühe identiteedi, mitte kaks
duplicate-cn lubab teist samaaegset seanssi ühe ühise nime all. See ei loo kunagi teist seadmeidentiteeti, teist aadressi ega eraldi tühistamist.
Kopeerige profiil tahvlisse, ühendage ja sülearvuti kukub välja. Lisage duplicate-cn, mõlemad jäävad ühendatuks ja probleem näib lahendatud, kuni kaks seadet hakkavad võitlema sama tunneliaadressi pärast või kadunud tahvel viib kogu konto võrgust välja. See valik muudab ühte asja ja ainult ühte: kas server lubab teist seanssi nime all, mida ta on juba näinud. Kõik, mida inimesed loodavad selle parandavat — seadmete sõltumatusest kuni seadmepõhise adresseerimise ja valikulise tühistamiseni — tehakse endiselt identiteedi kaudu, ja identiteet on siin sertifikaat.
Müüt: teine seanss on teine identiteet
Intuitsioon ütleb, et kaks ühendust peavad olema kaks klienti ja kaks klienti peaksid olema kaks seadet oma õigustega. Server ei modelleeri seda nii. Ta näeb ühist nime ja duplicate-cn-i lubatud olekus võtab vastu rohkem kui ühe selle nimega aktiivse seansi, kusjuures igaüks saab deemonis oma seansioleku.
See vastuvõtt ei puuduta kuidagi sertifikaadi kontrolli. Sama sertifikaat on endiselt volitus, sama võti on endiselt privaatvõti ja iga sertifikaadi subjektile toetuv poliitika annab ikka kaks korda sama väärtuse. Teine seanss on teine socket, mitte teine identiteet.
See erinevus on nähtamatu, kuni kõik töötab. See muutub väga nähtavaks hetkel, mil peate kaks seadet eristama — ja see on tavaliselt päev, mil üks neist kaob.
Mis tegelikult muutub, kui kaks seanssi jagavad nime
Ilma valikuta tõrjub uus ühendus ühise nime all, mis on juba ühendatud, varasema seansi välja. Sellepärast kukubki sülearvuti välja, kui tahvel ühendub, ja see on tahtlik kaitse mitmetähenduslikkuse vastu, mitte viga. Valikuga jäävad mõlemad seansid elama ja server jälgib neid eraldi seansi, mitte seadme järgi.
Iga seanss saab endiselt oma välisühenduse ja oma kokkulepitud võtmed, seega samaaegne läbilaskevõime on tõesti samaaegne. Ühine on kõik, mis tuleneb volitusest: poliitikaotsingud, kliendipõhine konfiguratsioon, logi identiteet ja tühistamine. Seansiolek kuulub ühendusele ja sureb koos sellega, samas kui volituse tasandi faktid püsivad mõlema jaoks. Sellepärast võib olekuväljund loetleda sama nime kaks korda, samal ajal kui loendurid jäävad eraldi.
Kontrollige, mida teie ehitus tegelikult teeb, enne kui sellele projekteerite, sest valiku mõju määrab valik ise, mitte rahvajutud:
grep -n 'duplicate-cn\|client-config-dir\|username-as-common-name' /etc/openvpn/server.conf
Staatiline aadress, mille te arvasite olevat määranud
Kliendipõhist konfiguratsiooni otsitakse nime järgi ja see ongi lõks. Fail client-config-dir, mis on nimetatud ühise nime järgi kehtib iga seadme kohta, mis seda nime kasutab, seega selle sees olev ifconfig-push annab mõlemale seadmele sama tunneliaadressi. Teine seanss kas ei saa üldse püsti või põrkab kokku nii, et see näeb välja nagu marsruutimise rike.
Dünaamiline pool käitub paremini juhuslikult, sest igale seansile eraldatakse aadress poolist iseseisvalt. See ei anna teile siiski püsivat seadmepõhist aadressi ja kindlasti ei anna seadmepõhist poliitikat, mis oleks selle aadressiga seotud.
Kui juurutuses kasutatakse username-as-common-name, saab otsinguvõtmest autenditud kasutajanimi sertifikaadi subjekti asemel ja sama kokkupõrge tabab kõiki, kes logivad sisse kaks korda. Konfiguratsiooni juhtiv nimi peab olema iga seadme jaoks unikaalne, et seadmepõhisel konfiguratsioonil oleks mõtet.
Mida ühine identiteet eemaldamise hetkel teha ei saa
Tühistamine toimib sertifikaadile, mitte kuvatavale nimele ja mitte seansile. Tühistage see sertifikaat ja iga koopiat omav seade kaotab kohe juurdepääsu, kaasa arvatud see kontoris, keda keegi häirida ei taha. Jätke see kehtima ja kadunud seade töötab edasi, sest protokollis ei erista miski seda kinnitatud koopiast.
Logid pärivad sama mitmetähenduslikkuse. Olekuväljund näitab ühist nime ja tegelikku aadressi ning mõlemad võivad kuuluda kummale tahes kahest seadmest. Intsidendi ülevaatus, mis peab teadma, milline masin mida tegi, ei saa sellele küsimusele VPN-i enda kirjetest vastata, ükskõik kui palju detaile logitase pakub.
Sellele ei ole krüptograafilist möödaviiguviisi. Kaks seadet, mis esitavad sama sertifikaati, on serveri jaoks sama osaleja kaks korda, ja iga skeem, mis väidab vastupidist, on nimekonventsioon, mitte kontroll.
Millal jagamine on õige ja kuidas seda piirata
Jagamisel on seaduslikke kasutuskohti: laborikonto, mida kasutab mitu testmasinat, või majapidamine, kus seadmeid hallatakse koos ja tühistamise detailsus ei loe. Sellistel juhtudel lubage valik teadlikult, hoidke ühine volitus seadmepõhisest poliitikast väljas ja jätke poolile ruumi, et seansid ei põrkaks aadressil kokku.
Kõige jaoks, mis vajab eraldi aadresse, eraldi loge või eraldi eemaldamist, väljastage eraldi sertifikaadid tavapärasel registreerimisteel. See annab igale allavoolu süsteemile eraldi objekti, millele toetuda, ja valik kaotab tähtsuse, sest nimed on juba unikaalsed.
Ükskõik millise tee valite, testige haldusmudelit, mitte sisselogimist. Ühendage mõlemad seadmed, kinnitage, et neil on erinevad aadressid, seejärel simuleerige kaotust ja kontrollige, kas saate eemaldada täpselt ühe neist. Käsiraamat openvpn(8) määrab valiku ulatuse; teie eemaldamisprotseduur määrab, kas jagamine on tegelikult vastuvõetav.