VPN-innloggingsvarsler er ikke inntrengingsvarsler: følg økten
En uvanlig innlogging er et grunnlag for gjennomgang, ikke en dom. Knytt autentiseringsposten til en økt og deretter til det økten rørte ved, før du kaller det inntrenging.
Et VPN-varsel som utløses på et nytt land virker avgjørende, og det er det sjelden. Autentisering sier at et forsøk ble godtatt; økten sier hvilken tilkobling som bar det; ressursposter sier hva som skjedde inne i den tilkoblingen. Hver svarer på et ulikt spørsmål. En regel som slår alle tre sammen, gir tretti saker på mandag og overser den virkelige saken på fredag.
En utenlandsk adresse er et spørsmål, ikke et svar
Reiser, mobiloperatører som går ut i et annet land, en bedriftswebproxy og en omfordelt carrier-grade NAT-pool flytter alle den tilsynelatende kilden uten å flytte angriperen. Innloggingsposten gjenspeiler hvor tilkoblingen kom inn i nettverket, ikke hvem som holdt enheten.
Den motsatte feilen er verre fordi den er stille. Et stjålet passord brukt fra brukerens egen by gir en innlogging som samsvarer med hver tidligere innlogging i geografikontrollen.
Å behandle geografi som dommen har en målbar kostnad. Reisende bærbare maskiner skaper en jevn strøm av gjennomganger, gjennomgåerne lærer å lukke dem uten å lese, og vanen holder til en virkelig sak lander i samme kø.
Tre posttyper svarer på tre ulike spørsmål
Start med det de utrullede produktene faktisk sender ut, ikke med det en produktbrosjyre antyder at de kan sende ut. Autentiseringsbeslutningen navngir den påståtte identiteten, metoden og resultatet. Øktens livssyklus navngir tilkoblingen, gatewayen og den tildelte adressen, fra start til stopp.
| Record | Question it answers | What it cannot prove |
|---|---|---|
| Authentication decision | Which identity was accepted or rejected, by which method, at what time | That the person operating the device was the account owner |
| Session lifecycle | Which connection, gateway and assigned address were active, and for how long | What the session did with that access |
| Resource event | Which read, write or denied operation a service observed | Which human behind the session triggered it |
| Policy change | Whether an administrator altered the rule that governs the access | Whether the change was reviewed or intended |
En tom celle er et hull i innsamlingen, ikke en frifinnelse. Hvis ressursshendelser aldri kommer, betyr fraværet av en mistenkelig lesing at pipelinen ikke har noe å rapportere, og et stille dashbord beskriver pipelinen snarere enn nettverket. Skriv ned hvilke poster utrullingen faktisk produserer før du lover en regel som avhenger av dem, og navngi eieren av hver manglende feed.
Regnskapsdetaljene er der økter blir kontrollerbare. RADIUS-regnskap som beskrevet i RFC 2866 bærer start-, stopp- og mellomliggende oppdateringer knyttet til en øktidentifikator, så en økt med en start og ingen stopp er et hull du kan navngi i stedet for et mysterium.
Koble sammen på økten, ikke på brukernavnet
Én konto har legitimt flere økter samtidig: en bærbar, en telefon, en laboratoriemaskin som er latt tilkoblet over natten. Å knytte hver hendelse for det brukernavnet smelter tre enheter til én historie og leser deretter kombinasjonen som kompromittering. Tildelte adresser resirkuleres også, så en sammenkobling som fortsatt samsvarer med en adresse etter at økten er over, drar forrige måneds enhet inn i dagens hendelse. Behold øktnøkkelen ved siden av adressen, og begrens samsvaret til tidsvinduet økten faktisk dekket.
Der oversettelse fjerner den opprinnelige kilden før en tjeneste ser den, bruk identiteten som overlever ved den grensen, for eksempel et gjensidig TLS-subjekt eller en enkeltinnloggingspåstand. Å finne opp en en-til-en-kobling mellom en adresse og en person er den samme feilen med ekstra trinn.
Et varsel uten eier er et dashbord
Hver regel trenger en betingelse, de godartede forklaringene som frembringer den, bevisene som skal hentes, og personen som handler. En gjentatt avvist administrativ operasjon, en byge av mislykkede passord og en taus innsamler er tre ulike hendelser med tre ulike klokker.
Varsling er ikke inndemming, og en distribusjonsliste begrenser ingenting. Å endre en levende økt krever komponenten som kan gjøre det, enten det er gatewayen som dropper tilkoblingen, eller identitetsleverandøren som tilbakekaller økten. Utdaterte feeds og manglende stopp-poster hører også hjemme i regelteksten, fordi en innsamler som ikke har sendt noe på et døgn, ser nøyaktig ut som et stille nettverk fra dashbordet. Forskjellen er bare synlig i pipelinen selv.
Kontroller innsamlingsveien før du tror på en stille uke
Bevis pipelinen ende til ende før du justerer en eneste regel. Kommandoene nedenfor bekrefter at lytterne for autentisering og regnskap er oppe, at en testlegitimasjon avvises av riktig grunn, og at økthendelser fortsatt kommer inn:
ss -uanp | grep -E ':(1812|1813)\b' radtest alice 'not-the-password' 127.0.0.1 0 testing123 journalctl -u openvpn-server@server --since '-30 min' | grep -c 'Peer Connection Initiated' timedatectl | grep -E 'System clock|synchronized'
En Access-Reject fra testen beviser at forespørselen nådde serveren og at den delte hemmeligheten stemte, og det er den delen folk hopper over. En timeout peker i stedet på hemmeligheten, lytteren eller et filter foran den, og hvert varsel nedenfor er uverifiserbart til det er rettet.
Klokketilstanden betyr noe fordi korrelasjonsvinduer forutsetter enighet. En gateway som avviker med minutter gjør en ellers ren øktsammenkobling umulig, og gjennomgåerne kompenserer ved å utvide vinduet til sammenkoblingen slutter å skille. Kontroller avviket før du redigerer regelen.
Kjør deretter én regel gjennom en ufarlig test: generer en innlogging fra en uventet adresse, bekreft at varselet utløses, bekreft at den som svarer kan hente økten og ressursshendelsene dens, og bekreft at saken bærer øktidentifikatoren. En regel som gir en sammenhengende historie, består. En regel som gir en haug med logglinjer, er fortsatt et dashbord. Skriv resultatet ved regelen slik at neste gjennomgang starter med bevis i stedet for intuisjon.