Ĉio funkcias ĝis la konstrua rulilo bezonas la saman gastigilan ingon, kiun uzas la VPN-gasto, kaj tiam neniu povas klarigi, kial tasko povas legi la ŝlosilojn de la enirejo. Ĉio estis instalita sur unu maŝino ĉar ĝi taŭgis, kaj ĉiu gasto ricevis larĝan aliron ĉar tio estis la plej rapida maniero funkciigi ĝin. La rezulto estas gastigilo, kies fida limo estas la elektra kablo. Disigi la rolojn postulas malpli da laboro ol ĝi sonas, kaj ĝi komenciĝas per nomi ilin.

Tri roloj, kiuj nun kunhavas ĉion

Enirejo VPN, aro de privataj servoj kaj konstrua rulilo volas malsamajn aferojn. La unua bezonas publikan pordon kaj mallarĝan reton ĉe la privata flanko. La dua bezonas daŭran konservadon kaj aplikaĵajn sekretojn. La tria plenumas kodon, kiun iu alia skribis.

Donar al ĉiuj tri la saman aliron estas tio, kio igas la simptomon konfuza, ĉar tiam iu ajn el ili povas efiki la aliajn. Konstrua tasko, kiu povas atingi la ingon de la hipervizoro, estas tasko, kiu povas haltigi la VPN-on. Gasto de servoj kun itinero al la administra reto povas ŝanĝi la agordon de la ŝaltilo. La privilegioj estas la problemo, kaj la proceza listo estas nur la loko, kie ĝi montriĝas. Nomi la rolojn unue donas al ĉiu privilegio lokon por vivi.

La skizo sube estas komenca punkto por tiu disigo, ne promeso pri alta havebleco. Traktu ĝin kiel hipotezon por kontroli, ne kiel la finan dezajnon.

Disigu tri rolojn, ne tri procezojn

Tri gastoj sur unu gastigilo donas tri privilegiajn arojn kaj tri retajn poziciojn. Ili ne donas tri fiaskajn domajnojn, kaj la dezajno devus tion laŭte diri.

La disigo helpas nur se kompromiso en unu gasto ne aŭtomate donas privilegiojn al la aliaj, kaj tio estas agordo de la hipervizoro, ne nomiga konvencio. Nomi VM-on enirejo ne malhelpas alian gaston atingi la gastigilon. Legu la agordon de la virtuala ŝaltilo anstataŭ la gastigilan nomon, poste konfirmu, ke ĉiu gasto sidas tie, kie vi pensas.

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

Skribu la topologion kaj poste kontrolu ĝin per la iloj, kiuj posedas ĝin. Gasto, kiu aperas sur la malĝusta ponto, estas trovitaĵo, ne detalo. Korektu la reton antaŭ ol ŝanĝi ajnan servan agordon.

Lasu la VPN-gaston malfermi nur la pordojn, kiujn ĝi posedas

Publikigu la tunelan pordon ĉe la enkursigilo kaj nenion alian. Gastaj administraj pordoj apartenas al administra vojo, ne al la interreto, kaj la propra interfaco de la hipervizoro ankaŭ apartenas tien.

La reto ĉe la privata flanko devus atingi la servojn, kiujn bezonas malproksimaj uzantoj, kaj halti tie. Aplikaĵa aŭtentigo restas ŝaltita, ĉar tunelo estas transporto, ne ensaluto. Tenu la itinertabelon de la VPN-gasto sufiĉe malgranda por priskribi ĝin per unu frazo. Se vi ne povas priskribi ĝin tiel simple, la limo jam malklariĝis.

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

Ĉio, kio aŭskultas sur la gastigilo kaj ne necesas por administrado, tute ne devus aŭskulti. Tio inkluzivas la API-on de la hipervizoro, kiun estas facile lasi elmetita sur publika interfaco.

Konstruaj taskoj bezonas alian specon de limo

CI-tasko rulas komandojn kontrolitajn de la deponejo, do ĝia fido dependas de tio, kiu povas puŝi kodon. Ŝela plenumilo rulas tiujn komandojn kiel la uzanto de la rulilo sur la gastigilo, kaj tio estas la plej larĝa havebla limo.

Konteneraj plenumiloj estas pli mallarĝaj, kaj privilegia kontenero ne estas unu el la mallarĝaj. Tenu la rulilon en sia propra gasto kun sia propra reta amplekso, kaj donu al ĝi nur la artefaktan kaj deplojan aliron, kiun la taskoj bezonas. Forĵeteblaj laborantoj malpliigas la konservitan staton; ili ne malpliigas atingeblon aŭ elmeton de sekretoj. Ambaŭ ankoraŭ bezonas eksplicitajn limojn.

La gasto de servoj posedas la datumojn, do ĝia sekurkopia plano estas tiu, kiu devas funkcii. Tenu deponejojn, alŝutojn kaj la datumbazon en la sama horaro. Testu restaŭron anstataŭ legi la taskan staton.

Planu por la fiasko, kiun ĉiuj tri kunhavas

Unu gastigilo estas unu fiaska domajno. Restartigo forigas la tunelon kaj ĉiun privatan servon en la sama momento, kaj ĝuste tiam vojo enen plej gravas.

Konservu konsolan aliron, kiu ne dependas de la VPN-gasto, ĉu fizika konzolo, ĉu administra interfaco ekster bando, ĉu provizanta konzolo. Stupro konservita sur la sama disko ne estas sendependa kopio, kaj nek estas sekurkopiaĵo, kiu rulas ene de la gasto, kiun ĝi protektas. Poste testu malvarman starton kiel sinsekvon, ne kiel kontrolan liston: gastigilo, virtualaj retoj, tunela vojo kaj unu nomita aplikaĵo sub ordinara konto.

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'

La ordo de procesaj startoj pruvas nenion pri itineroj kaj DNS, do testu la vojon anstataŭ la statojn de la unuoj. La vojo estas tio, kion malproksima uzanto efektive bezonas.

Rilataj artikoloj