Kuptimi i opsioneve të përdorimit të politikave rrjetore me Calico

Kuptimi i opsioneve të përdorimit të politikave rrjetore me Calico

Plugin-i rrjetor Calico ofron njĂ« gamĂ« tĂ« gjerĂ« politikash rrjetore me njĂ« sintaksĂ« tĂ« unifikuar pĂ«r tĂ« mbrojtur hostet nĂ« hardware, makinat virtuale dhe pod-et. KĂ«to politika mund tĂ« aplikohen brenda njĂ« namespace ose tĂ« jenĂ« politika globale rrjetore qĂ« aplikohen nĂ« endpoint-in e hostit (pĂ«r tĂ« mbrojtur aplikacionet qĂ« funksionojnĂ« drejtpĂ«rdrejt nĂ« host — hosti mund tĂ« jetĂ« njĂ« server ose njĂ« makinĂ« virtuale) ose nĂ« endpoint-in e workload-it (pĂ«r tĂ« mbrojtur aplikacionet qĂ« funksionojnĂ« nĂ« kontejnerĂ« ose makina virtuale tĂ« vendosura nĂ« host). Politikat Calico lejojnĂ« zbatimin e masave tĂ« sigurisĂ« pĂ«r pika tĂ« ndryshme me kalimin e paketeve pĂ«rmes parametrave si preDNAT, unraracked dhe applyOnForward. Kuptimi i mĂ«nyrĂ«s se si funksionojnĂ« kĂ«to opsione mund tĂ« ndihmojĂ« nĂ« pĂ«rmirĂ«simin e sigurisĂ« dhe performancĂ«s sĂ« sistemit tĂ« pĂ«rgjithshĂ«m. Ky artikull shpjegon thelbin e kĂ«tyre parametrave tĂ« politikave Calico (preDNAT, unraracked dhe applyOnForward), tĂ« aplikuara nĂ« endpoint-e tĂ« hostit, me fokus nĂ« atĂ« qĂ« ndodh nĂ« rrugĂ«t e pĂ«rpunimit tĂ« paketeve (zinxhirĂ«t iptables).

Ky artikull supozon se keni një kuptim të parimeve bazike të funksionimit të politikave rrjetore në Kubernetes dhe Calico. Nëse jo, rekomandojmë të provoni tutorialin e politikës rrjetore bazike dhe tutorialin e mbrojtjes së hostit duke përdorur Calico, para se të lexoni këtë artikull. Gjithashtu, ne presim që keni një kuptim të bazik të funksionimit iptables në Linux.

Calico politika globale rrjetore ju lejon tĂ« aplikoni njĂ« grup rregullash hyrĂ«se pĂ«rmes labels (nĂ« grupe hostesh dhe workloads/pods). Kjo Ă«shtĂ« shumĂ« e dobishme, nĂ«se pĂ«rdorni sĂ« bashku sisteme tĂ« ndryshme — makina virtuale, sistemin direkt nĂ« hardware ose infrastrukturĂ«n Kubernetes. PĂ«r mĂ« tepĂ«r, mund tĂ« mbrojni klasterin tuaj (nodat) me njĂ« grup politikash deklarative dhe tĂ« aplikoni politikat rrjetore nĂ« trafikun hyrĂ«s (pĂ«r shembull, pĂ«rmes shĂ«rbimeve NodePorts ose IP-ve tĂ« jashtme).

Në nivelin themelor, kur Calico lidh një pod me rrjetin (shih diagramin më poshtë), ai e lidh me hostin përmes një interface të virtualizuar Ethernet (veth). Trafiku i dërguar nga pod-i arrin te hosti nga ky interface virtual dhe përpunon siç do të ndodhte po të ishte dërguar nga një interface fizik i rrjetit. Në mënyrë default, Calico i emëron këto interface si caliXXX. Duke qenë se trafiku vjen përmes një interface virtual, ai kalon përmes iptables, siç do të ndodhte nëse pod-i ishte me një hop të vetëm. Prandaj, kur trafiku arrin/ikën nga pod-i, ai përcillet (forwarded) nga pikëpamja e hostit.

Në nodën Kubernetes, ku është aktivizuar Calico, mund të maposh interface-in virtual (veth) me workload në mënyrën e mëposhtme. Në shembullin e dhënë më poshtë, mund të shihni se veth#10 (calic1cbf1ca0f8) është i lidhur me cnx-manager-* në hapësirën e emrave calico-monitoring.

[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
...

Kuptimi i opsioneve të përdorimit të politikave rrjetore me Calico

Duke marrë parasysh se Calico krijon një interface veth për çdo workload, si e aplikon ai politikat? Për këtë, Calico krijon hook-e në zinxhirë të ndryshëm të rrugëzimit të paketave, duke përdorur iptables.

Në diagramin më poshtë janë paraqitur zinxhirët që përfshihen në përpunimin e paketave në iptables (ose në nënstrukturën netfilter). Kur një paketë arrin përmes interface-it të rrjetit, ajo fillimisht kalon nëpër zinxhirin PREROUTING. Më pas merret një vendim për rrugën, dhe për këtë arsye paketa kalon ose përmes INPUT (e drejtuar për proceset e hostit), ose përmes FORWARD (e drejtuar për pod-in ose një nod tjetër në rrjet). Nga një proces lokal, paketa kalon përmes zinxhirove OUTPUT dhe më pas POSTROUTING para se të dërgohet përmes kabllit.

Vini re se pod-i gjithashtu është një objekt i jashtëm (i lidhur me veth) nga këndvështrimi i përpunimit të iptables. Le të përmbledhim:

  • Trafiku i pĂ«rcjellur (forwarded) (nat, i rrugĂ«s, ose nĂ« / nga pod) kalon pĂ«rmes zinxhirĂ«ve PREROUTING — FORWARD — POSTROUTING.
  • Trafiku pĂ«r procesin lokal tĂ« host-it kalon pĂ«rmes zinxhirit PREROUTING — INPUT.
  • Trafiku nga procesi lokal tĂ« host-it kalon pĂ«rmes zinxhirit OUTPUT — POSTROUTING.

Kuptimi i opsioneve të përdorimit të politikave rrjetore me Calico

Calico ofron mundësi për politika, me ndihmën e të cilave mund të aplikoni politika për të gjitha zinxhirët. Duke pasur parasysh këtë, le të shqyrtojmë mundësitë e ndryshme të konfigurerit të politikave që janë të disponueshme në Calico. Numrat në listën e mundësive më poshtë korrespondrojnë me numrat në diagramin më sipër.

  1. Politika e pikave të punës (pod)
  2. Politika e pikave nga hosti
  3. Mundësia ApplyOnForward
  4. Politika PreDNAT
  5. Politika Untracked

Le të fillojmë duke shqyrtuar se si aplikohen politikat për piketat e punës (pod'ët e Kubernetes ose VM-të e OpenStack), dhe pastaj të shqyrtojmë opsionet e politikave për piketat nga hosti.

Pikat e Punës

Politika e Pikës së Punës (1)

Kjo Ă«shtĂ« njĂ« mundĂ«si pĂ«r tĂ« mbrojtur pod'Ă«t tuaj tĂ« kubernetes. NĂ« Calico mbĂ«shtetet funksionimi me Kubernetes NetworkPolicy, por gjithashtu ofron politika shtesĂ« — Calico NetworkPolicy dhe GlobalNetworkPolicy. Calico krijon njĂ« zinxhir pĂ«r çdo pod (workload) dhe lidhje nĂ« zinxhirĂ«t INPUT dhe OUTPUT pĂ«r workload nĂ« tabelĂ«n e filtrave tĂ« zinxhirit FORWARD.

Pikat nga Host

Politika e Pikës nga Host (2)

PĂ«rveç CNI (interface e rrjetit tĂ« konteinerĂ«ve), politikat e Calico ofrojnĂ« mundĂ«sinĂ« e mbrojtjes direkte tĂ« hostit. NĂ« Calico mund tĂ« krijoni njĂ« host endpoint duke pĂ«rcaktuar njĂ« kombinim tĂ« interfaces sĂ« hostit dhe, nĂ«se Ă«shtĂ« e nevojshme, numrat e porteve. Aplikimi i politikave pĂ«r kĂ«tĂ« entitet arrihet me ndihmĂ«n e tabelĂ«s sĂ« filtrave nĂ« zinxhirĂ«t INPUT dhe OUTPUT. Siç shihet nga diagrami, (2) ato aplikohen pĂ«r proceset lokale nĂ« nodĂ«n/hostin. Kjo do tĂ« thotĂ« se nĂ«se krijoni njĂ« politikĂ« qĂ« aplikohet pĂ«r host endpoint, ajo nuk do tĂ« ndikojĂ« nĂ« trafikun qĂ« shkon/del nga pod'Ă«t tuaj. Por pĂ«rmes saj sigurohet njĂ« ndĂ«rfaqe/sintaksĂ« e vetme pĂ«r bllokimin e trafikut pĂ«r hostin tuaj dhe pod'Ă«t me anĂ« tĂ« politikave tĂ« Calico. Kjo e thjeshton ndjeshĂ«m procesin e menaxhimit tĂ« politikave pĂ«r njĂ« rrjet multiformat. Konfigurimi i politikave tĂ« host endpoint pĂ«r pĂ«rforcimin e mbrojtjes sĂ« klasterit — Ă«shtĂ« njĂ« tjetĂ«r rast i rĂ«ndĂ«sishĂ«m i pĂ«rdorimit tĂ« tyre.

Politika ApplyOnForward (3)

Mundësia ApplyOnForward është e disponueshme në politikën globale të rrjetit Calico, për të mundësuar aplikimin e politikave për tërë trafikun që kalon përmes host endpoint-it, duke përfshirë trafikun që do të përcillet nga hosti (forwarded). Ky trafik përfshin atë që dërgohet në pod lokal ose ndonjë vend tjetër në rrjet. Calico kërkon që ky parametr të jetë aktiv për politikat që përdorin PreDNAT dhe untracked, shih seksionet e mëposhtme. Për më tepër, ApplyOnForward gjithashtu mund të përdoret për mbajtjen e gjurmës së trafikut të hostit në rastet kur përdoret një ruter virtual ose NAT programore.

Vini re, se ju nevojitet të aplikoni të njëjtën politikë rrjeti si për proceset e hostit ashtu edhe për pod, nuk është e nevojshme të përdorni opsionin ApplyOnForward. Mjafton të krijoni një etiketë për endpoint-in e hostit dhe endpoint-in e ngarkesës (pod). Calico është mjaft inteligjent për të aplikuar politikën bazuar në etiketat, pavarësisht llojit të endpoint-it (hostendpoint ose workload).

Politika PreDNAT (4)

Në Kubernetes, portet e entitetit shërbim mund të përshkohen jashtë përmes opsionit NodePorts ose, në mënyrë opsionale (në përdorim me Calico), përmes shpalljes së tyre përmes opsioneve Cluster IPs ose External IPs. Kube-proxy balancojnë trafikun e ardhshëm të lidhur me shërbimin, deri te pod-të e shërbimit përkatës, duke përdorur DNAT. Duke e marrë këtë parasysh, si mund të aplikoni politikat për trafikun që vjen përmes NodePorts? Që këto politika të aplikohen para se trafiku të përpunohen nga DNAT (i cili përbën një lidhje mes hostit: portit dhe shërbimit përkatës), Calico ofron një parametër për globalNetworkPolicy, të quajtur "preDNAT: true".

Kur pre-DNAT Ă«shtĂ« i aktivizuar, kĂ«to politika realizohen nĂ« (4) nĂ« diagram — nĂ« tabelĂ«n mangle tĂ« zinxhirit PREROUTING — drejtpĂ«rdrejt para DNAT. Renditja e zakonshme e politikave (order) kĂ«tu nuk respektohet, pasi aplikimi i kĂ«tyre politikave ndodh shumĂ« mĂ« herĂ«t gjatĂ« procesit tĂ« pĂ«rpunimit tĂ« trafikut. MegjithatĂ«, politikate preDNAT respektojnĂ« rendin e aplikimit (order) mes tyre.

Kur krijoni politika me pre-DNAT, është e rëndësishme të jeni të kujdesshëm me trafikun që dëshironi të përpunoni dhe të lejoni shumicën të refuzohet. Trafiku, i cili është shënuar si 'lejo' në politikën pre-DNAT, nuk do të kontrollohet më nga politika e hostendpoint, ndërsa trafiku që dështon kalimin e politikës pre-DNAT do të vazhdojë rrugën e tij përmes zinxhirëve të tjerë.
Calico e bëri të detyrueshme aktivizimin e opsionit applyOnForward kur përdorni preDNAT, pasi në përkufizim, destinacioni i trafikut ende nuk është zgjedhur. Trafiku mund të drejtohet te procesi i hostit, ose mund të ridrejtohet te pod ose te një nod tjetër.

Politika Untracked (5)

Rrjetet dhe aplikacionet mund të kenë dallime të mëdha në sjellje. Në disa raste ekstreme, aplikacionet mund të gjenerojnë shumë lidhje afatshkurtra. Kjo mund të çojë në mungesë memorie për conntrack (komponenti kryesor i grykës së rrjetit Linux). Tradicionalisht, për të nisur aplikacione të këtij lloji në Linux, duhet të konfigurosh manualisht ose të çaktivizosh conntrack, ose të shkruash rregulla iptables për të anashkaluar conntrack. Politika Untracked në Calico është një opsion më i lehtë dhe efektiv, nëse dëshironi të trajtoni lidhjet sa më shpejt të jetë e mundur. Për shembull, nëse përdorni një memcache të madh memcache ose si një masë shtesë mbrojtjeje nga DDOS.

Lexoni këtë blog post (ose tonë përkthim) për më shumë informacione, duke përfshirë testet e performancës gjatë përdorimit të politikës untracked.

Kur vendosni opsionin «doNotTrack: true» në politikat globale të rrjetit Calico, ajo bëhet politikë **untracked** dhe zbaton në fazën më të hershme të procesit të përpunimit të paketimeve në Linux. Nëse shihni diagramin e mësipërm, politikat untracked zbatojnë në zinxhirët PREROUTING dhe OUTPUT në tabelën raw, përpara se të fillojë ndjekja e lidhjeve (conntrack). Kur një paketë lejohet nga politika untracked, ajo etiket është për të çaktivizuar ndjekjen e lidhjes për këtë paketë. Kjo do të thotë:

  • Politika untracked zbatohet pĂ«r çdo paketĂ«. Nuk ka koncept lidhjeje (ose rrjedhe). Mungesa e lidhjeve ka disa pasoja tĂ« rĂ«ndĂ«sishme:
  • NĂ«se dĂ«shironi tĂ« lejoni si trafikun e kĂ«rkesĂ«s, ashtu edhe trafikun e pĂ«rgjigjes, ju nevojitet njĂ« rregull pĂ«r tĂ« dyja, hyrĂ«se dhe dalĂ«se (pasi Calico zakonisht pĂ«rdor conntrack pĂ«r tĂ« etiketuar trafikun e pĂ«rgjigjes si tĂ« lejuar).
  • Politika untracked nuk funksionon pĂ«r workload Kubernetes (pod’ët), sepse nĂ« kĂ«tĂ« rast nuk ka mĂ«nyrĂ« pĂ«r tĂ« ndjekur lidhjen e dalshme nga pod’i.
  • NAT nuk funksionon siç duhet me paketat e pa ndjekura (pasi bĂ«rthama ruan pĂ«rputhjen NAT nĂ« conntrack).
  • NĂ« kalimin pĂ«rmes rregullit «lejo gjithçka» nĂ« politikĂ«n untracked, tĂ« gjitha paketat do tĂ« etiketohen si tĂ« pa ndjekura. Kjo pothuajse gjithmonĂ« nuk Ă«shtĂ« ajo qĂ« ju nevojitet, prandaj Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« jeni shumĂ« selektiv ndaj paketave e lejuara nga politikĂ«t untracked (dhe tĂ« lejoni pjesĂ«n mĂ« tĂ« madhe tĂ« trafikut tĂ« kalojĂ« pĂ«rmes politikave tĂ« zakonshme tĂ« ndjekjes).
  • Politikat untracked zbatohen nĂ« fillim tĂ« procesit tĂ« trajtimit tĂ« paketave. Kjo Ă«shtĂ« shumĂ« e rĂ«ndĂ«sishme pĂ«r t'u kuptuar kur krijoni politikat Calico. Ju mund tĂ« keni njĂ« politikĂ« pĂ«r pod'in me order:1 dhe njĂ« politikĂ« untracked me order:1000. Kjo nuk do tĂ« ketĂ« rĂ«ndĂ«si. Politika untracked do tĂ« zbatohet para politikĂ«s pĂ«r pod'in. Politikat untracked respektojnĂ« renditjen e zbatimit vetĂ«m mes tyre.

Duke qenë se një nga qëllimet e politikës doNotTrack është të imponojë zbatimin e politikës në një fazë të hershme të procesit të trajtimit të paketave Linux, Calico e bën të detyrueshëm përcaktimin e opsionit applyOnForward kur përdorni doNotTrack. Duke iu referuar diagramit të trajtimit të paketave, vini re se politika untracked (5) zbatohet para çdo vendimi për rrugëzimin. Trafiku mund të jetë i drejtuar në procesin e host-it, ose ai mund të redirektohet në pod ose në një nod tjetër.

Përfundime

Ne shqyrtuam opsionet e ndryshme të politikave (Host endpoint, ApplyOnForward, preDNAT, dhe Untracked) në Calico dhe si ato zbatohen gjatë procesit të trajtimit të paketave. Kuptimi i natyrës së funksionimit të tyre ndihmon në zhvillimin e politikave efektive dhe të sigurta. Me Calico, mund të përdorni politikat globale të rrjetit, të cilat zbatohen ndaj etiketës (grupin e noduleve dhe pod'ave) dhe të aplikoni politika me parametra të ndryshëm. Kjo i lejon specialistët e sigurisë dhe dizajnit të rrjetit të mbrojnë lehtësisht "gjithçka" (llojet e endpoints), duke përdorur një gjuhë të përbashkët politikash me politikat Calico.

Faleminderit: Do të doja të falënderoja Sean Crampton dhe Alex Pollitt për rishikimin e tyre dhe për informacionin e çmuar.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster