En isolasjonsmekanisme som ligner plegde og unveil er under utvikling for FreeBSD

For FreeBSD er det foreslått en implementering av en applikasjonsisolasjonsmekanisme, som minner om plegde- og avsløringssystemet utviklet av OpenBSD-prosjektet. Isolering i plegde oppnås ved å forby tilgang til systemanrop som ikke brukes i applikasjonen, og i avduking ved selektivt å åpne tilgang kun til individuelle filstier som applikasjonen kan jobbe med. For applikasjonen dannes det en slags hvitliste over systemanrop og filstier, og alle andre anrop og stier er forbudt.

Forskjellen mellom analogen til plegde og unveil som utvikles for FreeBSD kommer ned til å tilby et ekstra lag som lar deg isolere applikasjoner uten å gjøre endringer i koden eller med minimale endringer. Husk at i OpenBSD er plegde og unveil rettet mot tett integrasjon med det underliggende miljøet og brukes ved å legge til spesielle merknader til koden til hver applikasjon. For å forenkle organiseringen av beskyttelsen lar filtre deg slippe detaljer på nivået til individuelle systemanrop og manipulere klasser av systemanrop (input/output, lesing av filer, skriving av filer, sockets, ioctl, sysctl, prosessstart, etc.) . Tilgangsbegrensningsfunksjoner kan kalles opp i applikasjonskoden ettersom visse handlinger utføres, for eksempel kan tilgang til stikkontakter og filer nektes etter å ha åpnet de nødvendige filene og opprettet en nettverkstilkobling.

Forfatteren av port of plegde and unveil for FreeBSD har til hensikt å gi muligheten til å isolere vilkårlige applikasjoner, som gardinverktøyet er foreslått for, som lar deg bruke regler definert i en egen fil på applikasjoner. Den foreslåtte konfigurasjonen inkluderer en fil med grunnleggende innstillinger som definerer klasser av systemanrop og typiske filstier som er spesifikke for visse applikasjoner (arbeid med lyd, nettverksinteraksjon, logging osv.), samt en fil med tilgangsregler for spesifikke applikasjoner.

Gardinverktøyet kan brukes til å isolere de fleste umodifiserte verktøy, serverprosesser, grafiske applikasjoner og til og med hele skrivebordsøkter. Gardin kan brukes sammen med isolasjonsmekanismene som tilbys av undersystemene Jail og Capsicum. Det er også mulig å organisere nestet isolasjon, når lanserte applikasjoner arver reglene som er satt for overordnet applikasjon, og supplerer dem med individuelle begrensninger. Noen kjerneoperasjoner (feilsøkingsfasiliteter, POSIX/SysV IPC, PTY-er) er i tillegg beskyttet av en barrieremekanisme som forhindrer tilgang til kjerneobjekter som ikke er opprettet av gjeldende eller overordnet prosess.

En prosess kan konfigurere sin egen isolasjon ved å kalle curtainctl eller ved å bruke libcurtains plegde() og unveil() funksjoner, lik de som finnes i OpenBSD. For å spore låser mens applikasjonen kjører, leveres sysctl 'security.curtain.log_level'. Tilgang til X11- og Wayland-protokollene er aktivert separat ved å spesifisere "-X"/"-Y" og "-W" alternativene når du kjører gardin, men støtte for grafiske applikasjoner er ennå ikke tilstrekkelig stabilisert og har en rekke uløste problemer ( problemer oppstår hovedsakelig ved bruk av X11, og Wayland-støtte er implementert mye bedre). Brukere kan legge til ytterligere begrensninger ved å lage lokale regelfiler (~/.curtain.conf). For å tillate skriving fra Firfox bare til ~/Downloads/-katalogen, kan du for eksempel legge til en "[firefox]"-seksjon med regelen "~/Downloads/ : rw +".

Implementeringen inkluderer mac_curtain-kjernemodulen for obligatorisk tilgangskontroll (MAC, Mandatory Access Control), et sett med patcher for FreeBSD-kjernen med implementering av nødvendige behandlere og filtre, libcurtain-biblioteket for bruk av plegde- og avdukingsfunksjoner i applikasjoner, gardinverktøyet, eksempler på konfigurasjonsfiler, et sett med tester og patcher for noen programmer i brukerområdet (for eksempel for å bruke $TMPDIR for å forene arbeid med midlertidige filer). Der det er mulig, har forfatteren til hensikt å minimere antallet endringer som krever oppdateringer til kjernen og applikasjoner.

Kilde: opennet.ru

Legg til en kommentar