Pristup s VPN-a na VLAN: prvo sastavite matricu, pa pravila
Uloge s jedne strane, usluge s druge. Pet provjera pretvara nejasan dizajn pristupa s VPN-a na VLAN u tabelu koju vlasnik firewall-a može implementirati.
Počnite od matrice, a ne od sintakse firewall-a. Tabelu s ulogama s jedne strane i uslugama s druge može pregledati vlasnik aplikacije, o njoj raspravljati vlasnik sigurnosti i implementirati je onaj ko drži gateway. Taj pregled je jeftiniji od otklanjanja grešaka u pravilima oko kojih se niko nije dogovorio.
Sat pisanja kasnije štedi sedmicu arheologije pravila. Dizajn govori o tome ko do koje usluge dolazi, a to je dio koji preživi prenumeraciju.
Korak 1: imenujte uloge prije mreža
Počnite od ljudi, a ne od switcha. Zapišite svaku grupu koja se povezuje na daljinu i jednu rečenicu koja opisuje šta ta grupa radi, poput skladišnih radnika koji čitaju stanje zaliha ili izvođača koji održava jednu integraciju. Ako bi dvije grupe dobile identičan pristup, za tu svrhu one su jedna uloga.
Zaustavite se ovdje ako uloga postoji samo zbog organizacione šeme. Uloga bez posebne potrebe za uslugom postaje red identičnih ćelija, a identični redovi nekoga kasnije navedu da radi praktičnosti dodijeli cijelu podmrežu. Dijelite po tome šta ljudi rade, ne po tome ko potpisuje njihove troškove. Šest uloga je obično previše za malu kancelariju, a tri su često tačne.
Korak 2: pretvorite svaku ćeliju u izjavu o usluzi
Ćelija u kojoj piše „Aplikacije“ nije provjerljiva. Ćelija u kojoj piše „HTTPS prema ERP hostu na 443, iz pula zaposlenih“ jeste. Zamijenite svako ime mreže odredištem, protokolom i portom, pa dodajte zavisnost bez koje usluga ne može raditi, poput internog resolvera ili davatelja identiteta.
| 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 |
Kolona smjera hvata najskuplje greške. Dozvola da zaposleni otvore aplikaciju ne znači dozvolu da aplikacijski serveri otvore veze natrag prema laptopima zaposlenih, a pravilo sa stanjem koje dopušta prvi smjer često se čita kao dopuštenje drugog.
Korak 3: odlučite gdje identitet postaje politika
Neko mora pretvoriti autentificiranu sesiju u ulogu koju gateway može provesti. Podržane opcije uključuju grupnu politiku koju isporučuje backend za autentifikaciju, pouzdane atribute sesije ili odvojene pulove adresa po ulozi. Sve tri rade; oznaka koju pošalje klijent ne radi. Odaberite mehanizam koji vaš gateway dokumentira, a ne onaj koji opisuje objava na forumu.
Dodjela adrese koja samo izgleda kao da pripada VLAN-u isti je nedostatak odgovora u drugom kostimu. Netgateov vodič kroz firewall pravila OpenVPN-a čini razdvajanje jasnim: dopustiti tunelu da se podigne drugačija je odluka od dopuštanja prometa kroz njega.
Zapišite koji ste mehanizam odabrali i gdje je konfiguriran. Kada se uloga promijeni, ta bilješka je razlika između jedne izmjene i traganja kroz tri interfejsa. Ona također kaže revizoru gdje prvo pogledati.
Korak 4: pazite na izvornu adresu koju vidi odredište
Politika prosljeđivanja mora se podudarati sa stvarnim izvorom na granici. Ako gateway prevodi VPN klijente na vlastitu adresu, svaki nizvodni firewall vidi jedan izvor i gubi mogućnost odlučivanja po ulozi. Ako čuva adresu klijenta, povratni put mora postojati za taj pul.
Testirajte oba smjera prije pisanja konačnih pravila, zatim zabilježite opaženi izvor uz svaku ćeliju. Pokrenite istu provjeru s dvije različite uloge i uporedite rezultat. Ako obje pokažu adresu gatewaya, razlikovanje uloga je već izgubljeno. Matrica koja pretpostavlja sačuvane adrese dok gateway radi prevođenje izvora pada na prvom nizvodnom ACL-u.
Korak 5: testirajte svaku ćeliju prije puštanja
Pretvorite svaku dopuštenu ćeliju u jednu reprezentativnu operaciju, a svaku zabranjenu ćeliju u negativan slučaj. Pokrenite oba s klijenta u stvarnoj ulozi, ne s konzole gatewaya, jer konzola zaobilazi put koji testirate.
# 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'
Negativan slučaj koji se poveže nalaz je, a ne slučajnost, i mjesto mu je u matrici kao neuspjeloj ćeliji dok se pravilo ne popravi. Držite testne komande uz tabelu da ih sljedeći recenzent ponovo pokrene umjesto da iznova gradi obrazloženje.
Gotova tabela nadživljava gateway za koji je napisana. Pravila se mijenjaju s firmverom i dobavljačem, dok red koji kaže da izvođač dolazi do jedne projektne usluge ostaje istinit dok se taj posao ne promijeni.