Začněte maticí, ne syntaxí firewallu. Tabulku s rolemi na jedné straně a službami na druhé může zkontrolovat vlastník aplikace, rozporovat vlastník bezpečnosti a implementovat ten, kdo drží bránu. Taková revize je levnější než ladění pravidel, na kterých se nikdo nedohodl.

Hodina psaní ušetří později týden archeologie pravidel. Návrh mluví o tom, kdo se dostane k jaké službě, a to je část, která přežije přečíslování.

Krok 1: pojmenujte role dřív než sítě

Začněte u lidí, ne u přepínače. Zapište každou skupinu, která se připojuje vzdáleně, a jednu větu popisující, co ta skupina dělá, třeba skladníky čtoucí stav zásob nebo dodavatele spravujícího jednu integraci. Pokud by dvě skupiny dostaly stejný přístup, jsou pro tento účel jednou rolí.

Zastavte se tady, pokud role existuje jen kvůli organizačnímu schématu. Role bez vlastní potřeby služby se stane řadou identických buněk a identické řady někoho později přivedou k tomu, aby kvůli pohodlí přidělil celou podsíť. Rozdělujte podle toho, co lidé dělají, ne podle toho, kdo podepisuje jejich výdaje. Šest rolí je pro malou kancelář obvykle moc a tři bývají správně.

Krok 2: proměňte každou buňku ve výrok o službě

Buňka s textem „Aplikace“ se nedá ověřit. Buňka s textem „HTTPS k hostiteli ERP na 443, z poolu zaměstnanců“ ověřit jde. Nahraďte každý název sítě cílem, protokolem a portem a pak přidejte závislost, bez které služba nefunguje, třeba interní překladač nebo poskytovatele identity.

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

Sloupec směru zachytí nejdražší chyby. Povolení, aby zaměstnanci otevřeli aplikaci, neznamená povolení, aby aplikační servery otevíraly spojení zpět k notebookům zaměstnanců, a stavové pravidlo, které povoluje první směr, se často čte jako povolení druhého.

Krok 3: rozhodněte, kde se identita stává politikou

Někdo musí proměnit ověřenou relaci v roli, kterou brána dokáže vynutit. Podporované možnosti zahrnují skupinovou politiku dodanou autentizačním backendem, důvěryhodné atributy relace nebo samostatné pooly adres pro každou roli. Všechny tři fungují; štítek poslaný klientem ne. Vyberte mechanismus, který vaše brána dokumentuje, ne ten, který popisuje příspěvek na fóru.

Přidělení adresy, která jen vypadá, že patří do VLAN, je stejná neodpověď v jiném kostýmu. Průvodce Netgate pravidly firewallu OpenVPN dělá to oddělení jasným: povolit, aby tunel vznikl, je jiné rozhodnutí než povolit, aby jím procházel provoz.

Zapište, který mechanismus jste zvolili a kde je nakonfigurovaný. Když se role změní, tento záznam je rozdíl mezi jednou úpravou a honbou přes tři rozhraní. Také auditorovi říká, kam se podívat nejdřív.

Krok 4: sledujte zdrojovou adresu, kterou vidí cíl

Politika předávání musí na hranici odpovídat skutečnému zdroji. Pokud brána překládá klienty VPN na svou vlastní adresu, každý níže položený firewall vidí jediný zdroj a ztrácí schopnost rozhodovat podle rolí. Pokud adresu klienta zachovává, musí pro tento pool existovat zpáteční cesta.

Otestujte oba směry, než napíšete konečná pravidla, a pak pozorovaný zdroj poznamenejte ke každé buňce. Spusťte stejnou kontrolu ze dvou různých rolí a porovnejte výsledek. Pokud obě ukazují adresu brány, rozlišení rolí se už ztratilo. Matice, která předpokládá zachované adresy, zatímco brána provádí překlad zdroje, selže na prvním níže položeném ACL.

Krok 5: otestujte každou buňku před nasazením

Proměňte každou povolenou buňku v jednu reprezentativní operaci a každou zakázanou buňku v negativní případ. Spusťte oba z klienta ve skutečné roli, ne z konzole brány, protože konzole obchází cestu, kterou testujete.

# 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'

Negativní případ, který se spojí, je zjištění, ne náhoda, a patří do matice jako neúspěšná buňka, dokud se pravidlo neopraví. Nechte testovací příkazy vedle tabulky, aby je příští recenzent znovu spustil místo toho, aby znovu stavěl úvahu.

Hotová tabulka přežije bránu, pro kterou byla napsaná. Pravidla se mění s firmwarem a dodavatelem, zatímco řádek, který říká, že dodavatel dosáhne na jednu projektovou službu, platí, dokud se ta práce nezmění.

Související články