Börja med matrisen, inte med brandväggssyntaxen. En tabell med roller på ena sidan och tjänster på den andra kan granskas av en applikationsägare, diskuteras av en säkerhetsägare och implementeras av den som har gatewayen. Den granskningen är billigare än att felsöka regler som ingen har kommit överens om.

En timmes skrivande sparar senare en veckas regelarkeologi. Designen handlar om vem som når vilken tjänst, och det är den delen som överlever omnumrering.

Steg 1: namnge rollerna före näten

Börja med människorna, inte med switchen. Skriv ned varje grupp som ansluter på distans och den enda meningen som beskriver vad gruppen gör, till exempel lagerpersonal som läser lagernivåer eller en entreprenör som underhåller en integration. Om två grupper skulle få samma åtkomst är de en roll för detta ändamål.

Stanna här om en roll bara finns på grund av ett organisationsschema. En roll utan eget tjänstebehov blir en rad identiska celler, och identiska rader lockar någon att senare ge ett helt subnät för enkelhetens skull. Dela efter vad människor gör, inte efter vem som signerar deras utgifter. Sex roller är oftast för många för ett litet kontor och tre är ofta rätt.

Steg 2: gör varje cell till ett tjänstepåstående

En cell som säger ”Applikationer” går inte att testa. En cell som säger ”HTTPS till ERP-värden på 443, från personalpoolen” går. Ersätt varje nätverksnamn med ett mål, ett protokoll och en port och lägg sedan till det beroende som tjänsten inte kan fungera utan, till exempel den interna resolvern eller identitetsleverantören.

CheckPasses whenStop if
Destination namedHost and port appear in the cellCell names a VLAN or a subnet
Direction statedInitiator and responder are both clearCell implies two-way access
Dependency listedDNS or identity path is explicitWhole infrastructure range is granted
Negative case writtenAt least one denied pair is recordedOnly allow rules exist

Riktningskolumnen fångar de dyraste misstagen. Tillstånd för personalen att öppna en applikation innebär inte tillstånd för applikationsservrar att öppna anslutningar tillbaka till personalens bärbara datorer, och en tillståndsbaserad regel som tillåter den första riktningen läses ofta som tillstånd för den andra.

Steg 3: bestäm var identitet blir policy

Någon måste göra en autentiserad session till en roll som gatewayen kan genomdriva. Stödda alternativ är gruppolicy från autentiseringsbackend, betrodda sessionsattribut eller separata adresspooler per roll. Alla tre fungerar; en etikett som klienten skickar fungerar inte. Välj den mekanism som din gateway dokumenterar, inte den som ett foruminlägg beskriver.

Att tilldela en adress som bara ser ut att höra till ett VLAN är samma icke-svar i en annan kostym. Netgates guide till OpenVPN-brandväggsregler gör åtskillnaden tydlig: att låta tunneln komma upp är ett annat beslut än att låta trafik gå igenom den.

Skriv ned vilken mekanism du valde och var den är konfigurerad. När en roll ändras är den anteckningen skillnaden mellan en ändring och en jakt genom tre gränssnitt. Den berättar också för en revisor var de ska titta först.

Steg 4: håll koll på källadressen som målet ser

Vidarebefordringspolicyn måste matcha den verkliga källan vid gränsen. Om gatewayen översätter VPN-klienter till sin egen adress, ser varje nedströms brandvägg en enda källa och förlorar förmågan att besluta per roll. Om den bevarar klientadressen måste returvägen finnas för den poolen.

Testa båda riktningarna innan du skriver de slutliga reglerna och notera sedan den observerade källan vid varje cell. Kör samma kontroll från två olika roller och jämför resultatet. Om båda visar gatewayens adress är rolldistinktionen redan förlorad. En matris som antar bevarade adresser medan gatewayen gör källöversättning fallerar vid den första nedströms ACL:en.

Steg 5: testa varje cell innan du levererar

Gör varje tillåten cell till en representativ operation och varje nekad cell till ett negativt fall. Kör båda från en klient i den faktiska rollen, inte från gateway-konsolen, eftersom konsolen kringgår den väg du testar.

# allowed: staff role reaches the ERP endpoint
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://erp.internal.example/health

# denied: the same role must not reach a management host
nc -vz -w 3 10.30.5.11 22

# observed source address at the destination
sudo tcpdump -ni any 'tcp port 443 and host 10.30.20.15'

Ett negativt fall som ansluter är ett fynd, inte ett sammanträffande, och det hör hemma i matrisen som en misslyckad cell tills regeln är rättad. Håll testkommandona bredvid tabellen så att nästa granskare kör dem igen i stället för att bygga upp resonemanget på nytt.

Den färdiga tabellen lever längre än gatewayen den skrevs för. Regler ändras med firmware och leverantör, medan raden som säger att en entreprenör når en projekttjänst förblir sann till dess att arbetet ändras.

Relaterade artiklar