Komencu per la matrico, ne per la fajroŝirmila sintakso. Tabelon kun roloj unuflanke kaj servoj aliflanke povas revizii posedanto de aplikaĵo, diskuti posedanto pri sekureco kaj realigi iu ajn, kiu tenas la enirejon. Tiu revizio estas pli malmultekosta ol sencimigi regulojn, pri kiuj neniu interkonsentis.

Unu horo da skribado ŝparas poste unu semajnon da regula arkeologio. La dezajno parolas pri tio, kiu atingas kiun servon, kaj tio estas la parto, kiu postvivas renumeradon.

Paŝo 1: nomu la rolojn antaŭ la retoj

Komencu per la homoj, ne per la ŝaltilo. Skribu ĉiun grupon, kiu konektiĝas malproksime, kaj la unu solan frazon, kiu priskribas, kion tiu grupo faras, ekzemple stokaj laborantoj, kiuj legas stoknivelojn, aŭ kontraktisto, kiu prizorgas unu integriĝon. Se du grupoj ricevus identan aliron, ili estas unu rolo por tiu ĉi celo.

Haltu ĉi tie, se rolo ekzistas nur pro organiza diagramo. Rolo sen propra servo-bezono fariĝas vico da identaj ĉeloj, kaj identaj vicoj invitas iun poste doni tutan subreton por komforto. Dividu laŭ tio, kion homoj faras, ne laŭ tio, kiu subskribas iliajn elspezojn. Ses roloj estas kutime tro multe por malgranda oficejo kaj tri ofte estas prava.

Paŝo 2: turnu ĉiun ĉelon en servan deklaron

Ĉelo, kiu diras „Aplikaĵoj“, ne estas testebla. Ĉelo, kiu diras „HTTPS al la ERP-gastiganto ĉe 443, el la dungitaro-pulo“, estas testebla. Anstataŭigu ĉiun retan nomon per celo, protokolo kaj pordo, poste aldonu la dependaĵon, sen kiu la servo ne funkcias, kiel la interna solvilo aŭ la identec-provizanto.

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

La direkta kolumno kaptas la plej multekostajn erarojn. Permeso al la dungitaro malfermi aplikaĵon ne implicas permeson al aplikaĵaj serviloj malfermi konektojn reen al la tekokomputiloj de la dungitaro, kaj stata regulo, kiu permesas la unuan direkton, ofte estas legata kvazaŭ ĝi permesas la duan.

Paŝo 3: decidu, kie identeco fariĝas politiko

Iu devas transformi aŭtentikigitan sesion en rolon, kiun la enirejo povas trudi. Subtenataj opcioj inkludas grupan politikon liveratan de la aŭtentikiga dorservilo, fidindajn sesiajn atributojn aŭ apartajn adresarojn por ĉiu rolo. Ĉiuj tri funkcias; etikedo sendita de la kliento ne funkcias. Elektu la mekanismon, kiun dokumentas via enirejo, ne tiun, kiun priskribas forumafiŝo.

Asigni adreson, kiu nur ŝajnas aparteni al VLAN, estas la sama ne-respondo en alia kostumo. La gvidilo de Netgate pri fajroŝirmilaj reguloj de OpenVPN faras la disigon klara: lasi la tunelon ekfunkcii estas malsama decido ol lasi trafikon trapasi ĝin.

Skribu, kiun mekanismon vi elektis kaj kie ĝi estas agordita. Kiam rolo ŝanĝiĝas, tiu noto estas la diferenco inter unu redakto kaj ĉasado tra tri interfacoj. Ĝi ankaŭ diras al revizianto, kie unue rigardi.

Paŝo 4: atentu la fontan adreson, kiun vidas la celo

La plusenda politiko devas kongrui kun la reala fonto ĉe la limo. Se la enirejo tradukas VPN-klientojn al sia propra adreso, ĉiu malsupra fajroŝirmilo vidas unu fonton kaj perdas la kapablon decidi laŭ rolo. Se ĝi konservas la klientan adreson, la revena vojo devas ekzisti por tiu adresaro.

Testu ambaŭ direktojn antaŭ ol skribi la finajn regulojn, poste registru la observitan fonton apud ĉiu ĉelo. Rulu la saman kontrolon el du malsamaj roloj kaj komparu la rezulton. Se ambaŭ montras la adreson de la enirejo, la rola distingo jam perdiĝis. Matrico, kiu supozas konservitajn adresojn dum la enirejo faras fontan tradukon, malsukcesas ĉe la unua malsupra ACL.

Paŝo 5: testu ĉiun ĉelon antaŭ ol liveri

Turnu ĉiun permesitan ĉelon en unu reprezentan operacion kaj ĉiun malpermesitan ĉelon en negativan kazon. Rulu ambaŭ el kliento en la reala rolo, ne el la enireja konzolo, ĉar la konzolo preterpasas la vojon, kiun vi testas.

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

Negativa kazo, kiu konektiĝas, estas trovo, ne hazardo, kaj ĝi apartenas al la matrico kiel malsukcesa ĉelo ĝis la regulo estos riparita. Tenu la testajn komandojn apud la tabelo, por ke la sekva revizianto relanĉu ilin anstataŭ rekonstrui la rezonadon.

La finita tabelo postvivas la enirejon, por kiu ĝi estis skribita. Reguloj ŝanĝiĝas kun firmvaro kaj vendisto, dum la vico, kiu diras, ke kontraktisto atingas unu projektservon, restas vera ĝis tiu laboro ŝanĝiĝos.

Rilataj artikoloj