To URL-er kan se identiske ut fra en peers nettleser og likevel bety svært forskjellige ting for brannmuren. Den ene peker på en tjeneste som lytter på verten selv. Den andre peker på en vertsadresse der porten er publisert inn i et containernettverk, hvor et oversettelsestrinn overlater forbindelsen til en annen IP. I et peer-til-peer-mesh som styrer tilgangen til det lokale nettverket med en tillatelse per peer, er den forskjellen hele gjennomgangen.

Tillatelsen handler om vertsendepunktet, oversettelsen handler om Docker, og innloggingen handler om applikasjonen. Tre beslutninger, tre steder å se.

Følg destinasjonen etter publisering

Ta en Linux Docker-vert som publiserer en containers port 80 på vertsport 8080. En peer kobler til vertens mesh-adresse på 8080, verten godtar forbindelsen, og en destinasjonsoversettelse skriver den om mot containerens bro-adresse, vanligvis noe som 172.17.0.2 på port 80.

Når en regel undersøker den strømmen, er den interessante destinasjonen containeren, ikke verten. En policy som bare resonnerer om «en tjeneste på denne maskinen», resonnerer om feil objekt. Forespørselen landet på verten, men den leveres et annet sted.

Derfor lister mesh-dokumentasjonen opp Docker-containere blant ressursene som tillatelsen for lokalt nettverk styrer på Linux. Tillatelsen er ikke et synonym for en vanlig oppføring i en VPN-tillatelsesliste, og de to kontrollene erstatter ikke hverandre. Den ene avgjør om en peer i det hele tatt kan nå lokale ressurser; den andre avgjør hvilke destinasjoner en tunellert rute bærer.

Avgjør hvor mye lokal tilgang en tillatelse gir

Å gi en peer tilgang til det lokale nettverket er ikke en beslutning om én container. Det kan eksponere andre publiserte tjenester på samme vert, og det kan nå lenger avhengig av hvordan verten videresender. Vurder det effektive omfanget før du klikker på bryteren for ett dashbord.

Se deretter hvor Docker publiserer porten. En publisering på 0.0.0.0 oppretter en lytter på hver vertsadresse, noe som kan legge til en vanlig LAN-oppføring ved siden av mesh-oppføringen. Hvis kravet bare er mesh, bind publiseringen til den bestemte adressen eller grensesnittet du sikter til, og behandle den bredere bindingen som et eget funn i stedet for en bekvemmelighet.

Hold vertens videresendingspolicy og applikasjonens egen autentisering trang nok for tjenesten. En URL som ser privat ut, er ikke tilgangskontroll, og en container som stoler på hver kilde på bronsettverket sitt, er ikke beskyttet av at mesh-peeren ble godkjent. Applikasjonens autentisering er den tredje beslutningen, og den er den eneste som vet hvem brukeren er. En tillatelse på vertsnivå kan ikke gi den kunnskapen.

Test tillatelsen, ikke bare URL-en

Fra den godkjente peeren, åpne den nøyaktige tjenesten og bekreft at den virker. Prøv deretter en destinasjon som skal forbli avvist, og bekreft at den ikke virker. Å teste bare den glade veien forteller deg at tillatelsen ble gitt; det forteller deg ikke at grensen er der du tror.

Sammenlign en vertsnativ tjeneste separat. Hvis en database lytter på verten og et dashbord kjører i en container, følger de ulike veier gjennom den samme tillatelsen og styres kanskje ikke likt av vertens videresendingspolicy. Noter hva som er hva før du skriver gjennomgangsnotatet.

Ikke tøm Dockers tabeller eller mesh-klientens regler for å «nullstille» tilgang. Begge produktene installerer sin egen policyintegrasjon, og å fjerne den gir en vert som ser ut til å virke mens den omgår kontrollene du ble bedt om å vurdere. Hvis en regel ser feil ut, les den og endre nettopp den regelen. Hvis du ikke kan forklare hva en regel gjør, er det funnet, ikke en grunn til å slette den.

Skriv funnet i systemets egne termer

Det som betyr noe, er skillet produktet faktisk håndhever, ikke det i gjennomgangsmalen: tillatelse til å nå et vertsendepunkt, tillatelse til å nå rutede private ressurser og tillatelse til å bruke applikasjonen. Å publisere en port lar de tre beslutningene stå nøyaktig der de var, og en gjennomganger som behandler dem som én, vil godkjenne feil omfang.

Oppgi vertsadressen, den publiserte porten, containerens destinasjon og peer-tillatelsen i samme setning. Den setningen kan testes av noen andre, og det er det som gjør den til et funn i stedet for en mening.

Relaterte artikler