Enllaços temporals de permisos d’IP: què admet realment la concessió
Un enllaç que obre un port del tallafoc admet una adreça, no una persona. Definiu l’abast, exigiu una confirmació deliberada i proveu la repetició, la caducitat i IPv6.
Convertir un clic en una regla temporal del tallafoc és còmode, i també construeix un sistema d’autorització que decideix qui pot arribar a un servei. El que emet és una adreça, no una persona, i aquesta diferència importa en el moment que dues persones comparteixen un NAT. Limiteu l’abast de la concessió, confirmeu-la de manera deliberada i feu que la caducitat signifiqui alguna cosa abans que es construeixi l’enllaç. La decisió que teniu davant és on posar la frontera, no si n’hi hauria d’haver una.
Decidiu quina pregunta respon la concessió
Comenceu pel requisit. Si una persona concreta ha d’arribar al servei i l’aplicació ja autentica aquesta persona, una passarel·la autenticada manté la identitat al punt d’aplicació i no necessita cap admissió per adreça. Si l’objectiu és un agent de compilació, un port de salt administratiu o un dispositiu que no pot participar en l’inici de sessió d’usuaris, una concessió d’adreça amb abast pot ser l’únic control pràctic disponible.
Triar l’admissió per adreça per a una aplicació orientada a usuaris trasllada el problema real d’autorització a un altre lloc, i llavors el portal hereta la culpa d’una escletxa que mai no ha tancat.
Limiteu la petició al servidor
El navegador no ha de triar la destinació, el port ni el prefix. El portal resol el servei a partir dels seus propis registres i comprova el dret amb una prova al costat del servidor, que és el mateix principi que la guia d’autorització de l’OWASP aplica a cada petició. La derivació de l’adreça també pertany a la frontera protegida: quan un proxy invers informa de l’adreça del client, accepteu només la cadena de proxies configurada i el seu tractament documentat de les capçaleres. Una capçalera de reenviament proporcionada per un visitant és una afirmació sobre la procedència, no una prova d’aquesta.
Després comproveu que el portal i el servei observen la mateixa font. El túnel dividit, un salt de proxy i IPv4 enfront d’IPv6 poden donar a dues destinacions dues adreces diferents, de manera que una concessió activada per un camí pot no cobrir la petició que segueix.
Mostreu la concessió abans d’instal·lar-la
Obrir un enllaç hauria de mostrar el servei proposat, la font observada i la durada, i encara no canviar res. Aquest sol pas converteix l’enllaç enviat per correu d’una acció en una proposta, i impedeix que un bot de previsualització o un escàner de correu concedeixi accés només pel fet d’obtenir-lo.
La confirmació hauria de ser una petició que canvia l’estat amb les defenses habituals contra llocs creuats i d’origen. El testimoni hauria de ser d’un sol ús i consumir-se atòmicament en el moment que s’instal·la la regla, i el registre hauria de capturar el propietari, el servei, l’adreça, l’identificador de la concessió i la caducitat sense enregistrar mai el testimoni en cru.
El lliurament del testimoni mereix la mateixa cura que la regla mateixa. Un enllaç caducat o ja consumit que encara produeix una regla és una segona porta equipada amb la mateixa clau.
L’adreça es comparteix fins i tot mentre la concessió és viva
Un NAT d’oficina, un NAT d’operador i una sortida de VPN compartida posen cadascun diverses persones darrere d’una adreça. Admetre aquesta adreça admet tothom qui hi ha darrere pel que fa a la propera frontera del servei, sense demostrar res sobre qui té el compte que el servei espera.
Treure la regla tampoc no és una desconnexió universal. Les connexions establertes, els testimonis d’aplicació en memòria cau i les sessions de llarga durada poden sobreviure a la regla minuts o molt més, així que la vida útil que trieu hauria de reflectir què fa el servei després de l’admissió i no només quant de temps existeix la regla.
Proveu quatre casos i les dues famílies d’adreces
Una concessió val tant com els quatre casos que supera: una petició nova permesa, un sol·licitant no aprovat, una repetició del mateix enllaç i la mateixa petició després de la caducitat.
Després proveu cada família per separat, perquè l’adreça d’origen que observa el servei pot diferir entre elles.
dig +short A service.example.com
dig +short AAAA service.example.com
curl -4 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
curl -6 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
El resultat útil és una decisió d’admissió temporal i auditable que se situa sota l’autorització normal d’usuari, en lloc d’una obertura permanent que porti el nom de qui va clicar primer.