En VPN-varning som utlöses för ett nytt land känns avgörande, och det är den sällan. Autentiseringen säger att ett försök accepterades; sessionen säger vilken anslutning som bar det; resursposterna säger vad som hände inuti den anslutningen. Var och en svarar på en annan fråga. En regel som slår ihop alla tre ger trettio ärenden på måndagen och missar det verkliga fallet på fredagen.

En utländsk adress är en fråga, inte ett svar

Resor, mobiloperatörer som går ut i ett annat land, en företagswebbproxy och en omfördelad carrier-grade NAT-pool flyttar alla den skenbara källan utan att flytta angriparen. Inloggningsposten speglar var anslutningen kom in i nätverket, inte vem som höll enheten.

Det omvända felet är värre eftersom det är tyst. Ett stulet lösenord som används från användarens egen stad ger en inloggning som stämmer med varje tidigare inloggning i geografikontrollen.

Att behandla geografi som domen har en mätbar kostnad. Resande bärbara datorer skapar ett jämnt flöde av granskningar, granskarna lär sig att stänga dem utan att läsa, och vanan håller tills ett verkligt fall landar i samma kö.

Tre posttyper svarar på tre olika frågor

Börja med vad de utrullade produkterna faktiskt sänder ut, inte med vad en produktbroschyr antyder att de skulle kunna. Autentiseringsbeslutet namnger den påstådda identiteten, metoden och resultatet. Sessionens livscykel namnger anslutningen, gatewayen och den tilldelade adressen, från start till stopp.

RecordQuestion it answersWhat it cannot prove
Authentication decisionWhich identity was accepted or rejected, by which method, at what timeThat the person operating the device was the account owner
Session lifecycleWhich connection, gateway and assigned address were active, and for how longWhat the session did with that access
Resource eventWhich read, write or denied operation a service observedWhich human behind the session triggered it
Policy changeWhether an administrator altered the rule that governs the accessWhether the change was reviewed or intended

En tom cell är en lucka i insamlingen, inte en frikännande dom. Om resurshändelser aldrig kommer betyder avsaknaden av en misstänkt läsning att pipeline inte har något att rapportera, och en tyst instrumentpanel beskriver pipeline snarare än nätverket. Skriv ned vilka poster utrullningen faktiskt producerar innan du lovar en regel som beror på dem, och namnge ägaren till varje saknat flöde.

Redovisningsdetaljerna är där sessioner blir kontrollerbara. RADIUS-redovisning enligt RFC 2866 bär start-, stopp- och mellanliggande uppdateringar knutna till en sessionsidentifierare, så en session med en start och ingen stopp är en lucka du kan namnge i stället för ett mysterium.

Knyt ihop på sessionen, inte på användarnamnet

Ett konto har legitimt flera sessioner samtidigt: en bärbar dator, en telefon, en laboratoriemaskin som lämnats ansluten över natten. Att knyta varje händelse för det användarnamnet smälter tre enheter till en historia och läser sedan kombinationen som kompromettering. Tilldelade adresser återanvänds också, så en sammankoppling som fortsätter att matcha en adress efter att sessionen tagit slut drar in förra månadens enhet i dagens incident. Behåll sessionsnyckeln bredvid adressen och begränsa matchningen till det tidsfönster som sessionen faktiskt täckte.

Där översättning tar bort den ursprungliga källan innan en tjänst ser den, använd den identitet som överlever vid den gränsen, till exempel ett ömsesidigt TLS-subjekt eller ett påstående om enkel inloggning. Att hitta på en en-till-en-mappning mellan en adress och en person är samma misstag med extra steg.

En varning utan ägare är en instrumentpanel

Varje regel behöver ett villkor, de godartade förklaringar som framkallar den, bevisen som ska hämtas och personen som agerar. En upprepad avvisad administrativ åtgärd, en skur av misslyckade lösenord och en tyst insamlare är tre olika incidenter med tre olika klockor.

Avisering är inte inneslutning, och en distributionslista begränsar ingenting. Att ändra en levande session kräver komponenten som kan göra det, antingen gatewayen som släpper anslutningen eller identitetsleverantören som återkallar sessionen. Föråldrade flöden och saknade stopposter hör också hemma i regeltexten, eftersom en insamlare som inte skickat något på ett dygn ser precis ut som ett tyst nätverk från instrumentpanelen. Skillnaden syns bara i själva pipeline.

Kontrollera insamlingsvägen innan du tror på en tyst vecka

Bevisa pipeline från början till slut innan du justerar en enda regel. Kommandona nedan bekräftar att lyssnarna för autentisering och redovisning är uppe, att en testuppgift avvisas av rätt skäl och att sessionshändelser fortfarande kommer in:

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 från testet bevisar att begäran nådde servern och att den delade hemligheten stämde, och det är den delen folk hoppar över. En timeout pekar i stället på hemligheten, lyssnaren eller ett filter framför den, och varje varning nedanför är overifierbar tills det är åtgärdat.

Klocktillståndet spelar roll eftersom korrelationsfönster förutsätter enighet. En gateway som avviker med minuter gör en i övrigt ren sessionssammankoppling omöjlig, och granskarna kompenserar genom att vidga fönstret tills sammankopplingen slutar skilja. Kontrollera avvikelsen innan du redigerar regeln.

Kör sedan en regel genom ett ofarligt test: generera en inloggning från en oväntad adress, bekräfta att varningen utlöses, bekräfta att den som svarar kan hämta sessionen och dess resurshändelser, och bekräfta att ärendet bär sessionsidentifieraren. En regel som ger en sammanhängande historia går igenom. En regel som ger en hög loggrader är fortfarande en instrumentpanel. Skriv resultatet vid regeln så att nästa granskning börjar med bevis i stället för intuition.

Relaterade artiklar