Un concentrador que executa WireGuard pot mantenir els grups de parells separats sense una interfície ni una taula d'encaminament separada per a cada grup. Dos mecanismes fan la feina, i confondre'ls és el motiu habitual que una política sembli correcta i no faci res. Una capa decideix qui pot reclamar una adreça d'origen. L'altra decideix on es permet que vagi aquest paquet.

Dues feines, mantingudes a part

La capa de túnel respon una pregunta estreta: la clau d'aquest parell ha autoritzat aquesta adreça d'origen interna. La capa de reenviament respon una de més àmplia: pot aquest paquet sortir cap a aquella destinació. Cap de les dues respon la pregunta de l'altra, i cap de les dues no és una política d'accés completa per si sola.

Aquesta separació és el motiu pel qual un parell pot estar autenticat, adreçat correctament i tot i així no poder arribar a un equip que no hauria d'assolir. També explica el contrari: una regla de tallafoc que ho permet tot no demostra res sobre qui pot reclamar quina adreça.

Dissenyeu les dues capes alhora i després proveu les dues. Una configuració correcta en una capa i no provada en l'altra falla oberta o tancada segons el valor per defecte.

Doneu a cada parell només la seva pròpia adreça

Els parells amb diversos equips us tempten a concedir tot el rang del grup al costat del servidor. Aquest permís és una reclamació d'adreça d'origen, així que un client compromès o mal configurat pot presentar qualsevol adreça del rang i el túnel l'acceptarà. Assigneu una /32 per parell per a la seva pròpia adreça interna. Establiu els rangs de grup només als clients, on descriuen quines destinacions pot assolir aquest client en lloc de quins orígens pot utilitzar.

Llavors el tallafoc compara una adreça d'origen en què pot confiar. Una regla escrita per al rang del grup continua essent una agrupació útil, i només esdevé significativa quan cap parell concret no pot reclamar una adreça que pertany a un altre membre.

Escriviu la política de reenviament que separa els grups

El trànsit interessant aquí entra i surt per la mateixa interfície de túnel, així que travessa el camí de reenviament i no el camí d'entrada de l'equip. Les regles pertanyen a la cadena de reenviament existent del gestor de tallafoc que sigui propietari de l'equip, i són fragments i no un conjunt de regles complet.

iifname "wg0" oifname "wg0" ip saddr 10.66.10.0/24 ip daddr 10.66.10.0/24 accept
iifname "wg0" oifname "wg0" ip saddr 10.66.20.0/24 ip daddr 10.66.20.0/24 accept
iifname "wg0" oifname "wg0" drop

Les dues primeres regles permeten el trànsit dins de cada grup. L'última bloqueja tota la resta que travessa aquella interfície, i això és el que produeix l'aïllament entre els grups. Afegiu regles explícites per a l'altra família d'adreces si les necessiteu, perquè un descart escrit per a IPv4 no autoritza ni descriu el comportament d'IPv6.

L'ordre decideix si la política s'aplica

L'ordre de les regles importa més que el fragment mateix. Una regla genèrica que accepta connexions establertes, col·locada abans d'aquestes entrades, deixa continuar un flux antic entre grups, així que l'aïllament només s'aplica a les connexions noves. Decidiu quin d'aquests dos resultats voleu abans de recarregar.

Un veredicte d'acceptació tampoc no és sempre definitiu entre cadenes al mateix ganxo. Si una altra cadena base s'executa després, la política efectiva és la combinació, així que mireu els comptadors i no el fitxer que heu editat. Els comptadors són l'evidència més barata disponible. Una regla sense cap recompte de paquets no coincideix, i una regla que coincideix mentre una cadena posterior accepta us diu que el descart és al lloc equivocat.

Proveu la matriu, no el nombre de fitxers

Construïu una matriu petita de resultats esperats i comproveu cada cel·la. Del grup A al grup A hauria de funcionar, del grup B al grup B hauria de funcionar, i d'A a B no hauria de funcionar, en tots dos sentits i per a totes dues famílies d'adreces si les admeteu.

nft list ruleset
wg show wg0 allowed-ips
ping -c 2 10.66.10.5
conntrack -L -s 10.66.20.7 2>/dev/null | head

Les dues primeres mostren què està configurat. El ping des d'un membre del grup equivocat mostra què passa realment. El llistat de conntrack mostra si encara s'accepta un flux més antic, i és així com un canvi d'aïllament falla silenciosament a l'hora d'aplicar-se.

Els serveis d'equip al concentrador i l'accés a una LAN al darrere són camins separats amb política separada. Anoteu quins d'ells cobreix la matriu, perquè una prova que només comprova trànsit entre parells no diu res sobre cap dels dos.

Articles relacionats