Aliro de VPN al VLAN: konstruu la matricon antaŭ la reguloj
Roloj unuflanke, servoj aliflanke. Kvin kontroloj turnas malklaran dezajnon de VPN-al-VLAN aliro en tabelon, kiun posedanto de fajroŝirmilo povas realigi.
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.
| Check | Passes when | Stop if |
|---|---|---|
| Destination named | Host and port appear in the cell | Cell names a VLAN or a subnet |
| Direction stated | Initiator and responder are both clear | Cell implies two-way access |
| Dependency listed | DNS or identity path is explicit | Whole infrastructure range is granted |
| Negative case written | At least one denied pair is recorded | Only 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.