La clau que demostra que la teva passarel·la és ella mateixa i la credencial que diu que una persona pot unir-s'hi són totes dues secrets, i aquí s'acaba la semblança. Una identifica un servei davant de cada client; l'altra identifica un usuari davant d'aquest servei. Barrejar-les estalvia un pas durant la configuració i costa un matí durant un incident, perquè la recuperació de cadascuna no és la mateixa operació. La separació és avorrida de configurar i memorable d'ometre.

Dos secrets, dos propietaris diferents

La passarel·la guarda una clau privada o un certificat l'única feina del qual és demostrar la seva identitat durant l'apretada de mans. Els clients necessiten el material públic corresponent per verificar-la, i mai no necessiten la meitat privada. Aquesta asimetria és el que fa possible l'autenticació del servidor sense donar a cada usuari la capacitat de suplantar el servidor.

El material d'usuari va en l'altra direcció. Una clau privada de client, un certificat de client o una contrasenya demostren que aquesta persona o dispositiu concret ha rebut accés. S'espera que es distribueixi, es copiï entre dispositius i finalment es revoqui.

WireGuard fa òbvia la separació perquè cada participant té un parell de claus: la clau privada del servidor es queda al servidor, i un fitxer de configuració que dones a un usuari conté la seva pròpia clau privada més la clau pública del servidor. Un perfil que conté la clau privada del servidor no és un drecera, és un compromís que espera un recurs compartit.

Tres preguntes que decideixen la separació

Pregunta qui ha de poder llegir el secret, què permetria fer a un atacant una exposició i si la solució és una revocació o una reconstrucció del servei.

Si un usuari el pot llegir i demostra la identitat de la passarel·la, la resposta a la segona pregunta és que l'atacant pot suplantar el teu servidor davant de cada client — el pitjor resultat, perquè els clients estan dissenyats per confiar en aquesta identitat. Si només demostra un usuari, l'exposició concedeix l'accés d'aquest usuari a un parell, i la revocació és una operació rutinària. Si és una clau d'autoritat de certificació, l'exposició és pitjor que les dues, ja que l'atacant pot encunyar identitats en què confia cada extrem.

Aquestes tres respostes produeixen la regla d'emmagatzematge: la clau de CA viu fora de línia o en una caixa forta, la clau de la passarel·la viu a la passarel·la, i les claus d'usuari viuen amb els usuaris. Qualsevol disposició que posi les tres en un sol directori per comoditat ha convertit una decisió en un accident.

Què necessita realment un client

Un client necessita el certificat públic o la clau pública del parell, el material de CA o l'empremta en què ha de confiar, la seva pròpia clau privada i les dades de l'extrem. Aquesta llista no conté res que pertanyi a la identitat privada de la passarel·la.

La documentació és on això s'escapa. Una guia que diu copia el directori del servidor i esborra el que no necessites ja ha ensenyat el model equivocat, perquè el fitxer que queda després del pas d'esborrar poques vegades el revisa algú.

Revoca un usuari sense tocar la passarel·la

Com que les identitats d'usuari s'emeten per separat, es poden retirar per separat. Un desplegament basat en certificats revoca el certificat de client i publica una llista de revocació actualitzada; un desplegament de WireGuard elimina l'entrada del parell de la configuració del servidor. Cap d'aquestes operacions canvia la clau pròpia de la passarel·la.

Conserva el registre d'emissió, o no sabràs quina identitat retirar. Un full de càlcul n'hi ha prou, sempre que anomeni la persona, el dispositiu, el número de sèrie o la clau pública i la data, i sempre que algú se n'encarregui després que la persona que el va construir marxi.

Les ordres següents inspeccionen un certificat de client i després el revoquen mitjançant una autoritat a l'estil OpenSSL, que és el flux que easy-rsa embolcalla:

openssl x509 -in client.crt -noout -subject -serial
openssl ca -config openssl.cnf -revoke client.crt
openssl ca -config openssl.cnf -gencrl -out crl.pem

Publica la nova llista allà on els clients la comproven, o la revocació és una nota en un fitxer que no canvia res. Si la teva passarel·la accepta certificats de client sense consultar una llista de revocació, digues-ho explícitament en lloc d'insinuar que la revocació funciona.

Mantén les còpies de seguretat tan separades com els secrets

Un arxiu de reconstrucció conté legítimament la clau de la passarel·la i el material de CA, perquè sense ells una restauració no pot reproduir el servei. Un paquet de configuració de client no ho ha de contenir, i els dos no s'han de guardar junts. Etiqueta cada arxiu per qui el pot guardar, no per la data en què es va fer. Aquesta etiqueta és el que llegeix un administrador cansat a les dues de la matinada.

Aquesta distinció també fixa qui pot recuperar cadascun. Administrar la passarel·la, emetre identitats d'usuari i llegir còpies de seguretat són tres poders diferents, i qui necessita un no necessita automàticament els altres. Escriu aquests permisos i després comprova'ls amb el que el teu emmagatzematge permet realment, perquè l'herència de directoris concedeix en silenci més del que la política pretén.

Articles relacionats