Yksi vanha vertaislaite pakottaa TLS 1.0:n: rajaa poikkeus, älä isäntää
Yksi TLS 1.0:een juuttunut laite tai vanha palveluntarjoajan varmenne voi pakottaa heikomman vähimmäistason. Rajaa poikkeus ja mittaa sitten, mitä todella neuvoteltiin.
Yksi vanha laite ilmestyy, ei saa yhteyttä, ja nopeimmalta näyttävä korjaus on heikentää koko isäntää, kunnes yhteys onnistuu. Tämä vaihtokauppa on hetkessä näkymätön ja käytännössä pysyvä, koska kukaan ei poista vähimmäistasoa, joka viimein toimii. Paineen luo kaksi hyvin erilaista vikaa, ja vain toinen niistä liittyy salauksiin lainkaan. Lajittele vika ensin ja aseta poikkeus sitten paikkaan, jossa se ei voi levitä.
Jaa vika kahtia ennen direktiivin muokkaamista
Palvelimen lokirivi puuttuvasta yhteisestä salauksesta tai tukemattomasta protokollaversiosta tulee ohjauskanavalta: kaksi päätä eivät päässeet sopuun siitä, miten itse neuvottelu suojataan. Asiakkaan rivi siitä, ettei mitään palvelinvarmisteen tarkistusmenetelmää ole käytössä, tulee sen sijaan aivan muualta, koska se asiakas ei tarkista lainkaan, kuka vastasi. Datasalauksen vaihtaminen ei tee toisessa tapauksessa mitään, eikä roolitarkistuksen lisääminen tee ensimmäisessä mitään.
Ota kummaltakin puolelta aikaisin epäonnistunut rivi, älä viimeistä riviä ennen katkaisua, koska viimeinen on yleensä seuraus. Selvitä sitten, minkä tiedoston asiakas todella avasi: tuotu profiili on usein kahdesti eri näyttönimillä, ja sen kopion muokkaaminen, jota kukaan ei lue, tuottaa vakuuttavan muuttumattomuuden. Käynnissä oleva prosessi pitää ne asetukset, joilla se käynnistyi, joten tallennettu tiedosto ei ole ladattu tiedosto. Alla olevat komennot näyttävät asiakkaan neuvottelun palvelimen näkemyksen rinnalla samasta yrityksestä.
openvpn --config <profile>.ovpn --verb 4 2>&1 | head -n 40
journalctl -u [email protected] --since '-10 min' | grep -iE 'cipher|tls|verify'
Toinen kuuntelija on rehellinen paikka heikommalle vähimmäistasolle
Kun laite yltää vain TLS 1.0:een ennen 2.5:tä olevalla datakanavalla, palvelimen on tarjottava matalampi ohjauskanavan vähimmäistaso ja datasalaus, jonka vanha asiakas tunnistaa. Varadirektiivi on olemassa juuri tuota vertaislaitetta varten, kun taas salausluettelo pitää nykyaikaiset asiakkaat nykyaikaisissa kokonaisuuksissa. Molemmat direktiivit kuuluvat kuuntelijalle, eivät käyttäjälle tai yhteydelle, eikä mikään asiakaskohtainen valinta kavenna niitä jälkeenpäin. Siksi yksi vanha laite pääportissa on päätös jokaisesta vertaislaitteesta, joka jakaa sen.
Missä alusta sen sallii, aja vanha kuuntelija omana ilmentymänään erillisessä portissa, salli se portti vain laitteen osoitteesta ja jätä pääpalvelu rauhaan. Kirjoita muistiin, miksi toinen kuuntelija on olemassa, sen konfiguraation sisältävään tiedostoon, koska tuleva siivous lukee sen muuten jäänteeksi. Jaottelu on sen arvoinen vain, jos heikompi vähimmäistaso päättyy sinne, mihin laite päättyy.
tls-version-min 1.0
data-ciphers AES-128-GCM:AES-256-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC
Mitä vanha palveluntarjoajan varmenne oikeastaan rikkoo
Tarkistusvirhe on puuttuva roolisidonta: ilman sitä asiakas hyväksyy minkä tahansa varmenteen, joka ketjutuu luotettuun CA:han, riippumatta siitä, onko se myönnetty palvelimelle. Sido varmenne ensin palvelimen rooliin ja kohtele sidontaa vaatimuksena, älä säätönuppina. Vain profiililla, joka epäonnistuu vielä tämän vaiheen jälkeen, on todellinen varmenneongelma.
Vanha palveluntarjoajan varmenne, jonka avaimen koko tai allekirjoitusalgoritmi ei enää täytä OpenSSL:n oletuskäytäntöä, on tapaus rajattuun ohjauskanavan suojaustason muutokseen. Tason laskeminen siellä ei kytke tarkistusta pois, eikä sitä saa koskaan yhdistää tyhjään CA:han, poistettuun tarkistusasetukseen tai tarkistamattomaan isäntänimeen. Pidä rivi vain sen yhden profiilin sisällä, joka sitä tarvitsee; höllennetyn OpenSSL-konfiguraation vieminen maailmanlaajuisesti antaisi saman höllennyksen jokaiselle koneen ohjelmalle.
remote-cert-tls server
tls-cipher "DEFAULT:@SECLEVEL=0"
Lue neuvotellut arvot, älä banneria
Yksityiskohtaisuustasolla 4 molemmat päät tulostavat ohjauskanavan TLS-version ja salauksen, josta ne sopivat, sekä istunnon datasalauksen. Lue ne rivit, älä alustusbanneria, joka kertoo onnistumisesta eikä sen ehdoista. Yhdistä sitten nykyaikainen asiakas uudelleen pääkuuntelijaan ja varmista, että se päätyy edelleen nykyaikaiseen kokonaisuuteen, koska yhteiseen konfiguraatioon vuotanut poikkeus näkyy täällä ensin. Kopioimasi arvot ovat seuraavan tarkastelun lähtötaso.
Testaa vanhaa laitetta yksin: sen pitäisi yhdistää, ja sen pitäisi olla ainoa lokien istunto, joka näyttää heikommat parametrit. Jos toinenkin vertaislaite neuvottelee vanhan kokonaisuuden, poikkeus on laajempi kuin oli tarkoitus, eikä kuuntelijan jaottelu todella tapahtunut. Kirjaa molemmat havainnot, älä vain johtopäätöstä.
Jokainen poikkeus tarvitsee omistajan ja päivämäärän
Poikkeuksesta ilman poistoehtoa tulee hiljaa oletusarvo, joten laita laite, omistaja, syy ja päivämäärä, jolloin se poistuu, sen konfiguraation viereen, jonka se oikeuttaa. Ilman sitä riviä heikompi vähimmäistaso elää kauemmin kuin laitteisto, joka sitä tarvitsi.
Asiakkaan vaihtaminen tai ajantasaisen profiilin pyytäminen palveluntarjoajalta on tavoite; poikkeus on viivytys eikä suunnittelu. Kun laite poistuu käytöstä, poista kuuntelija ja profiili samassa muutoksessa, jotta kumpikaan puoli ei jää toimimaan. Mikään tästä ei tee vanhoista parametreista turvallisia, se vain estää yhden laitteen rajan tulemisen kaikkien lähtötasoksi.