Att placera två klientgrupper på olika subnät ser ut som isolering, och är det inte. Adresser beskriver varifrån ett paket verkar komma, medan tillstånd är ett beslut som fattas av det som vidarebefordrar det. Den frågan besvaras av konfigurationen och inte av masken, så bestäm vilken komponent som vidarebefordrar peer-trafik innan du skriver någon regel.

Ett subnät är en etikett, inte en regel

Att tilldela en pool per grupp ger läsbara adresser och inget annat. En klient som accepterar en extra rutt har fått nåbarhet, och nåbarhet är inte auktorisering. Tillståndet att tala ligger i vidarebefordringsbeslutet, som kan leva i daemonen eller i kärnan beroende på hur servern är konfigurerad.

Adressägande är det som gör ett prefix användbart som gruppväljare. Varje autentiserad identitet måste mappas till en förutsägbar adress eller ett intervall, och den mappningen fallerar så snart flera enheter delar en inloggningsuppgift och en tilldelning. Lös identitet och samtidighet innan du förlitar dig på ett källprefix, för en policy som gissar vilken maskin som ringer auktoriserar fel i det sämsta ögonblicket.

Välj den väg som bär peer-trafik

När daemonen vidarebefordrar peer-paket inom sin egen process, når dessa paket aldrig värdens vidarebefordringskrok, så en kärnregel kan inte se dem. Stäng av den interna vidarebefordringen och kärnan blir vidarebefordringspunkten, där vanliga vidarebefordringsregler gäller.

# peer forwarding inside the daemon: enforce with per-group policy instead of FORWARD rules
client-to-client
# kernel forwarding path: remove the line above, then filter in the forward chain

Avlastade datakanaler och produktstyrda servrar publicerar egna genomdrivandemodeller, så bekräfta vilken du kör i stället för att anta gemenskapens beteende. Felet som är värt att undvika är en regel som ser korrekt ut i en granskning och aldrig konsulteras under körning.

Skriv matrisen innan du skriver regler

En kort matris är lättare att granska än en regeluppsättning, och det är kontraktet som implementeringen måste uppfylla: peer i samma grupp tillåtna, peer mellan grupper nekade, båda grupperna tillåtna till en namngiven delad tjänst, allt annat nekat. Skriv ned de fyra raderna innan du öppnar en brandväggsredigerare. En granskare som inte läser regelns syntax kan ändå kontrollera matrisen. Implementeringen behöver sedan bara matcha raderna.

SourceDestinationDecision
Group A addressAnother Group A addressAllow
Group A addressA Group B addressDeny
Either groupThe shared internal serviceAllow
Either groupAnything not listedDeny

Håll de tre destinationsklasserna åtskilda medan du skriver den. En tjänst på VPN-värden är lokal indata, en annan klient är peer-transit och en maskin bakom gatewayen är en annan vidarebefordringsväg. En enda generös regel kan av misstag ge alla tre, och det är så en gruppolicy blir ett platt nätverk med extra steg. Skriv klassen bredvid varje rad så att avsikten överlever nästa redigering.

Sätt reglerna där de överlever

Lägg till besluten på samma ställe där resten av brandväggen underhålls, före varje tillåtande regel som annars skulle svälja dem. Regelordningen är en del av policyn, och en korrekt regel placerad efter ett brett tillstånd genomdriver ingenting. Notera regelnumren före och efter ändringen. En policy som finns i en redigerare men inte i den körande regeluppsättningen är en plan, inte en kontroll.

Bestäm vad som händer med flöden som redan finns när policyn ändras, eftersom en session som öppnades före ändringen kan fortsätta efteråt. Om en medlem som lämnar måste förlora åtkomst omedelbart behöver regeluppsättningen ett sätt att avsluta det tillståndet i stället för att vänta på att anslutningen stängs av sig själv.

Gör reglerna beständiga genom mekanismen som äger resten av brandväggen och registrera matrisen bredvid dem. En oregistrerad policy härleds på nytt från minnet under nästa incident, vanligtvis av någon som har bråttom.

Bevisa det från båda håll

Testa nåbarhet inom samma grupp, fel mellan grupper och den delade tjänsten från en klient i varje grupp. Ett enda test från en enda klient bevisar halva matrisen, och halvan den utelämnar är oftast den felaktiga. Upprepa nekningsriktningen två gånger, eftersom en cachad session kan dölja ett genomdrivandefel. Notera vilket par du testade så att nästa person inte upprepar det.

Upprepa kontrollen på IPv6 om tunneln bär det, och behåll vanlig applikationsautentisering. Ett källprefix är inte ett konto, så att klara nätverkspolicyn betyder inte att en tjänst bör lita på den som ringer.

Relaterade artiklar