MÔistmine vÔrgu poliitikate rakendamise vÔimalustest Calico abil

MÔistmine vÔrgu poliitikate rakendamise vÔimalustest Calico abil

VĂ”rgu pistikprogramm Calico pakub laia valikut vĂ”rgu poliitikaid ĂŒhtse sĂŒntaksiga, et kaitsta hoste nii riistvaras, virtuaalmasinates kui ka podides. Need poliitikad vĂ”ivad olla rakendatud namespace'i ulatuses vĂ”i olla globaalseteks vĂ”rgu poliitikateks, mis kehtivad host endpoint (rakendamiseks rakendustes, mis töötavad otse hostis — host vĂ”ib olla otse server vĂ”i virtuaalmasin) vĂ”i workload endpoint (rakendamiseks rakendustes, mis töötavad konteinerites vĂ”i virtuaalmasinates, mis asuvad hostis). Calico poliitikad vĂ”imaldavad rakendada turvameetmeid erinevates paketiteedesse, kasutades selliseid parameetreid nagu preDNAT, unraracked ja applyOnForward. Nende valikute toimimise mĂ”istmine vĂ”ib aidata suurendada sĂŒsteemi turvalisust ja jĂ”udlust. Selles artiklis selgitame nende Calico poliitikate parameetrite (preDNAT, unraracked ja applyOnForward) olemust, mis on rakendatud host endpoints'ile, rĂ”huga sellele, mis toimub pakettide töötlemise teedes (iptabelite ahelates).

See artikkel eeldab, et teil on arusaam Kubernetes'i ja Calico vÔrgu poliitikate pÔhimÔtetest. Kui ei, siis soovitame proovida basic network policy tutorial ja host protection tutorial Calico abil, enne kui seda artiklit lugema hakkate. Ootame ka, et teil on pÔhiteadmised iptables Linuxist.

Calico global network policy vĂ”imaldab teil rakendada juurdepÀÀsureeglite kogumit silte (hostide ja workloads/podide gruppide) jĂ€rgi. See on vĂ€ga kasulik, kui kasutate koos mitmekesiseid sĂŒsteeme — virtuaalmasinad, riistvara vĂ”i Kubernetes infrastruktuuri. Lisaks saate kaitsta oma klastrit (noh) deklareeritud poliitikate kogumiga ja rakendada vĂ”rgu poliitikaid sissetulevale liiklusele (nt NodePortide vĂ”i vĂ€liste IP-de kaudu).

PĂ”hitasandi tasemel, kui Calico ĂŒhendab podi vĂ”rguga (vt allolevat diagrammi), ĂŒhendab ta selle hostiga virtuaalse Etherneti liidese (veth) kaudu. Pod'i edastatud liiklus jĂ”uab hosti lĂ€bi selle virtuaalse liidese ja töödeldakse justkui see tuleks fĂŒĂŒsilisest vĂ”rgu liidesest. Vaikimisi nimetab Calico neid liideseid caliXXX. Kuna liiklus tuleb lĂ€bi virtuaalse liidese, lĂ€bib see iptables'i, nagu oleks pod ĂŒhe hĂŒppe kaugusel. SeetĂ”ttu, kui liiklus jĂ”uab/vĂ€ljub pod'ist, suunatakse see edastamise (forwarded) seisukohalt hostist.

Kubernetes'i sĂ”lmes, kus Calico töötab, saate virtuaalse liidese (veth) vastavusse seada töökoormusega jĂ€rgmiselt. Allolevas nĂ€ites nĂ€ete, et veth#10 (calic1cbf1ca0f8) on ĂŒhendatud cnx-manager-* calico-monitoring nimede ruumis.

[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4:  mtu 1440 qdisc noqueue state UP group default
    link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
    inet6 fe80::ecee:eeff:feee:eeee/64 scope link
       valid_lft forever preferred_lft forever
...

[centos@ip-172-31-31-46 K8S]$ calicoctl get wep --all-namespaces
...
calico-monitoring cnx-manager-8f778bd66-lz45m                            ip-172-31-31-46.ec2.internal 192.168.103.134/32
calic1cbf1ca0f8
...

MÔistmine vÔrgu poliitikate rakendamise vÔimalustest Calico abil

Arvestades, et Calico loob iga töökoormuse jaoks veth-liidese, kuidas ta rakendab poliitikaid? Selleks loob Calico konksud erinevatesse pakettide töötlemise tee ahelatesse, kasutades iptables'i.

Alloleval diagrammil on nĂ€idatud ahelad, mis osalevad pakettide töötlemises iptables'is (vĂ”i netfilter'i alamsĂŒsteemis). Kui pakett siseneb vĂ”rgu liidese kaudu, lĂ€bib ta esmalt PREROUTING ahela. SeejĂ€rel otsustatakse suunamine ja selle pĂ”hjal lĂ€bib pakett kas INPUT (suunatud hosti protsessidele) vĂ”i FORWARD (suunatud pod'ile vĂ”i teisele sĂ”lmele vĂ”rgus). Kohalikust protsessist lĂ€bib pakett OUTPUT ahela ning seejĂ€rel POSTROUTING enne kaablisse saatmist.

Pöörake tĂ€helepanu, et pod on samuti vĂ€line objekt (ĂŒhendatud veth'iga) iptables'i töötlemise seisukohalt. KokkuvĂ”ttes:

  • Edastatav (forwarded) liiklus (nat, marsruuditav vĂ”i pod'ist vĂ€lja/sisse) lĂ€bib ahelad PREROUTING — FORWARD — POSTROUTING.
  • Liiklus kohalikust hosti protsessist lĂ€bib ahela PREROUTING — INPUT.
  • Liiklus kohalikust hosti protsessist lĂ€bib ahela OUTPUT — POSTROUTING.

MÔistmine vÔrgu poliitikate rakendamise vÔimalustest Calico abil

Calico pakub poliitika seadevalikuid, mille abil saab poliitikaid kohaldada kĂ”igile ahelatele. Arvestades seda, vaatame erinevaid poliitikaseadevalikuid, mis on saadaval Calicos. Loetletud valikute numbrid vastavad ĂŒlaltoodud diagrammil olevatele numbritele.

  1. Töökoha lÔpp-punkti poliitika (pod)
  2. Host lÔpp-punkti poliitika
  3. Kohaldamisvalik ApplyOnForward
  4. PreDNAT poliitika
  5. Untracked poliitika

Alustame sellega, kuidas poliitikaid rakendatakse töökoha lÔpp-punktidele (Kubernetes pod'idele vÔi OpenStack VM-idele), seejÀrel vaatame host lÔpp-punktide poliitikavÔimalusi.

Töökoha lÔpp-punktid

Töökoha lÔpp-punkti poliitika (1)

See on valik, mis kaitseb teie Kubernetes pod'e. Calico toetab Kubernetes NetworkPolicy kasutamist, kuid pakub ka tÀiendavaid poliitikaid - Calico NetworkPolicy ja GlobalNetworkPolicy. Calico loob iga pod'i (töökoha) jaoks ahela ning liidestab INPUT ja OUTPUT ahelatesse töökoha jaoks FILTRI tabelisse ahela FORWARD.

Host lÔpp-punktid

Host lÔpp-punkti poliitika (2)

Lisaks CNI (konteineri vĂ”rgu liides) poliitikale pakuvad Calico poliitikad vĂ”imalust kaitsta ka hosti. Calicos saate luua host lĂ”pp-punkti, mÀÀrates kohaliku liidese kombinatsiooni ja, kui vajalik, ka sadamate numbrid. Selle ĂŒksuse poliitika rakendamine saavutatakse INPUT ja OUTPUT ahelate FILTER tabeli abil. Nagu diagrammil nĂ€ha, rakendatakse neid (2) kohalikule protsessile node'is/hostis. See tĂ€hendab, et kui olete loonud poliitika, mis kehtib host lĂ”pp-punktile, ei mĂ”juta see teie pod'ide liiklust. Kuid see tagab ĂŒhtse liidese/sĂŒntaksi liikluse blokeerimiseks teie hostile ja pod'idele Calico poliitikate abil. See lihtsustab poliitikate haldamise protsessi hĂŒbriidvĂ”rgus. Host lĂ”pp-punkti poliitikate seadmine klastri kaitse tugevdamiseks on veel ĂŒks oluline kasutusjuht.

Kohaldamisvalik ApplyOnForward (3)

Valik ApplyOnForward on saadaval Calico globaalsetes vÔrgu poliitikates, et vÔimaldada poliitikate rakendamist kogu host lÔpp-punktist lÀbi kÀiva liikluse, sealhulgas liikluse, mis suunatakse hosti kaudu edasi. See liiklus hÔlmab kohaliku pod'i suunatud vÔi muusse vÔrku suunatud liiklust. Calico nÔuab, et see parameeter oleks lubatud poliitikatele, mis kasutavad PreDNAT ja untracked, vt jÀrgmisi jaotisi. Lisaks saab ApplyOnForward'i kasutada hosti liikluse jÀlgimiseks, kui kasutatakse virtuaalset ruuteri vÔi tarkvaralist NAT-i.

Pange tĂ€hele, et kui peate sama vĂ”rgu poliitikat rakendama nii host-protsessidele kui ka pod'idele, ei ole teil tingimata vaja kasutada ApplyOnForward valikut. Piisab, kui loote sildi vajalikele hostendpoint ja workload endpoint (pod) jaoks. Calico on piisavalt arenenud, et rakendada poliitikat siltide alusel, sĂ”ltumata endpointi tĂŒĂŒbist (hostendpoint vĂ”i workload).

PreDNAT poliitika (4)

Kuberneteses saab teenuse portidesse suunata vÀlisse, kasutades NodePortsi valikut vÔi valikuliselt (kasutades Calicot) nende kuulutamisvÔimalusi nagu Cluster IPs vÔi External IPs. Kube-proxy tasakaalustab sissetulevat liiklust, mis on seotud teenusega, vastava teenuse pod'ide poole, kasutades DNAT'i. Arvestades seda, kuidas rakendada poliitikaid liiklusele, mis tuleb NodePortide kaudu? Et neid poliitikaid rakendada enne, kui liiklus on DNAT'i kaudu töödeldud (mis esindab host:port ja vastava teenuse kaardistamist), pakub Calico globalNetworkPolicy jaoks parameetrit nimega "preDNAT: true".

Kui pre-DNAT on lubatud, rakendatakse neid poliitikaid (4) diagrammil — mangle-ahela PREROUTING tabelis — vahetult enne DNAT'i. Tavalist poliitikate jĂ€rjekorda (order) siin ei jĂ€rgita, kuna nende poliitikate rakendamine toimub palju varem liikluse töötlemise teel. Siiski jĂ€rgivad preDNAT poliitikad oma vaheline rakendusjĂ€rjekord (order).

Pre-DNAT poliitikate loomisel on oluline olla tĂ€helepanelik liikluse suhtes, mida soovite töödelda, ja lubada enamiku liikluse tagasilĂŒkkamine. Pre-DNAT poliitikas 'allow' mĂ€rgitud liiklus ei kontrollita enam hostendpoint poliitika kaudu, samas kui pre-DNAT poliitikast vĂ€ljasaanud liiklus jĂ€tkab teed ĂŒlejÀÀnud ahelate kaudu.
Calico on teinud applyOnForward valiku kasutamise preDNATiga kohustuslikuks, kuna liikluse sihtkoht ei ole veel mÀÀratud. Liiklus vÔib olla suunatud host-protsessile vÔi see vÔib suunata pod'ile vÔi mÔnele teisele sÔlmele.

Untracked poliitika (5)

VĂ”rgud ja rakendused vĂ”ivad kĂ€ituda vĂ€ga erinevalt. ÄÀrmuslikel juhtudel vĂ”ivad rakendused genereerida hulgaliselt lĂŒhiajalisi ĂŒhendusi. See vĂ”ib pĂ”hjustada mĂ€lu nappust conntrack'is (Linuxi vĂ”rguhiire pĂ”hikomponent). Traditsiooniliselt peab Linuxis selliste rakenduste kĂ€itamiseks kĂ€sitsi seadistama vĂ”i keelama conntrack'i vĂ”i kirjutama iptables'e reeglid, et vĂ€ltida conntrack'i. Untracked policy Calicos on lihtsam ja tĂ”husam vĂ”imalus, kui soovite hallata ĂŒhendusi vĂ”imalikult kiiresti. NĂ€iteks, kui te kasutate massiivset memcache vĂ”i tĂ€iendava kaitsemeetmena DDOS.

Loe seda blogipostitust (vÔi meie tÔlge) rohkem teabe saamiseks, sealhulgas jÔudlustestide kohta, kui kasutatakse untracked policy't.

Kui mÀÀrate Calico globalNetworkPolicy's variandi «doNotTrack: true», siis muutub see **mitte jĂ€lgitavaks** poliitikaks ning rakendatakse Linuxi paketiprotsessi varajases etapis. Kui vaadata ĂŒlaltoodud diagrammi, siis kantakse untracked poliitikad registreerimise ja vĂ€ljundite ketidesse raw tabelis enne, kui ĂŒhenduste jĂ€lgimine (conntrack) kĂ€ivitub. Kui pakett on untracked poliitikaga lubatud, mĂ€rgistatakse see, et keelata selle paketi ĂŒhenduse jĂ€lgimine. See tĂ€hendab:

  • Untracked poliitika rakendatakse iga paketi puhul. Ühenduse (vĂ”i voolu) kontseptsioon puudub. Ühenduste puudumine toob endaga kaasa mitmeid olulisi tagajĂ€rgi:
  • Kui soovite lubada nii pĂ€ringu kui ka vastustrafic'i, vajate reeglit nii sissetuleva kui ka vĂ€ljamineva (kuna Calico kasutab tavaliselt conntrack'i, et mĂ€rkida vastustranspordi lubatud).
  • Untracked poliitika ei tööta Kubernetes'e töökoormuste (pod'ide) puhul, kuna sellisel juhul ei ole vĂ”imalik jĂ€lgida vĂ€ljaminevat ĂŒhendust pod'ist.
  • NAT ei toimi Ă”igesti mitte jĂ€lgitavate pakettidega (kuna kernel salvestab NAT-i vaste conntrack'is).
  • Kui lĂ€bida reegli 'luba kĂ”ik' kaudu untracked-poliitikas, mĂ€rgistatakse kĂ”ik paketid kui mitte jĂ€lgitavad. See ei ole peaaegu kunagi see, mida soovite, seetĂ”ttu on oluline olla vĂ€ga valiv untracked-poliitikaga lubatud pakettide suhtes (ja lasta suuremal osal liiklusest liikuda lĂ€bi tavapĂ€raste jĂ€lgitavate poliitikate).
  • Untracked-poliitikaid rakendatakse pakettide töötlemise konveieril alguses. See on ÀÀrmiselt oluline mĂ”ista Calico poliitikate loomisel. Teil vĂ”ib olla poliitika pod'ile, mille order:1 ja untracked-poliitika order:1000. See ei oma tĂ€htsust. Untracked-poliitika rakendatakse enne pod'i poliitikat. Untracked-poliitikad jĂ€rgivad tĂ€itmise jĂ€rjekorda ainult omavahel.

Kuna doNotTrack poliitika ĂŒheks eesmĂ€rgiks on rakendada poliitikat Linuxi pakettide töötlemise konveieri varases etapis, nĂ”uab Calico doNotTrack'i kasutamisel applyOnForward valiku mÀÀratlemist. Pöörates tĂ€helepanu pakettide töötlemise diagrammile, mĂ€rkige, et untracked poliitika (5) rakendatakse enne igasuguste marsruutimisotsuste tegemist. Liiklus vĂ”ib suunata host-protsessi vĂ”i vĂ”ib see suunata pod'i vĂ”i teisele sĂ”lmele.

Summary

Oleme arutanud erinevaid poliitikavalikuid (Host endpoint, ApplyOnForward, preDNAT ja Untracked) Calicos ja kuidas need rakendatakse pakettide töötlemise teekonnas. Nende töö pĂ”himĂ”tte mĂ”istmine aitab arendada tĂ”husaid ja turvalisi poliitikaid. Calico abil saate kasutada globaalset vĂ”rgu poliitikat, mis rakendatakse labelile (sĂ”lmede ja pod'ide rĂŒhmale) ning rakendada poliitikaid erinevate parametritega. See vĂ”imaldab turva- ja vĂ”rgukujunduse spetsialistidel mugavalt kaitsta „kĂ”ike” (endpoints tĂŒĂŒbid), kasutades Calico poliitikate ĂŒhtset keelt.

TĂ€nu: Soovin tĂ€nada Shawn Crumptoni ja Alex Pollitt nende ĂŒlevaate ja vÀÀrtusliku teabe eest.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster