Wat een VPN-log wel en niet kan bewijzen over browsen
Sessie-, resolver-, flow- en applicatierecords bewijzen verschillende gebeurtenissen. Kies de auditvraag en de identiteitskoppeling voordat je het browsergeschiedenis noemt.
Voordat je een logverzamelaar kiest, bepaal je welke gebeurtenis de audit moet vaststellen. Vragen welke VPN-sessie contact had met een bestemmingsadres is een andere vraag dan vragen welke persoon een bepaalde pagina opende. Beide vragen andere records, andere koppelingen en andere niveaus van vertrouwen. Een verbindingslog van OpenVPN beantwoordt de eerste en kan de tweede niet beantwoorden.
Benoem de gebeurtenis voordat je een verzamelaar kiest
Een sessierecord toont een geaccepteerde identiteit, een begin- en eindtijd en een adres dat de server volgens zijn eigen beleid toekende. Een resolverlog toont dat een naam bij die resolver werd opgevraagd. Een flowrecord toont adressen, poorten, protocol en tijd, en een applicatielog toont de transactie die die applicatie daadwerkelijk afhandelde. Geen van de vier vervangt een andere.
Elk ervan stelt één gebeurtenis vast en laat de andere open. De vraag eerst opschrijven weerhoudt je ervan een verhaal samen te stellen dat de gegevens niet kunnen ondersteunen.
journalctl -u [email protected] --since today | grep -i 'peer info\|assigned' cat /etc/openvpn/server/openvpn-status.log | head -20 conntrack -L -p tcp --dport 443 2>/dev/null | head -20
Het eerste commando toont sessiegebeurtenissen uit het servicejournaal. Het tweede drukt de huidige cliëntlijst met toegewezen adressen af, dat is de mapping waarvan een auditkoppeling afhangt. Het derde toont live flowstatus, alleen nuttig zolang de verbinding bestaat.
Een opzoeking is geen bezoek
Een browser lost namen speculatief op, slaat antwoorden op in de cache en hergebruikt ze zonder de bewaakte resolver opnieuw te vragen. Een naam in een resolverlog bewijst dus een opzoeking, geen bezoek. DNS over HTTPS vergroot die kloof, omdat een browser die daarvoor is ingesteld zijn vragen stuurt naar een plek waar jouw gewone logger ze nooit ziet.
Bestemmingsadressen zijn op zichzelf niet beter. Eén adres kan veel ongerelateerde sites hosten, omgekeerde DNS is een gissing en geen reconstructie, en een hostnaam die zichtbaar is tijdens een TLS-handshake is niet het aanvraagpad binnen de versleutelde sessie.
Voor exacte transacties heb je de gebeurtenisrecords van de applicatie zelf nodig of een proxyontwerp dat expliciet voor logging wordt ondersteund. Een CONNECT-tunnel geeft een proxy de bestemming en het volume, niet de paginapaden erin. Administratieve toegang tot het netwerk is geen licentie om het vertrouwensmodel van de applicatie stil te vervangen.
Koppel identiteit en tijd voordat je een persoon noemt
Een flowrecord met een intern bronadres betekent niets totdat dat adres op hetzelfde moment aan een sessie is gekoppeld. Adressen worden hergebruikt, en hetzelfde adres kan een uur eerder bij een andere sessie hebben gehoord. Statische toewijzing is één manier om de associatie te behouden, niet de enige.
Vertaalgrenzen verzwakken de koppeling verder. Als meerdere apparaten al één bronadres deelden voordat jouw observatiepunt begon, is het beste dat je kunt identificeren de gedeelde gateway-sessie en niet één apparaat. Een certificaat of account dat meerdere mensen gebruiken heeft hetzelfde effect.
Leg tijdzones, klokbronnen, observatiepunten en elke vertaalstap vast. Ontbrekende records kunnen betekenen dat een flowrecord is verlopen, dat een sensor is omzeild of dat een applicatielog was uitgeschakeld. Afwezigheid is geen bewijs dat er niets is gebeurd.
Definieer daarna de minimale velden, de toegestane lezers en de bewaartermijn voor het genoemde doel. Correlatie en verkeerde toeschrijving zijn ontwerpvragen en geen nabedachte, en metadata die mensen identificeren verdient dezelfde bescherming als de identiteitsmapping waarvan ze afhangen.
Test de audit met activiteit die je beheert
Genereer toegestaan verkeer waarvan je de sessie en applicatie al kent, en controleer dan wat elk record werkelijk heeft vastgelegd. Doe een opzoeking zonder de pagina te laden, laad een pagina uit de cache en open een verbinding via een proxy, en kijk welke gebeurtenissen verschijnen.
Rapporteer de gebeurtenis die het bewijs ondersteunt en zeg wat het niet dekt. Een bescheiden record met een genoemd bereik doorstaat de beoordeling; een ambitieuze browsergeschiedenis samengesteld uit gissingen niet.