Sāciet ar matricu, nevis ar ugunsmūra sintaksi. Tabulu, kurā lomas ir vienā pusē un pakalpojumi otrā, var pārskatīt lietojumprogrammas īpašnieks, apspriest drošības īpašnieks un ieviest tas, kuram ir vārteja. Šī pārskatīšana ir lētāka par tādu noteikumu atkļūdošanu, par kuriem neviens nav vienojies.

Viena stunda rakstīšanas vēlāk ietaupa nedēļu noteikumu arheoloģijas. Dizains runā par to, kas sasniedz kuru pakalpojumu, un tieši šī daļa pārdzīvo pārnumurēšanu.

1. solis: nosauciet lomas pirms tīkliem

Sāciet ar cilvēkiem, nevis ar komutatoru. Pierakstiet katru grupu, kas pieslēdzas attālināti, un vienu teikumu, kas apraksta, ko šī grupa dara, piemēram, noliktavas darbinieki, kas nolasa krājumu līmeņus, vai darbuzņēmējs, kas uztur vienu integrāciju. Ja divas grupas saņemtu identisku piekļuvi, šim nolūkam tās ir viena loma.

Apstājieties šeit, ja loma pastāv tikai organizācijas shēmas dēļ. Loma bez savas atsevišķas pakalpojuma vajadzības kļūst par identisku šūnu rindu, un identiskas rindas mudina kādu vēlāk ērtības dēļ piešķirt visu apakštīklu. Sadaliet pēc tā, ko cilvēki dara, nevis pēc tā, kas paraksta viņu izdevumus. Mazai birojam sešas lomas parasti ir par daudz, un trīs bieži ir pareizi.

2. solis: pārvērtiet katru šūnu pakalpojuma apgalvojumā

Šūna ar uzrakstu „Lietojumprogrammas“ nav pārbaudāma. Šūna ar uzrakstu „HTTPS uz ERP resursdatoru portā 443, no darbinieku pūla“ ir pārbaudāma. Aizstājiet katru tīkla nosaukumu ar galamērķi, protokolu un portu, pēc tam pievienojiet atkarību, bez kuras pakalpojums nedarbojas, piemēram, iekšējo atrisinātāju vai identitātes nodrošinātāju.

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

Virziena kolonna noķer visdārgākās kļūdas. Atļauja darbiniekiem atvērt lietojumprogrammu nenozīmē atļauju lietojumprogrammu serveriem atvērt savienojumus atpakaļ uz darbinieku portatīvajiem datoriem, un stāvokļa noteikums, kas atļauj pirmo virzienu, bieži tiek lasīts tā, it kā tas atļautu otro.

3. solis: izlemiet, kur identitāte kļūst par politiku

Kādam autentificēta sesija ir jāpārvērš lomā, ko vārteja var piemērot. Atbalstītās iespējas ietver grupu politiku, ko piegādā autentifikācijas aizmugure, uzticamus sesijas atribūtus vai atsevišķus adrešu pūlus katrai lomai. Visas trīs darbojas; klienta sūtīta etiķete nedarbojas. Izvēlieties mehānismu, ko dokumentē jūsu vārteja, nevis to, ko apraksta foruma ieraksts.

Adreses piešķiršana, kas tikai izskatās, it kā piederētu VLAN, ir tā pati ne-atbilde citā tērpā. Netgate rokasgrāmata par OpenVPN ugunsmūra noteikumiem padara šķīrumu skaidru: ļaut tunelim pacelties ir cits lēmums nekā ļaut trafikam iet tam cauri.

Pierakstiet, kuru mehānismu izvēlējāties un kur tas konfigurēts. Kad loma mainās, šī piezīme ir starpība starp vienu labojumu un meklēšanu trijās saskarnēs. Tā arī pasaka auditoram, kur skatīties vispirms.

4. solis: vērojiet avota adresi, ko redz galamērķis

Pārsūtīšanas politikai ir jāatbilst reālajam avotam uz robežas. Ja vārteja pārtulko VPN klientus uz savu adresi, katra zemākā ugunsmūra redz vienu avotu un zaudē spēju pieņemt lēmumus pēc lomas. Ja tā saglabā klienta adresi, atgriešanās ceļam ir jāpastāv šim pūlam.

Pārbaudiet abus virzienus pirms galīgo noteikumu rakstīšanas, pēc tam pierakstiet novēroto avotu blakus katrai šūnai. Palaidiet to pašu pārbaudi no divām dažādām lomām un salīdziniet rezultātu. Ja abas rāda vārtejas adresi, lomu atšķirība jau ir zaudēta. Matrica, kas pieņem saglabātas adreses, kamēr vārteja veic avota tulkošanu, neizdodas pie pirmā zemākā ACL.

5. solis: pārbaudiet katru šūnu pirms izlaišanas

Pārvērtiet katru atļauto šūnu vienā reprezentatīvā darbībā un katru aizliegto šūnu negatīvā gadījumā. Palaidiet abus no klienta reālajā lomā, nevis no vārtejas konsoles, jo konsole apiet ceļu, kuru jūs pārbaudāt.

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

Negatīvs gadījums, kas pieslēdzas, ir atradums, nevis nejaušība, un tā vieta matricā ir neizdevusies šūna, līdz noteikums tiek izlabots. Turiet testa komandas blakus tabulai, lai nākamais pārskatītājs tās palaistu no jauna, nevis no jauna uzbūvētu pamatojumu.

Pabeigtā tabula pārdzīvo vārteju, kurai tā tika rakstīta. Noteikumi mainās līdz ar programmaparatūru un piegādātāju, bet rinda, kas saka, ka darbuzņēmējs sasniedz vienu projekta pakalpojumu, paliek patiesa, līdz šis darbs mainās.

Saistītie raksti