Alles werk totdat die bou-loper dieselfde gasheer-sok nodig het as wat die VPN-gas gebruik, en dan kan niemand verduidelik waarom 'n taak die poort se sleutels kan lees nie. Alles is op een masjien geïnstalleer omdat dit gepas het, en elke gas het breë toegang gekry omdat dit die vinnigste manier was om dit te laat werk. Die gevolg is 'n gasheer wie se vertrouensgrens die kragkabel is. Om die rolle te skei is minder werk as wat dit klink, en dit begin deur hulle name te gee.

Drie rolle wat tans alles deel

'n VPN-ingang, 'n stel private dienste en 'n bou-loper wil verskillende dinge hê. Die eerste het 'n openbare poort en 'n smal netwerk aan die private kant nodig. Die tweede het blywende berging en toepassingsgeheime nodig. Die derde voer kode uit wat iemand anders geskryf het.

Om al drie dieselfde toegang te gee, is wat die simptoom verwarrend maak, want daarna kan enige van hulle die ander beïnvloed. 'n Boutaak wat die hipervisor-sok kan bereik, is 'n taak wat die VPN kan stop. 'n Dienste-gas met 'n roete na die bestuurnetwerk kan skakelaarkonfigurasie verander. Die voorregte is die probleem, en die proseslys is net waar dit sigbaar word. Om die rolle eerste te benoem, gee elke voorreg 'n plek om te woon.

Die skets hieronder is 'n beginpunt vir daardie skeiding eerder as 'n belofte van hoë beskikbaarheid. Behandel dit as 'n hipotese om te verifieer, nie as die voltooide ontwerp nie.

Skei drie rolle, nie drie prosesse nie

Drie gaste op een gasheer gee drie voorregstelle en drie netwerkposisies. Hulle gee nie drie foutdomeine nie, en die ontwerp moet dit hardop sê.

Die skeiding help net as 'n inbreuk in een gas nie outomaties die ander voorregte gee nie, en dit is 'n hipervisor-instelling eerder as 'n naamgewente. Om 'n VM 'n poort te noem, keer nie 'n ander gas om die gasheer te bereik nie. Lees die virtuele skakelaar se konfigurasie eerder as die gasheernaam en bevestig dan dat elke gas sit waar jy dink dit sit.

host
├─ vpn-gw      10.60.10.2/24   public 51820/udp only
├─ services    10.60.0.10/24   no route to the management network
└─ ci-runner   10.60.20.2/24   outbound only, no host socket

Skryf die topologie neer en verifieer dit dan met die gereedskap wat dit besit. 'n Gas wat op die verkeerde brug verskyn, is 'n bevinding eerder as 'n detail. Korrigeer die netwerk voordat jy enige dienskonfigurasie verander.

Laat die VPN-gas net die deure oopmaak wat hy besit

Publiseer die tonnelpoort by die roeteerder en niks anders nie. Gasbestuurspoorte hoort op 'n bestuurspad, nie op die internet nie, en die hipervisor se eie koppelvlak hoort ook daar.

Die netwerk aan die private kant moet die dienste bereik wat afgeleë gebruikers nodig het en daar stop. Toepassingsverifikasie bly aangeskakel, want 'n tonnel is vervoer en nie 'n aanmelding nie. Hou die VPN-gas se roetetabel klein genoeg om in een sin te beskryf. As jy dit nie so eenvoudig kan beskryf nie, het die grens al vervaag.

virsh net-list --all
virsh net-dumpxml lab-private
sudo nft list ruleset | grep -n -E '51820|10.60'

Enigiets wat op die gasheer luister en nie vir bestuur nodig is nie, behoort glad nie te luister nie. Dit sluit die hipervisor-API in, wat maklik op 'n openbare koppelvlak oopgelaat word.

Boutake het 'n ander soort grens nodig

'n CI-taak voer opdragte uit wat deur die bewaarplek beheer word, so die vertroue daarvan hang af van wie kode kan stoot. 'n Skel-uitvoerder voer daardie opdragte as die loper se gebruiker op die gasheer uit, en dit is die wydste grens wat beskikbaar is.

Houer-uitvoerders is smaller, en 'n bevoorregte houer is nie een van die smal een nie. Hou die loper in sy eie gas met sy eie netwerkbestek, en gee dit net die artefak- en ontplooiingstoegang wat die take nodig het. Weggooibare werkers verminder die bewaarde toestand; hulle verminder nie bereikbaarheid of blootstelling van geheime nie. Albei het steeds uitdruklike grense nodig.

Die dienste-gas besit die data, so sy rugsteunplan is die een wat moet werk. Hou bewaarplekke, oplaaisels en die databasis in dieselfde skedule. Toets 'n herstel in plaas daarvan om die taakstatus te lees.

Beplan vir die fout wat al drie deel

Een gasheer is een foutdomein. 'n Herbegin verwyder die tonnel en elke private diens op dieselfde oomblik, en dit is juis wanneer 'n weg in die meeste saak maak.

Hou konsoltoegang wat nie van die VPN-gas afhang nie, of dit 'n fisiese konsole, 'n buiteband-bestuurskoppelvlak of 'n verskafferkonsole is. 'n Momentopname wat op dieselfde skyf gestoor word, is nie 'n onafhanklike kopie nie, en 'n rugsteun wat in die gas self loop wat dit beskerm, ook nie. Toets dan koue begin as 'n reeks eerder as 'n kontrolelys: gasheer, virtuele netwerke, tonnelpad en een genoemde toepassing onder 'n gewone rekening.

virsh list --all
systemctl is-active libvirtd
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://10.60.0.10/
ss -ltnp | grep -E ':51820|:443'

Die volgorde van prosesbeginsels bewys niks oor roetes en DNS nie, so toets die pad eerder as die eenheidstoestande. Die pad is wat 'n afgeleë gebruiker werklik nodig het.

Verwante artikels