En isolationsmekanisme svarende til plegde og unveil er ved at blive udviklet til FreeBSD

For FreeBSD foreslås en implementering af en applikationsisoleringsmekanisme, der minder om plegde- og afsløringssystemets opkald udviklet af OpenBSD-projektet. Isolation i plegde opnås ved at forbyde adgang til systemopkald, der ikke bruges i applikationen, og i afsløring ved selektivt kun at åbne adgang til individuelle filstier, som applikationen kan arbejde med. Til applikationen dannes der en slags hvidliste over systemkald og filstier, og alle andre opkald og stier er forbudt.

Forskellen mellem FreeBSD-analogen af ​​plegde og unveil kommer ned til tilvejebringelsen af ​​et ekstra lag, der giver dig mulighed for at isolere applikationer uden at foretage ændringer i deres kode eller med minimale ændringer. Husk på, at i OpenBSD er plegde og unveil rettet mod tæt integration med det underliggende miljø og bruges ved at tilføje specielle annotationer til koden for hver applikation. For at forenkle organiseringen af ​​beskyttelse giver filtre dig mulighed for at undvære detaljer på niveauet for individuelle systemkald og manipulere klasser af systemkald (input/output, læsning af filer, skrivning af filer, sockets, ioctl, sysctl, processtart osv.) . Adgangsbegrænsningsfunktioner kan kaldes i applikationskoden, da visse handlinger udføres, for eksempel kan adgang til stikkontakter og filer nægtes efter åbning af de nødvendige filer og oprettelse af en netværksforbindelse.

Forfatteren af ​​port of plegde and unveil for FreeBSD har til hensigt at give mulighed for at isolere vilkårlige applikationer, for hvilke gardinværktøjet er foreslået, som giver dig mulighed for at anvende regler defineret i en separat fil til applikationer. Den foreslåede konfiguration omfatter en fil med grundlæggende indstillinger, der definerer klasser af systemkald og typiske filstier, der er specifikke for bestemte applikationer (arbejde med lyd, netværksinteraktion, logning osv.), samt en fil med adgangsregler for specifikke applikationer.

Gardinværktøjet kan bruges til at isolere de fleste umodificerede hjælpeprogrammer, serverprocesser, grafiske applikationer og endda hele desktopsessioner. Gardin kan bruges sammen med de isoleringsmekanismer, der leveres af Jail og Capsicum subsystemer. Det er også muligt at organisere indlejret isolation, når lancerede applikationer arver reglerne, der er fastsat for den overordnede applikation, og supplerer dem med individuelle begrænsninger. Nogle kerneoperationer (fejlfindingsfaciliteter, POSIX/SysV IPC, PTY'er) er desuden beskyttet af en barrieremekanisme, der forhindrer adgang til kerneobjekter, der ikke er oprettet af den nuværende eller overordnede proces.

En proces kan konfigurere sin egen isolation ved at kalde curtainctl eller ved at bruge libcurtains funktioner plegde() og unveil(), svarende til dem, der findes i OpenBSD. For at spore låse, mens applikationen kører, leveres sysctl 'security.curtain.log_level'. Adgang til X11- og Wayland-protokollerne aktiveres separat ved at angive "-X"/"-Y" og "-W"-indstillingerne, når du kører curtain, men understøttelsen af ​​grafiske applikationer er endnu ikke tilstrækkeligt stabiliseret og har en række uløste problemer ( problemer opstår hovedsageligt ved brug af X11, og Wayland-support er implementeret meget bedre). Brugere kan tilføje yderligere begrænsninger ved at oprette lokale regelfiler (~/.curtain.conf). For at tillade kun at skrive fra Firfox til ~/Downloads/-mappen, kan du tilføje en "[firefox]"-sektion med reglen "~/Downloads/ : rw +".

Implementeringen inkluderer mac_curtain-kernemodulet til obligatorisk adgangskontrol (MAC, Mandatory Access Control), et sæt patches til FreeBSD-kernen med implementering af de nødvendige handlere og filtre, libcurtain-biblioteket til brug af plegde- og afsløringsfunktioner i applikationer, gardinværktøjet, eksempler på konfigurationsfiler, et sæt tests og patches for nogle programmer i brugerrummet (for eksempel til brug af $TMPDIR til at forene arbejde med midlertidige filer). Hvor det er muligt, har forfatteren til hensigt at minimere antallet af ændringer, der kræver patches til kernen og programmer.

Kilde: opennet.ru

Tilføj en kommentar