Kjøre programmer i Secure Sandkasser med SELinux


Har du en applikasjon som du ønsker å kjøre, men uten å gi det full tilgang til resten av systemet? Velkommen til SELinux sandkasse verktøyet. I noen få relativt enkle grep kan du bokse i et program og ikke trenger å bekymre deg om det å ha full tilgang til systemet.

Jeg må innrømme, jeg har ikke alltid vært den største fan av SELinux. Syntaksen for sikkerhetsrammeverk er, skal vi si, mindre
enn brukervennlig. Egentlig kan det være direkte asosial. Være at siden det kan, kan SELinux også være veldig nyttig hvis du er villig til å slog gjennom syntaks og kompleksitet. Egentlig er syntaksen for Sandboxing en applikasjon ikke så ille, og etter å ha spilt med sandkasse for en stund, er jeg interessert i å sjekke ut SELinux mer fullstendig å se hvordan det er (og dens verktøy) utviklet seg siden sist jeg stakk den.

Du kan bruke sandkassen verktøyet til å kjøre et program i en SELinux " sandkasse " som er begrenset til lesing og skriving standard i (stdin), standard ut (stdout), og andre fildeskriptorer gått på kommandolinjen

For å si det enklere:. Programmer som kjører i en sandkasse er svært begrenset, og kan ikke lese eller skrive til filer som ikke er eksplisitt tillatt. Uten eksplisitt tillatt, de har heller ingen nettverkstilgang og så videre.

Hands on med SELinux Sandbox

Først, jeg gjør dette på en Fedora 14 system. Hvis du kjører en tidligere versjon eller en annen fordeling med SELinux, er det mulig at noen av syntaksen er endret eller hvilke typer vil se på senere ikke er til stede. Hvis du bruker Ubuntu eller opensuse, eller andre distroer som ikke har SELinux på som standard, kan du må hoppe gjennom noen ringer for å aktivere SELinux, men det er utenfor omfanget av denne artikkelen.

La oss starter med et enkelt program. La oss si at du ønsker å redigere en fil med Vim, innenfor en sandkasse. Kjør sandkasse vi filnavn
. Merk at du får en feilmelding i Vim sier " permission denied " når du prøver å redigere filen. Dette er fordi SELinux ikke ble eksplisitt fortalt om filen du ønsket å gi Vim tillatelse til.

Prøv sandkasse vi -i filnavn i stedet. Du får litt lenger, men fortsatt har feil fordi standard oppførsel av Vim er å skrive en swap-fil (. filnavn
.swp) og info fil om sin historie. Nå, det er ganske snille atferd og vi egentlig ikke har et problem med det som regel – men forutsetningen når du kjører et program i en SELinux sandkasse er at du ikke vil at den skal gjøre noe uventet

Så, leksjon en. Sandkassen er veldig effektiv. Leksjon to? Du må være ganske bestemt, fordi SELinux er svært restriktiv på hva det tillater og ikke tillater

Før vi kommer inn den riktige måten å gjøre det, la oss prøve en ting til:. Prøv å Ctrl-z ut av Vim for å få til et skall. Hva skjer? Hvis du kjører Vim innenfor en terminal på skrivebordet, skal du se et varsel i øvre høyre hjørne advarer deg om en SELinux sikkerhetsadvarsel. Klikk på SELinux-ikonet, og du vil få en praktisk dialog som forteller deg hva varselet var og hva de uakseptable søknaden prøvde å gjøre. I dette tilfellet var det en " signal " alert – Vim prøvde å sende et signal til skallet som ikke er tillatt.

gjør det riktig

Nå, la oss fyre Vim opp igjen, men med noen flere alternativer. Først oppretter en tmp og en Sehome katalog i hjemmekatalogen eller et sted praktisk. Merk at det ikke vil tillate deg å bruke /tmp, slik at du ønsker å opprette en tmp andre steder. Strengt tatt, betyr det ikke har
å bli kalt tmp, men jeg foretrekker å ha en tmp katalogen under min hjemmekatalog uansett. Nå som du har de ekstra kataloger, prøv dette:

sandkasse -M -H Sehome /-T tmp /vi


du kan lese og opprette filer som finnes i Sehome katalogen, kan og Vim skape sine midlertidige filer uten å bli stoppet av SELinux. Men, du fortsatt ikke kan bruke Ctrl-z for å få til et skall innenfra Vim

En annen ting du kanskje merke &mdash.; ting er bare litt tregere i sandkassen. SELinux legger til litt av overhead, ikke mye – men det vil være merkbar.

Kjører Firefox i en Sandbox

I særdeleshet, vil du merke en nedgang med mer komplekse grafiske applikasjoner. Men det kan være lurt å kjøre ting som Firefox i en sandkasse hvis du er veldig sikkerhet og personvern bevisst.

Nå er Firefox ganske ubrukelig uten nettverkstilgang. Den gode nyheten er at du har sandkasse typer som gir mulighet for nettsurfing. Her er hva du ønsker å kjøre for å få en Firefox økt skjer:

sandkasse -X -H Sehome -T tmp -t sandbox_web_t firefox

Her legger to ting – -X alternativet, som forteller SELinux " hei, jeg vil ha en X sandkasse, " og type (-t) alternativet som spesifiserer et sett med retningslinjer som tilbyr tjenestene (som nettverk) som Firefox trenger for å fungere i en normal måte.

SELinux kjører en Firefox i en begrenset sesjon som ikke har tilgang til resten av systemet. Som inkluderer X-sesjon. Firefox vil kjøre på en nestet X server (Xephyr), og du vil ikke være i stand til selv å kopiere & lim fra eller til Firefox økten og andre applikasjoner. Men
, betyr det også at Firefox er helt begrenset fra å lese noen andre filer på systemet ditt og at ondsinnede nettsider eller angrep på plugins som Flash er sandboxed også.

Sammendrag Anmeldelser

Dette er selvfølgelig bare toppen av isfjellet. Du kan gjøre ganske mye med en SELinux sandkasse – hvis du kan finne ut hva du vil gjøre i en sandkasse, oddsen er det kan gjøres. Vi har ikke rørt på flere, mer avanserte funksjoner ennå – som Sandboxing spesifikke Firefox plugins eller begrense ressursbruk i en sandkasse.

Hvis du bruker Fedora, Red Hat Enterprise Linux, CentOS, eller en annen distribusjon som inkluderer SELinux, bør du definitivt sjekke ut sandkassen funksjonalitet. I flere SELinux tips og tutorials interessert? Vi skal dekke mer i nær fremtid, sammen med tips om bruk av AppArmor rammeverket også. Anmeldelser