Una línia en un document de requisits, «aquesta aplicació pot fer servir la VPN i res més», demana sense soroll dos mecanismes que cap commutador no ofereix. El trànsit necessita un camí a través del túnel previst, i el trànsit que sortiria directament ha de ser rebutjat. Les eines que fan bé una d’aquestes coses i l’altra no la fan gens són freqüents, i per això una comparació que només pregunta si alguna cosa pot bloquejar respon amb confiança la meitat de la pregunta. Escriviu primer la frontera i després trieu els components que cobreixen les dues meitats.

Dos requisits amagats dins d’una sola frase

L’encaminament és la part que posa una connexió dins del túnel o del proxy. El rebuig és la part que impedeix que la mateixa connexió surti per qualsevol altra ruta. Els implementen components diferents, fallen de maneres diferents, i un producte pot ser excel·lent en un i no dir res de l’altre:

ApproachSteers trafficRefuses direct egressKnows the app identity
Per-app VPN profileYes, for the apps it namesOnly if a filter or firewall also blocksYes, within its own rules
Application proxy settingPartly, for requests that honour itNoNo
Content filterNoYesYes, if the filter is written that way
Local PF rulesetNoYes, by address and portNot reliably

Llegiu la taula com una llista de comprovació i no com un rànquing. Cap fila no omple les dues columnes centrals, i les files que les cobreixen són dos components que cooperen: un posseeix el camí i l’altre posseeix el rebuig. La columna d’identitat importa per un altre motiu, perquè una regla que no pot nomenar l’aplicació no pot aplicar una regla sobre aquesta aplicació. Sigui el que sigui que desplegueu, ha de respondre a les tres, o la frontera del document de requisits no és la frontera de la màquina.

L’encaminament sol deixa una sortida

La configuració de proxy d’aplicació és l’exemple més clar d’encaminament sense rebuig. Pot encaminar peticions d’una aplicació que respecta el proxy del sistema i no cobreix res més: un procés auxiliar, un actualitzador, un servei en segon pla o un protocol diferent poden viatjar pel seu propi camí sense llegir mai aquesta preferència. Per tant, triar un punt final SOCKS en un panell no crea una política de sortida directa prohibida per a l’aplicació. Si el requisit és sobre l’aplicació en conjunt, pregunteu quins components identifica realment la regla.

Un perfil de VPN per aplicació encamina millor que un proxy, perquè la plataforma decideix quines aplicacions entren al túnel en lloc que cada aplicació decideixi per si mateixa. I tot i així no rebutja res: el perfil proporciona un camí, i el trànsit que no hi encaixa segueix la ruta ordinària. Aquesta escletxa és exactament on un segon component guanya el seu lloc, i és la raó per la qual els productes que semblen un sol commutador solen ser dos.

El rebuig sol trenca l’aplicació

La documentació d’Apple sobre filtres de contingut descriu un veredicte de permetre o bloquejar sobre el trànsit mentre passa per la pila de xarxa. Aquest veredicte no és un túnel ni una connexió proxy, perquè decideix si alguna cosa pot continuar i no on va. Un filtre sol aplica el rebuig perfectament i deixa l’aplicació inservible, amb registres nets i cap explicació. El veredicte d’un filtre pot aturar una connexió però mai no subministra el túnel, així que aparellar-lo amb l’encaminament és la decisió de disseny i no un extra opcional.

Un conjunt de regles PF administrat localment se situa a l’altre extrem d’aquest espectre. És una decisió de suport legítima en una màquina que posseeix un administrador, i no és automàticament la base d’un producte distribuïble, perquè qui posseeix el conjunt de regles també posseeix les seves interaccions amb altres usuaris del tallafoc, la seva ruta d’actualització i la seva recuperació quan una regla és incorrecta. Afegir PF a un producte no elimina aquesta qüestió de propietat; la defineix.

El desplegament decideix si la regla encara existirà demà

Com es desplega una Network Extension a les plataformes d’Apple depèn del tipus de proveïdor, de l’empaquetatge i de la versió del sistema operatiu que tingueu al davant. Una extensió d’aplicació al macOS s’executa en un context d’usuari i acaba quan aquest usuari tanca la sessió, mentre que una extensió de sistema té un context global que no depèn de la sessió. Si la protecció ha de sobreviure a un tancament de sessió, aquesta diferència és tot el disseny i no una nota a peu de pàgina. Confirmeu la ruta de desplegament abans de prometre el comportament, perquè el mateix codi aterra de manera diferent segons quin tipus d’extensió s’envia.

La disponibilitat del codi font és una qüestió separada de l’aplicació. Llegir un repositori us diu com s’ha implementat una cosa, no què pot fer el binari instal·lat en aquesta màquina. La signatura, la instal·lació i l’autorització encara s’apliquen, i les instruccions construïdes al voltant d’una extensió de nucli obsoleta o d’un truc d’injecció de biblioteca descriuen una altra plataforma i una altra postura de risc, per bé que funcionessin en el seu moment.

Un cas d’acceptació que anomena l’aplicació

Trieu una sola acció que l’aplicació faci tota sola, anoteu l’adreça que hauria d’assolir i si aquesta adreça és IPv4 o IPv6, i repetiu després la mateixa acció en l’estat aprovat sense túnel. La segona execució ha de produir el rebuig declarat i no un reintent directe silenciós. Aquesta és la meitat que la gent deixa sense especificar, i l’única meitat que demostra que el rebuig existeix de debò. Executeu-lo primer amb el túnel disponible, perquè una diferència entre els dos resultats només pugui venir del túnel que falta.

Després recorreu les transicions que el requisit nomena: reiniciar l’aplicació, l’activació d’un procés auxiliar, la reconnexió del túnel, el canvi de xarxa de la màquina i un tancament de sessió o reinici on correspongui. Una pàgina d’IP pública del navegador no és una prova dels sòcols d’una altra aplicació, així que no pot substituir aquesta. On cap desplegament suportat no cobreix el comportament real de l’aplicació, un entorn aïllat autoritzat amb una passarel·la explícita i sense sortida alternativa és una decisió de contenció amb el seu propi cost de gestió, no un substitut d’una casella de verificació.

Acabeu escrivint quatre entrades: quins components formen l’aplicació, qui posseeix l’encaminament, qui posseeix el rebuig i els estats en què la regla encara ha de valer. Un repositori públic pot ser un criteri de selecció, però no és una de les quatre, i aquestes entrades són les que decideixen si una eina determinada compleix el requisit de xarxa.

Articles relacionats