Sikkerhetsprosedyrer må minimere privilegier, for å redusere feilen på muligheten for sikkerhetshull. Denne artikkelen drøfter hvordan du minimere privilegerte moduler, privilegier og privilegier som er tildelt den effektive tid til å minimere privilegier.
Artikkel ikke bare tar for seg noen av de tradisjonelle UNIX privilegert klasse av mekanismer, diskuterte også den relativt nye mekanismer, slik som FreeBSD's fengsel (), Linux Security Module (Linux Security Modules, LSM) rammeverk, og Security-Enhanced Linux (SELinux).
3 mars 2003, advarte Internet Security Systems på Sendmail i en alvorlig sårbarhet. All e-post gjennom meldingen Transfer Agent (Mail Transfer agent, MTA) til å overføre, er Sendmail mest populære MTA, så denne advarselen påvirket mange organisasjoner over hele verden. Problemet er, i henhold til vanlige konfigurasjonen, nøye sette det "fra", "til" eller "cc" feltet e-postmeldinger kan avsenderen komplett (rot) kontroll av en maskin som kjører Sendmail. Mer alvorlig, vil den generelle brannmuren beskytter ikke mot slike angrep inne i maskinen.
Den direkte årsaken til dette, fordi smutthull, Sendmail har en garanti feil gjenkjenning, kan buffer overflow oppstå. Men en viktig rolle faktorer, er Sendmail installeres ofte som et enkelt «setuid root" program, kjøre den på systemet har full kontroll tillatelser. Dette, Sendmail feil i noen av dem som kan gi en angriper direkte kontroll av hele systemet.
Dette designet er nødvendig? Nei, Wietse Venema er Postfix er en vanlig kan matche det er MTA. Som Sendmail, Postfix vil gjøre mye av sikkerhet testing, men for å minske privilegier, Postfix utformet som et sett av moduler. Resultatene er Postfix generelt anses mer sikker enn Sendmail programmet. Denne artikkelen drøfter hvordan du minimere privilegier, kan du bruke den samme tenkning til ditt program.
Minimer grunnlag av privilegium
Praktisk anvendelse av prosedyrene har mangler. Har vi virkelig ønsker det, men egentlig er det. Sammensatte behov, planlegge press og endringer i miljøet er usannsynlig å være praktisk så feilfri prosess. Selv de som har passert kompliserte og avanserte teknologi for å formelt bevise riktig prosedyre, blir det feil. Hvorfor? En av grunnene er at verifikasjon må gjøres en rekke forutsetninger, og ofte disse forutsetningene er ikke helt riktig. I alle fall, av ulike grunner hadde de fleste av prosedyrene ikke er en streng test. Videre, selv i dag er det ingen mangel (usannsynlig), er fremtidig vedlikehold av endringen eller endringer i miljøet vil trolig innføre feil. Så, for å håndtere praktiske problemer, har vi noen måte å utvikle sikkerhetsprosedyrer, til tross for feil i programmet vårt.
Til tross for disse svakhetene, er sikkerheten programmet den viktigste måten er å minimere privilegium. Privilege ikke bare la alle kan gjøre. UNIX-systemer i klassen, med "root" bruker, andre brukere eller medlemmer av en gruppe av privilegier er den vanligste typer privilegier. Noen systemer lar deg gi lese eller skrive privilegier til bestemte filer. Men uansett, for å minimere privilegier:
Bare en del av programmet trenger privilegier og privilegier
Bare en del av det er absolutt nødvendig å gi bestemte privilegier
Rettighetene til den effektive tid eller kan være effektivt begrenses til det absolutte minimum tid
Faktum er målet, ikke absolutt. Grunnlaget for din organisasjon (som for eksempel operativsystemet eller virtuell maskin) kan gjøre strenge ferdigstillelse av disse er ikke lett, eller den strenge fullføring av disse kan være svært komplisert, noe som førte til ferdigstillelse av å prøve å innføre strengere defekt. Men jo nærmere du bort fra disse målene, muligheten for feil føre til lavere sikkerhetsproblemer. Selv om feilen hadde sikkerhetsproblemer, noe som førte til at sikkerheten problemet kan bli enda lavere. Og hvis du kan sikre at bare en liten del av programmet har spesielle privilegier, kan du bruke mye ekstra tid for å sikre den del som tåler angrep. Denne ideen er ikke ny, Saltzer og Schroeder utmerkede 1975 papir drøftet prinsippene for sikkerhet, eksplisitt som et prinsipp for minimum rettighet (se Ressurser). Noen ideer er tidløse, som minimerer privilegium.
De neste tre seksjoner vil diskutere disse målene i sin tur, inkludert hvordan å oppnå sine klasse UNIX-systemer. Deretter vil vi diskutere FreeBSD og Linux på noen spesielle mekanismer tilgjengelig, inkludert NSA's Security-Enhanced Linux (SELinux) diskusjon.
Minimer privilegert moduler
Som nevnt tidligere, bare for å bli privilegerte del av programmet kun brukes privilegert. Det er, når du utformer programmet, kan du prøve å behandle delt opp i separate deler, for å gjøre bare en liten og selvstendig del av behovene til spesifikke privilegier.
Hvis ulike deler må kjøres, deretter bruker UNIX-system prosesser (ikke tråder). Tråder dele sikkerhetsrettigheter, kan tråden aktuelle forstyrre prosessen med alle de andre trådene. Privilegerte del av forberedelsene, på de andre programmene som det er å bli angrepet: en dag vil bli! Sikre at privilegerte del av det eneste å gjøre så lite som mulig; begrenset funksjonalitet betyr mindre sannsynlighet for å bli brukt.
En vanlig metode er å skape en svært begrenset funksjon har bestemte privilegier (for eksempel en setuid eller setgid) kommandolinjeverktøy. UNIX er passwd-kommandoen er et eksempel, det er et bestemt privilegium kommandolinjeverktøy for å endre passord (setuid rot), men den kan gjøre er å endre passordet. Så kan be om en rekke grafiske verktøy for å gjøre den faktiske endringen passwd. Hvis mulig, prøv å fullstendig unngå å skape setuid eller setgid program, er det vanskelig å sikre at du er virkelig beskytte alle innspill. Men noen ganger må du opprette en setuid / setgid programmer, så når det er nødvendig, å så langt som mulig behandle den minste og mest begrenset.
Det er mange andre måter. For eksempel kan du ha en spesiell anledning til en liten "server (server)"-prosessen, at serveren tillater bare bestemte forespørsel, men kun bekreftet at forespørselen er tillatt å utstede forespørselen. En annen vanlig metode er å begynne å bruke privilegiene til et program, programmet så kommer til å gi opp alle rettighetene til den andre prosessen, prosessen ved å gjøre det meste av arbeidet.
Vær forsiktig med hvordan disse modulene kommuniserer med hverandre. I mange UNIX-systemer, kommandolinje-verdi og miljø kan sees av andre brukere, så det er ikke i ferd med å sende data mellom hemmeligheten bak en god måte. Rørledningen kan være kompetent, men for å unngå den fastlåste situasjonen nøye (to endene kan oppdatere en enkel forespørsel / respons protokoll kan være kompetente).
Minimer privilegier
For å sikre at du kun trenger å gi privilegier til å gjøre inngrepet - stopp her. UNIX viktigste måten å få privilegier som de kjøres som en bruker eller gruppe. Vanligvis er prosessen bruke deres kjører som brukere og grupper, men "setuid" eller "setgid" programmet vil ha programmet brukeren eller gruppen privilegier.
Dessverre er det noen ufrivillige måte å programmere "setuid root" privilegier på UNIX-systemer utviklere. Utviklerne tror de gjør ting for seg selv å bli "lett" fordi de ikke går i dybden hensyn til deres prosedyrer er et klart behov for noen spesielle privilegier. Problemet er, siden de fleste av disse programmene skal gjøres klasse UNIX-systemer gjøre nesten alt, slik at eventuelle feil kan fort bli en sikkerhetsrisiko katastrofe.
Ikke bare fordi du trenger for å fullføre en enkel oppgave å gi alle mulige rettigheter. Prosedyren skal kun gis privilegier de trenger. Hvis du kan, å setgid å kjøre dem, ikke bruke setuid - setgid privilegier mindre. Lag en bestemt bruker og gruppe (ikke bruker root), og bruk dem i henhold til dine behov. For å sikre at de som eies av root kjørbar bare av root å skrive, slik at andre ikke kan endre dem. Filrettigheter satt meget strenge - om ikke absolutt nødvendig, ikke la alle kan lese eller skrive filer, og bruke disse bestemte brukere og grupper. Kan forklare alle disse spillene kan være et eksempel på "topp ti" score til vanlig praksis. Mange prosedyrer er "setgid spill", for å gjøre bare spillet programmet kan endres "topp ti" score, og scorene til dokumenter som er lagret i master-gruppen er spill (og bare denne gruppen kan skrive). Selv om angriperen angrepet og gikk inn i et spill program, alt han kunne gjøre ville være modifisere resultatet av dokumenter. I alle fall, spillutviklere må fortsatt skrive programmene sine for å hindre skadelig score fil.
chroot () systemkall er et nyttig verktøy - dessverre er det noen vanskelige å bruke. Når prosessen se filen system "root", vil dette systemet kalle endre prosessen for å se innholdet. Hvis du har tenkt å bruke det - og det kan være nyttig - for å være klar til å ta litt tid å gjøre god bruk av den. Må være nøye forberedt "nye root", noe som er komplisert fordi den nøyaktige programmet avhenger av plattform og applikasjon egenskaper. Du må være rot, å være chroot () ringe, og du bør raskt endre statusen for ikke-root (root brukere fra chroot-miljø, så hvis det er å tre i kraft, må du løfte det privilegium). Og chroot vil ikke endre nettverkstilgang. Dette kan være et nyttig system samtaler, alt noen ganger behov for å vurdere det, men innsatsen for å gjøre det bra forberedt.
Begrensede ressurser er et ofte glemt verktøyet, som inkluderer både prosessen med lagringsressurser, inkludert ressurser. Disse restriksjonene denial of service angrep er spesielt nyttig:
Lagring for, kan du angi for hver bruker eller gruppe for hver monterte filsystemet eller fil nummer lagringsplass (grense). I GNU / Linux-system, se kvote (1), quotactl (2) og quotaon (8) til inngående forståelse av denne funksjonen, men der selv om de ikke kan bruke de fleste av klassen av UNIX-systemer omfatter kvotesystemet. I GNU / Linux og mange andre systemer, kan du sette "harde" grenser (aldri overstige) og "myke" begrensninger (som kan være midlertidige overkant).
Prosessen er, kan du sette flere grenser, for eksempel antall åpne filer, antall prosesser, og så videre. Denne funksjonen er faktisk en del av standarden (for eksempel en enkelt UNIX Specification (Single UNIX Specification)), alle i klassen UNIX-systemer nesten allestedsnærværende, å forstå, se getrlimit (2), setrlimit (2) og getrusage ( 2), sysconf (3) og ulimit (1). Prosess kan aldri overstige den "nåværende line", men de kan begrense helt å stige til dagens "cap". Dessverre er det en anomali begrep problemer kan gjøre deg forvirre. "Gjeldende line" er også kjent som "myke" grenser, grensen, også kjent som "harde" grenser. På denne måten vil du være i en uvanlig situasjon, kan prosessen aldri overstige grensene av prosessen med myke (dagens) grenser - og du kan overskride myke kvote er. Jeg foreslår å begrense prosessen med å bruke begrepet «gjeldende linje" og "cap" (aldri bruker begrepet "myke" og "hard"), slik at det skulle være noe forvirret.
Minimere tiden privilegium
Men først da pålagt å gi privilegier - gir ikke et øyeblikk.
Når det er mulig, bruker uansett hva ditt umiddelbare behov, privilegier, og deretter gi dem permanent. Når de har blitt permanent forlatt, så angriper kan ikke på annen måte gjøre bruk av slike privilegier. For eksempel vil behovet for individuelle root privilegier rot, prosedyren kan starte (for eksempel gjennom en setuid root) og deretter bytte til mindre priviligerte brukeren til å kjøre. Dette er antallet Internett-servere (inkludert Apache web server) metodene som brukes. Klasse UNIX-systemer tillater ikke noe program å åpne 0 到 1024 TCP / IP-port, må du ha root privilegier. Men de fleste servere bare trenger å åpne porter oppstart, etter at privilegiet var ikke lenger trenger. En måte er å kjøre som root, så snart som mulig å åpne priviligerte porter som trengs, og deretter fjerne roten privilegier (inkludert prosessen tilhører en privilegert gruppe). Skal prøve å fjerne alle andre arvet privilegier, for eksempel stengt så snart som mulig må bestemte privilegier for å åpne filen.
Hvis du ikke kan permanent gi opp privilegier, så kan du i det minste midlertidig fjerning av privilegier så ofte som mulig. Dette er bedre enn permanent fjerning av privilegier, for hvis en angriper kan styre programmet, kan angriperen reaktivere privilegium og bruke den. Likevel er det verdt å gjøre.
Mange angrep bare når de har privilegiet av å lure fremgangsmåten for å gjøre noen ting utenfor programmet og programmet privilegier er aktivert for å lykkes (for eksempel ved å opprette en symbolsk lenke anomali og harde lenker). Dersom programmet vanligvis ikke gjøre sine privilegier, da angriperen ønsker å dra nytte av dette programmet vil bli vanskeligere.
Relativt ny mekanisme
Så langt har vi diskutert de prinsipper som faktisk gjelder for nesten alle operativsystemer, og, siden det 19. århundre, 70, nesten alle i klassen av UNIX-systemer likner på konvensjonelle mekanismer. Det betyr ikke at de er ubrukelige, enkel og tidens tann er deres egen fordel. Har imidlertid noen relativt ny klasse av UNIX-systemer økt til støtte Least Privilege mekanismen, er det verdt å vite. Selv om det er lett å finne tid-testet mekanisme, men på den relativt nye mekanismen for informasjon ennå ikke kjent. Så, her vil jeg drøfte noen verdifulle mekanisme valgt: FreeBSD fengsel (), Linux Security Module (LSM) rammeverket og Security-Enhanced Linux (SELinux).
FreeBSD fengsel ()
chroot () systemkall har mange problemer, som nevnt ovenfor. For eksempel er det vanskelig å rette opp bruke, kan brukeren root likevel lære fra, men det hverken nettverkstilgang. FreeBSD utviklerne bestemte seg for å legge til et nytt system samtale for å løse disse problemene, kalle det nye systemet heter fengsel (). Denne samtalen er lik chroot (), men prøv å bruke mer effektiv bruk av og mer. I et fengsel, er alle forespørsler (selv roots) begrenset fengsel, og fengsel i prosessen kan bare kommunisere med andre prosesser, og systemet blokkert root brukeren forsøker å fengselet veien fra det typiske. fengsel vil bli tildelt en bestemt IP-adresse, kan ikke bruke noen annen adresse som sin egen adresse.
fengsel () samtale er unik for FreeBSD, noe som begrenser nytteverdien. Men alle OSS / FS har mye crossover mellom virkningen av kernel (krysspollinering). For eksempel har bruk av Linux sikkerhetsramme blitt utviklet for Linux-versjon av et fengsel. Videre har FreeBSD 5 lagt til en fleksibel MAC ramme (fra TrustedBSD prosjektet), herunder de grunnleggende funksjonene i en modul som ligner SELinux. Alle, til i fremtiden se mer av denne situasjonen bør ikke bli overrasket.
Linux Security Module (LSM)
I 2001 Linux Kernel Summit på, har Linus Torvalds et problem. En rekke forskjellige sikkerhet prosjekter, inkludert Security-Enhanced Linux (SELinux)-prosjektet, ber ham om å legge deres sikkerhet metoder til Linux-kjernen. Problemet er at disse ulike metodene er ofte inkompatible. Torvalds er ingen enkel måte å finne ut hvilken som er best, så han spurte disse prosjektene sammen for å skape en felles Linux sikkerhetsramme. Så, kan administratoren gi dem noen spesielle installasjonsmetode de ønsker sikkerhet. Etter flere diskusjoner med Torvalds, Crispin Cowan sette opp en gruppe for å opprette felles sikkerhet rammeverket. Dette rammeverket er kalt Linux Security Module (LSM) rammeverk, er det nå en del av standard Linux-kjernen (som 2.6-versjonen av kjernen).
Konseptuelt, er LSM rammeverk spesielt enkel. Linux-kjernen er fortsatt gjør sitt rutinemessig sikkerhets inspeksjon; eksempel, hvis du skriver en fil, må du likevel har skrivetilgang til.
Men når det er nødvendig hvis Linux-kjernen bør tillate tilgang for å avgjøre om den skal sjekkes - av en "bok" til å kreve en sikkerhetsmodul å utføre - for å avgjøre om tillatelse handlingen. På denne måten kan administratorer enkelt velge at han ønsker å bruke sikkerhetsmodulen, og det samme som andre Linux-kjernen modul inn. Siden da, vil sikkerhetsmodulen bestemme hva som er tillatt.
LSM rammeverk utformet for å være så fleksibel at den kan oppnå mange ulike typer sikkerhetspolicyer. Faktisk, til en rekke ulike prosjekter sammen sørge for at tilstrekkelig kompetente LSM rammen av det virkelige arbeidet. For eksempel når den interne objektet opprettes eller slettes når LSM inn i en rekke samtaler - er ikke fordi disse operasjoner kan bli suspendert, men for å sikkerhetsmodulen kan holde orden på viktige data. Ved hjelp av en rekke ulike analytiske verktøy for å sikre at LSM rammeverket ikke gå glipp av viktige forandringer av deres mål gren. Resultatene viser at prosjektet enn mange mennesker tror hardere, og dens suksess er hardt vunnet.
LSM er nødvendig for å forstå den grunnleggende designen vedtak. I utgangspunktet var LSM rammeverk utformet for nesten alle bransjer er begrensede unntak, ikke pålitelige (autoritativ). Branch å lage en troverdig unormal absolutt endelige vedtak: Dersom unntaket er den grenen som en anmodning bør tillates, vil det være betingelsesløst tillatt. Tvert om, kan bare øke troverdigheten til det unormale grenen av andre restriksjoner, den kan ikke gi nye rettigheter. Teoretisk sett, hvis alle grener er troverdig unormale LSM, LSM rammeverket vil være mer fleksibel. Én kalt stand () unntak avslaget er klarert - men bare fordi det hadde å støtte POSIX kapasitet. Men, kan brevet utgjøre hele unormal grenene, er det nødvendig å Linux-kjernen, mange grunnleggende endringer, sier endringen er ikke tillatt å bli akseptert.
Mange frykter at hvis de fleste av de unormale grenen kan tro, selv den minste feil vil bli en katastrofe, og la unntaket grenen er begrenset betyr at brukerne ikke vil bli overrasket (I alle fall den opprinnelige UNIX tillatelser fortsatt arbeid) . LSM rammeverk slik at utviklere som ønsker å begrense metoden, og det er de fleste utviklere innenfor rammen av selvtillit at de kan arbeide.
LSM rammeverk for å forstå andre restriksjoner er også viktig. LSM rammeverket er utformet for å støtte tilgangskontroll, revisjon og andre sikkerhetsproblemer ikke er. LSM modul selv registrere ikke alle forespørsler eller deres resultater, fordi de ikke kan se alle. Hvorfor? En årsak er at kjernen ikke kan ringe til LSM modulen avslo anmodningen, Hvis du ønsker å granske dette avslaget vil bli et problem. Også, på grunn av ytelsen grunner, er noen av de foreslåtte grenen for nettverket avvik og LSM datafeltet ikke brukes av hovedlinjen kernel. Den kan styre en rekke nett-tilgang, men ikke nok til å støtte det "merket" nettverk datastrømmen (i dette tilfellet, ulike pakker har forskjellige sikkerhet etiketter håndteres av operativsystemet). Disse restriksjonene er upassende, i strid med de grunnleggende prinsippene for generell ideer; LSM rammene har vært utvidet en dag håper å bli kvitt disse restriksjonene.
Likevel, selv med disse restriksjonene, LSM ramme for å begrense privilegier for å legge det fortsatt er veldig nyttig. Torvalds LSM rammene av grunnleggende målet er realisert: "Jeg liker ikke kampen mellom ulike grupper sikkerhet. Jeg håper det er indirekte, la meg ut av denne kampen, da markedet kan kampen for å bestemme hvilken strategi og brukes for å oppnå den ultimate . "
Så hvis du vil begrense Linux gitt privilegiet av programmet, kan du lage din egen helt sikkerhetsmodulen. Hvis du bruker en ekte rammebetingelser som kanskje må gjøre det - heldigvis dette er mulig. Dette er imidlertid svært viktig, likevel, du har fortsatt å skrive kernel kode. Hvis mulig, bør du ikke bruke den eksisterende Linux sikkerhetsmodulen, men prøv å skrive din egen sikkerhetsmodul. Noen tilgjengelig LSM modul, men, Security-Enhanced Linux (SELinux) er den mest modne en Linux sikkerhetsmodul, så la oss se denne modulen.
Security-Enhanced Linux (SELinux) historie
Litt historie vil bidra til å hjelpe deg å forstå Security-Enhanced Linux (SELinux) - og det i seg selv er en morsom historie. US National Security Agency (National Security Agency, NSA) lenge har vært opptatt av sikkerheten til de fleste operativsystemer, begrenset kapasitet. Tross alt, er en av dem for å sikre at US Department of Defense til å bruke datamaskinen i møte med endeløse angrep for å opprettholde sikkerheten. NSA fant at de fleste av operativsystemets sikkerhetsmekanismer, inkludert Windows og de fleste UNIX-og Linux-systemer, kun oppnådd en "selektiv tilgangskontroll (skjønnsmessig Access Control)" (DAC) mekanisme. DAC systemet er å kjøre programmet under brukerens identitet og dokumenter for å finne eiere av objektet programmet kan gjøre. NSA mener dette er et alvorlig problem, fordi DAC selv sårbare eller ondsinnet program er en feil på beskyttelse er. I stedet har NSA lenge vært håpet at operativsystemet kan også støtte "obligatorisk tilgangskontroll (obligatorisk tilgangskontroll)" (MAC) mekanisme.
MAC mekanisme gjør at systemansvarlig kan definere sikkerhetspolitikk gjennom hele systemet, kan denne strategien være basert på andre faktorer, slik som brukerens rolle og troverdighet i programmet er ventet å bruke, vil programmet bruke den type data, etc., for å begrense programmet kan Ting å gjøre ting. Et lite eksempel, med MAC etter at brukeren ikke kan lett "hemmelige (Secret)" data inn "ikke-konfidensielle (Uklassifisert)" data. Imidlertid kan MAC faktisk gjøre mye mer enn det.
NSA har vært med operativsystemet tilbydere i mange år, men mange av de største markedsandelen leverandør av integrering for MAC er ikke interessert i å komme. Selv de leverandører som integrerer MAC er vanligvis også brukes som "separate produkter", snarere enn konvensjonelle produkter. Delvis fordi den gamle MAC er ikke fleksibel nok.
Så NSA av makt forsøker å gjøre MAC og mer fleksible og lettere å bli inkludert i operativsystemet. De bruker Mach operativsystem utviklet prototyper av sine ideer, og senere utvidet arbeidet initiert av «Fluke» av operativsystemet.
Imidlertid er det vanskelig å overbevise folk om at disse ideene kan brukes på "ekte" operativsystem, fordi alle disse er basert på små "leketøy-klassen" forskningsprosjekt. Svært få utenfor prototypen kan prøve å se disse ideene i en reell anvendelse av det å jobbe. NSA kan ikke overbevise en leverandør av tittelen for å legge til disse ideene, og NSA hadde ingen rett til å endre proprietære operativsystemet. Dette er ikke et nytt problem; år siden, DARPA forsøkte å tvinge sin proprietære operativsystem, brukte forskerne operativsystemet Windows, men støtt på mange problemer (se referanser nedenfor).
Så, NSA kom over en tanke i ettertid synes åpenbar: å bruke et leketøy ikke er open-source operativsystem, og implementere deres sikkerhet ideer for å vise at (1) det kan fungere, (2) det er spesifikk for arbeidet (gjennom for alle kildekode). De valgte det dominerende markedet, åpen kilde kjerne (Linux) og hvor realisering av ideen om at "forbedret sikkerhet Linux" (SELinux). Ikke overraskende, bruk ekte (Linux) for NSA forskere kan håndtere dem i leken kan ikke gjøre noe med. For eksempel, i de fleste Linux-baserte systemer, nesten alle er dynamisk lenket, slik at de måtte gjøre noen undersøkelser på hvordan å utføre inngående analyser prosedyre (få tilgang til dem på "Entrypoint", og "execute" rettigheter til dokumentasjon for mer informasjon). Dette er en mye mer vellykket måte, folk som bruker SELinux prototype tidligere enn de som bruker mye mer.
SELinux å arbeide
Så, til SELinux arbeide for? SELinux metoden faktisk svært vanlig. En viktig kjerne av hvert objekt, for eksempel hver filsystemet objekt, og hver prosess har en sammenheng med deres "security kontekst (sikkerhetskonteksten)". Sikkerhet sammenheng kan være basert på militær sikkerhet nivå (om ikke konfidensiell, hemmelig og konfidensiell), basert på brukerroller, program-baserte (så, en web-server kan ha sin egen sikkerhet kontekst), eller på mange andre elementer. Når det utfører et annet program, kan prosessen endre sikkerhetskonteksten. Selv, avhengig av prosedyren kaller det, et gitt program kan kjøres i ulike sammenhenger sikkerhet, selv om en bruker starter med alle prosedyrene.
Så systemansvarlig kan angi hvilke privilegier som er tildelt for å skape en sikkerhet sammenheng med der "sikkerhetspolitikk (sikkerhetspolitikk)". Når systemet ringer oppstår når, SELinux for å sjekke om alle de nødvendige rettighetene er gitt - og hvis ikke, nektet den anmodningen.
For eksempel vil opprette en fil, må sikkerheten sammenheng med den nåværende prosessen være den overordnede katalogen i konteksten til den "Search (søk)" og "add_name" privilegium, og det må (for å lage) filer i konteksten av "Lag ( lage) "privilegium. Likeledes må filen ha de privilegier og sikkerhet sammenheng filsystem "relaterte (forbundet)" (Så, for eksempel "konfidensiell" dokumenter ikke kan skrive et "ingen tillit" i disken). Også for stikkontakter, nettverksgrensesnitt, vert og port av nettverket tilgangskontroll. Hvis sikkerhetspolitikk for de som er alle tildelte tillatelser, og deretter anmodningen ville bli tillatt av SELinux. Ellers vil de bli utestengt. Hvis du gjør det steg for steg alle disse kontrollene vil være langsommere, men det er mange optimalisering programmet (basert på år med forskning) for å gjøre det svært raskt.
Undersøkelsen var uavhengig av klassen systemet på vanlig UNIX tillatelsene bits, i SELinux-systemet, må du skrive både standard UNIX tillatelser, til det SELinux tillatelse gjøre noe. Imidlertid kan SELinux sjekker gjøre mye av den tradisjonelle UNIX tillatelsene for klassen er vanskelig å oppnå.
Ved hjelp av SELinux, kan du enkelt opprette et bestemt program kan bare kjøre og kun i sammenheng med en bestemt webserver til å skrive filer. Enda mer interessant er at hvis en angriper scoret en web-server og bli root, vil en angriper ikke få kontroll over hele systemet - hvis det er en god sikkerhetspolitikk, da.
Det har vært vanskelig: For SELinux effektivt, må du ha en god grunn bak SELinux sikkerhetspolitikk gjennomføring. De fleste brukere vil trenge en praktisk lett å endre deres opprinnelige strategi. For noen år siden begynte jeg å oppleve SELinux, den gangen, er den første strategien ennå ikke moden, er det mange problemer. For eksempel, i de dager før jeg fant tidlig på prøven tillater ikke systemet oppdaterer maskinvaren klokken (det siste jeg sendte en oppdatering som løser dette problemet). God første sikkerhetspolitikken design ligner på produktkategori, håper NSA til å gjøre av næringslivet, og se å gjøre det. Red Hat, en rekke av Debian utviklere, er Gentoo og andre som bruker den grunnleggende SELinux rammeverket, og den første sikkerhetspolitikk blir opprettet, slik at brukerne umiddelbart kan begynne å bruke den. Faktisk, planer Red Hat til alle brukere i drift sin både i Fedora Core SELinux, og gir enkle verktøy for å gjøre ikke-profesjonelle brukere kan velge noen av de vanlige alternativene for å endre deres sikkerhetspolicy. Det er en oppstartbar Gentoo SELinux LiveCD. Minimer disse gruppene vil gjøre det enklere å behandle privilegium, uten en masse kode.
Her er vi tilbake til utgangsstilling. SELinux bare skje når programmet kjøres kun å tillate sikre overføring som styrer prosessen med kompetanse (ikke en del av prosessen). Derfor, for å få utnyttet potensialet i SELinux, trenger du din søknad vil bli brutt ned i selvstendige prosesser og prosedyrer, kun mindre Du privilegier av komponentene - det bare ikke SELinux Rutong hvordan situasjonen Zai Kai Fa sikre programmer. Verktøy som SELinux kan du bedre kontrollere tillatelser gitt, og så lage et sterkere forsvar, men du fortsatt trenger å dele programmet opp i mindre komponenter slik at de som styrer spiller maksimal effektivitet.
Konklusjon
Minimer sikkerhetsspørsmål privilegium er det viktigste forsvar. Ettersom feilen er uunngåelig, vil du ønsker å sterkt redusere muligheten for feil føre til sikkerhetsproblemer. Imidlertid må minst ett sikkerhetsprogram være knyttet til sikkerheten i enkelte deler av koden, så du kan ikke bare minimerer bekostning av alle andre privilegier. Selv når du må redusere noen av de som er involvert i sikkerhet etter at den delen eller de som må være riktig. Til høyre, må du unngå vanlige feil.