Exposing Services in Kubernetes
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kuna njia tofauti za kufichua huduma katika Kubernetes ili nukta za ndani na nukta za nje ziweze kuzifikia. Mipangilio hii ya Kubernetes ni muhimu sana kwani msimamizi anaweza kutoa ufikiaji kwa washambuliaji kwa huduma ambazo hawapaswi kuwa na uwezo wa kuzifikia.
Kabla ya kuanza kuorodhesha njia ambazo K8s inatoa za kufichua huduma kwa umma, fahamu kwamba ikiwa unaweza kuorodhesha majina ya maeneo, huduma na ingresses, unaweza kupata kila kitu kilichofichuliwa kwa umma kwa:
A ClusterIP service is the default Kubernetes service. It gives you a service inside your cluster that other apps inside your cluster can access. There is no external access.
Hata hivyo, hii inaweza kufikiwa kwa kutumia Kubernetes Proxy:
Sasa, unaweza kuvinjari kupitia API ya Kubernetes ili kufikia huduma kwa kutumia mpango huu:
http://localhost:8080/api/v1/proxy/namespaces/<NAMESPACE>/services/<SERVICE-NAME>:<PORT-NAME>/
Kwa mfano unaweza kutumia URL ifuatayo:
http://localhost:8080/api/v1/proxy/namespaces/default/services/my-internal-service:http/
ili kufikia huduma hii:
Hii mbinu inahitaji uendeshe kubectl
kama mtumiaji aliyeidhinishwa.
Orodhesha ClusterIPs zote:
Wakati NodePort inatumika, bandari maalum inapatikana kwenye Nodes zote (zinazoakilisha Mashine za Kijamii). Mwelekeo unaoelekezwa kwenye bandari hii maalum kisha unachukuliwa kwa mfumo wa kupeleka kwa huduma. Kawaida, njia hii haitashauriwa kutokana na hasara zake.
Orodha ya NodePorts zote:
Mfano wa spesifikasiyo ya NodePort:
If you don't specify the nodePort in the yaml (ni bandari ambayo itafunguliwa) bandari katika range 30000–32767 itatumika.
Inafichua Huduma nje kwa kutumia balancer ya mzigo wa mtoa huduma wa wingu. Kwenye GKE, hii itazindua Network Load Balancer ambayo itakupa anwani moja ya IP ambayo itapeleka trafiki yote kwa huduma yako. Kwenye AWS itazindua Load Balancer.
Lazima ulipie LoadBalancer kwa kila huduma iliyofichuliwa, ambayo inaweza kuwa ghali.
Orodhesha LoadBalancers zote:
IP za nje zinakabiliwa na huduma za aina ya Load Balancers na kwa ujumla hutumiwa wakati Load Balancer wa Mtoa Huduma wa Nje anatumika.
Ili kuzipata, angalia kwa load balancers zenye thamani katika uwanja wa EXTERNAL-IP
.
Mwanzo wa trafiki unaingia kwenye klasta kwa IP ya nje (kama IP ya marudio), kwenye bandari ya Huduma, itakuwa imeelekezwa kwa moja ya maeneo ya Huduma. externalIPs
hazisimamiwi na Kubernetes na ni jukumu la msimamizi wa klasta.
Katika spesifikasiyo ya Huduma, externalIPs
zinaweza kuainishwa pamoja na aina yoyote ya ServiceTypes
. Katika mfano hapa chini, "my-service
" inaweza kufikiwa na wateja kwenye "80.11.12.10:80
" (externalIP:port
)
Kutoka kwenye hati: Huduma za aina ya ExternalName zinachora Huduma kwa jina la DNS, si kwa mteule wa kawaida kama my-service
au cassandra
. Unabainisha Huduma hizi kwa kutumia parameter ya spec.externalName
.
Mwelekeo huu wa Huduma, kwa mfano, unachora Huduma ya my-service
katika nafasi ya prod
kwa my.database.example.com
:
Wakati wa kutafuta mwenyeji my-service.prod.svc.cluster.local
, Huduma ya DNS ya klasta inarudisha rekodi ya CNAME
yenye thamani my.database.example.com
. Kufikia my-service
kunafanya kazi kwa njia ile ile kama Huduma nyingine lakini kwa tofauti muhimu kwamba mwelekeo unafanyika katika kiwango cha DNS badala ya kupitia proxy au kupeleka.
Orodhesha majina yote ya Nje:
Kinyume na mifano yote hapo juu, Ingress SIO aina ya huduma. Badala yake, inakaa mbele ya huduma nyingi na inafanya kazi kama "router mwenye akili" au kiingilio katika klasta yako.
Unaweza kufanya mambo mengi tofauti na Ingress, na kuna aina nyingi za Ingress controllers ambazo zina uwezo tofauti.
Msimamizi wa ingrees wa GKE wa kawaida utaanzisha HTTP(S) Load Balancer kwa ajili yako. Hii itakuruhusu kufanya upitishaji wa msingi wa njia na wa subdomain kwa huduma za nyuma. Kwa mfano, unaweza kutuma kila kitu kwenye foo.yourdomain.com kwa huduma ya foo, na kila kitu chini ya njia ya yourdomain.com/bar/ kwa huduma ya bar.
YAML ya kitu cha Ingress kwenye GKE na L7 HTTP Load Balancer inaweza kuonekana kama hii:
Orodha ya ingresses zote:
Ingawa katika kesi hii ni bora kupata taarifa ya kila mmoja mmoja ili kuisoma vizuri:
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)