Unix säkerhet programmering: Minimera immunitet



Säkerhetsrutiner måste minimera privilegier, för att minska felet möjligheten att säkerheten brister. I artikeln beskrivs hur man kan minimera de privilegierade moduler, privilegier och de rättigheter som tilldelas den effektiva tiden för att minimera privilegier.

Artikel inte bara diskuterar en del av den traditionella UNIX-privilegierade klassen av mekanismer, som också diskuteras den relativt nya mekanismer, såsom FreeBSD's fängelse (), Linux Security Module (Linux Security Modules, LSM) ram och den med utökad säkerhet, Linux (SELinux).

3 mar 2003, varnade Internet Security Systems på Sendmail i en allvarlig sårbarhet. All e-post igenom meddelandet Transfer Agent (post överföra agent, MTA) att överföra, är Sendmail de mest populära MTA, så denna varning berörde många organisationer världen över. Problemet är, enligt de vanliga konfigurationen försiktigt in "från", "till" eller "Kopia"-fältet i e-postmeddelanden kan avsändaren komplett (root) kontroll av eventuella en maskin som kör sendmail. Mer allvarligt, kommer den allmänna brandvägg skyddar inte mot sådana attacker inne i maskinen.

Den direkta orsaken till detta kryphål eftersom Sendmail är en trygghet smak upptäckt, kan buffertspill förekomma. ofta dock en viktig roll i faktor, Sendmail installeras som en enda "setuid root" program, kör den på systemet har full kontroll tillåtelse. Detta Sendmail fel i någon av dem som kan ge obehöriga direkt kontroll över hela systemet.

Denna konstruktion är nödvändig? Nej, Wietse Venemas Postfix är en gemensam kan matcha det MTA. Liksom Sendmail, Postfix kommer göra en hel del säkerhetstester, men för att minimera privilegier, Postfix utformat som en uppsättning moduler. Resultaten är Postfix allmänhet anses säkrare än Sendmail program. I artikeln beskrivs hur man kan minimera behörigheter kan du tillämpa samma tänkande på ditt program.

Minimera grundval av privilegium

Praktisk tillämpning av de förfaranden som har brister. Vill vi verkligen ha det, men egentligen är det. Komplexa behov, tryck schema och förändringar i miljön är osannolikt att vara praktiska så felfri process. Även de som har gått komplex och sofistikerad teknik för att formellt bevisa det korrekta förfarandet kommer det att finnas brister. Varför? En av orsakerna är att kontrollen måste göras ett antal antaganden, och ofta dessa antaganden inte är helt korrekt. I vilket fall, av olika skäl hade de flesta av de förfaranden inte varit en rigorös test. Även i dag finns det inte något fel (osannolikt), är de framtida underhåll av förändringar eller förändringar i den miljö som sannolikt att införa defekter. Så, ta itu med praktiska problem, vi har något sätt att utveckla säkerhetsrutiner, trots brister i vårt program.

Trots dessa brister är säkerhetsprogrammet det viktigaste sättet är att minimera detta privilegium. Privilegium inte bara låta alla kan göra. UNIX-system i klassen, med "root" användare, andra användare eller medlemmar av en grupp av privilegier är de vanligaste typerna av privilegier. Vissa system kan du bevilja läsa eller skriva privilegier till specifika filer. Men ändå, för att minimera privilegier:

Endast en del av programmet behöver rättigheter som beviljas och privilegier

Endast en del av det är absolut nödvändigt att bevilja särskilda privilegier

Privilegier av den effektiva tid eller effektivt kan begränsas till ett absolut minimum tid

Faktum är målet, inte absolut. Grunden för din organisation (t.ex. ditt operativsystem eller virtuell maskin) kan göra strikta slutförandet av dessa är inte lätt, eller den strikta slutförandet av dessa kan vara mycket komplicerade, vilket ledde till fullbordandet av att försöka införa strängare fel. Men ju närmare man från dessa mål, möjligheten att fel leda till lägre säkerhet. Även om felet hade säkerhetsproblem, som ledde till att säkerheten problemet skulle kunna vara ännu lägre. Och om du kan se till att endast en liten del av programmet har särskilda behörigheter kan du använda en massa extra tid för att säkerställa att en del som tål attacker. Denna idé är inte ny, Saltzer och Schröders utmärkta 1975 papper diskuterade principerna om säkerhet, uttryckligen som en principen om minsta privilegium (se Resurser). Vissa idéer är tidlösa, som minimerar privilegium.

De tre följande avsnitten kommer att diskutera dessa mål i sin tur, bland annat hur man kan uppnå sin klass UNIX-system. Då kommer vi att diskutera FreeBSD och Linux i vissa särskilda mekanismer som är tillgängliga, bland annat NSA: s säkerhetsråd-förbättrad Linux (SELinux) diskussion.

Minimera privilegierade moduler

Som tidigare nämnts, bara för att privilegierade del av programmet endast tillämpas privilegierad. Det är när du utformar ditt program, försök att bearbeta delas upp i separata delar, bara göra en liten och oberoende del av behoven hos särskilda privilegier.

Om olika delar måste springa, sedan använda UNIX-system processer (inte trådar). Trådar dela deras säkerhet privilegier, kan tråden i fråga störa processen för alla andra trådar. Privilegierade del av förberedelserna, på andra program som det är attackeras: en dag kommer att vara! Se till att privilegierade i det enda saker att göra så lite som möjligt, begränsad funktionalitet innebär mindre sannolikt kommer att användas.

En gemensam strategi är att skapa en mycket begränsad funktion har särskilda privilegier (t.ex. en setuid eller setgid) kommandoradsverktyg. UNIX kommandot passwd är ett exempel, det är en viss privilegium kommandoradsverktyg för att ändra lösenordet (setuid root), men det kan göra är att ändra lösenordet. Så kan begära en mängd GUI-verktyg för att göra den faktiska förändringen passwd. Om möjligt, försök att helt undvika att skapa setuid eller setgid program, är det svårt att garantera att du verkligen är att skydda alla input. Men ibland behöver du skapa en setuid / setgid program, så vid behov för att så långt som möjligt behandla de minsta och mest begränsade.

Det finns många andra sätt. Till exempel kan du ha en speciell privilegium för en liten "server (server)" processen, att servern tillåter endast särskild begäran, men bara bekräftat att en begäran kommer tillstånd att utfärda den begäran. En annan vanlig metod är att börja använda de rättigheter som ett program, programmet härrör att ge upp alla de rättigheter som andra, i den process genom att göra det mesta av arbetet.

Var noga med hur dessa moduler kommunicera med varandra. I många UNIX-system, kommandoraden värde och miljön kan ses av andra användare, så det är inte i färd med att skicka data mellan hemligheten bakom ett bra sätt. Pipeline kan vara behörig, men att noggrant undvika dödläget (två ändar kan uppdatera en enkel begäran / svar protokoll kan behörig).

Minimera rättigheter som beviljas

För att du bara behöver bevilja privilegier för att göra det förfarande - sluta här. UNIX huvudsakliga sättet att få privilegier som de köras som en användare eller grupp. Vanligtvis till processen använda dem som en användare och grupp att köra, men "setuid" eller "setgid"-programmet kommer att ha programmet användare eller privilegier grupp.

Tråkigt nog finns det några ofrivilliga sätt att programmet "setuid root" privilegier på UNIX-system utvecklare. Vi tycker att de gör saker för sig att bli "lätt" eftersom de inte går på djupet grund av deras förfaranden är ett klart behov några särskilda privilegier. Problemet är, eftersom dessa förfaranden kan i de flesta UNIX-program för systemet för att göra nästan allt, så eventuella brister kan snabbt bli en säkerhet katastrof.

Inte bara för att du måste fylla i en enkel uppgift att ge alla tänkbara privilegier. Förfarandet bör endast ges de privilegier de behöver. Om du kan, att setgid att sköta dem, att inte använda setuid - setgid privilegier mindre. Skapa en specifik användare och grupp (använd inte root), och använd dem enligt dina behov. För att säkerställa att de som ägs av root körbara endast root för att skriva så att andra inte kan ändra dem. Filrättigheterna som mycket stränga - om inte absolut nödvändigt, låt inte alla kan läsa eller skriva filer, och använda dessa specifika användare och grupper. Kan förklara alla dessa spel kan vara ett exempel på "topp tio" värderingar för praxis. Många rutiner är "setgid spel", bara göra spelet programmet kan ändras till "topp tio" värderingar, och värderingar för dokument som lagras i master gruppen är spel (och endast denna grupp kan skriva). Även om angriparen attack och trädde ett spel program, allt han kunde göra skulle ändra värderingar av handlingar. I varje fall spelutvecklare måste fortfarande skriva sina program för att motverka oönskad poäng fil.

chroot ()-systemet samtal är ett användbart verktyg - tyvärr finns det också svårare att använda. När processen visa filsystemet "root", att detta system kommer kalla förändra processen för att se innehållet. Om du planerar att använda den - och det kan vara bra - att vara beredd att ta lite tid att göra nytta av det. Nödvändigt att noga förbereda "nya rot", som är komplicerad eftersom den exakta tillämpningen beror på plattformen och egenskaper ansökan. Du måste vara root, att chroot ()-anropet, och du ska snabbt ändra statusen för icke-root (användare roten ur chroot-miljö, så om den ska börja gälla måste du lyfta privilegiet). Och chroot inte kommer att ändra nätverksåtkomst. Detta kan vara ett användbart system kräver, måste alla ibland att överväga det, men försök att göra väl förberedda.

Begränsade resurser är ett ofta bortglömt verktyg, vilket inkluderar både vid lagring resurser, inklusive resurser. Dessa restriktioner denial of service-attacker är särskilt användbara:

Lagring för kan du ange för varje användare eller grupp för varje monterat filsystem eller filen löpnummer lagring (gräns). I GNU / Linux-system, se kvot (1), quotactl (2) och quotaon (8) för en djupgående förståelse av denna funktion, men där även om de inte kan använda de flesta av den klass av UNIX-system inkluderar kvotsystemet. I GNU / Linux och många andra system, kan du ställa in "hårda" begränsningar (aldrig överstiga) och "mjuka" gränser (som kan vara tillfälliga överskott).

Processen kan du ställa in många gränser, till exempel antalet öppna filer, antalet processer, och så vidare. Denna funktion är faktiskt en del av standarden (t.ex. en enda UNIX Specification (Single UNIX Specification)), alla i klassen UNIX-system nästan överallt, att förstå, se getrlimit (2), setrlimit (2) och getrusage ( 2), sysconf (3) och ulimit (1). Process kan aldrig överskrida "aktuell rad", men de kan begränsa hela vägen till upphov till den nuvarande "tak". Tyvärr finns det en anomali term problem kan få dig att förvirra. "Nuvarande" är även känd som "mjuka" gränser, gräns, även känd som "hårda" gränser. På så sätt kommer du vara i en ovanlig situation kan processen aldrig överskrider gränserna för processen för mjuka (nuvarande) begränsningar - och du kan överskrida den mjuka kvoten är. Jag föreslår att begränsa arbetet med att använda termen "aktuell rad" och "tak" (aldrig använda termen "mjuka" och "hård"), så skulle det inte blandas ihop.

Minimera tiden privilegium

Men bara när det behövs för att ge privilegier - ge inte ett ögonblick.

Använd om möjligt oavsett vad din omedelbara behov, privilegier, och sedan ge dem permanent. När de har permanent övergivits, då angriparen kan inte på annat sätt använda sig av dessa privilegier. Till exempel att behovet av enskilda root root, det förfarande som kan börja (till exempel genom en setuid root) och sedan byta till den mindre privilegierade användare att köra. Detta är antalet på Internet (inklusive webbservern Apache) de metoder som används. Klass UNIX-system tillåter inte några program för att öppna 0 到 1024 TCP / IP-porten, måste du ha root-privilegier. Men de flesta servrar är bara att öppna portar uppstarten, efter det att förmånen inte längre behöver. Ett sätt är att köra som root, så snart som möjligt att öppna privilegierade behövs hamnar, och sedan permanent ta bort root-privilegier (vilket inbegriper den tillhör någon privilegierad grupp). Ska försöka att ta bort alla andra ärftliga privilegier, till exempel stänga av så snart som möjligt ha särskild behörighet att öppna filen.

Om du inte kan permanent ge upp privilegier, då kan du åtminstone tillfälligt avlägsnande av privilegier så ofta som möjligt. Detta är bättre än permanent ta bort de privilegier, för om en angripare kan styra ditt program kan angriparen återaktivera privilegium och använda den. Det är dock värt att göra.

Många attacker endast när de har privilegiet att lura förfarandet för att göra vissa saker utanför programmet och privilegier ges möjlighet att lyckas (till exempel genom att skapa en symbolisk länk anomali och hårda länkar). Om programmet vanligtvis inte att dess privilegier, då angriparen vill ta nytta av detta program kommer att bli svårare.

Relativt nya mekanismen

Hittills har vi diskuterat de principer som faktiskt tillämpas på nästan alla operativsystem, och sedan 19-talet, 70s, nästan alla i klassen av UNIX-system liknar konventionella mekanismer. Det betyder inte att de är värdelösa, enkla och tidens tand är deras egen fördel. Har dock en del relativt ny klass av UNIX-system ökade till stöd minst privilegium mekanism, är det värt att veta. Även om det är lätt att hitta beprövade mekanism, men på den relativt nya mekanismen för information ännu inte känd. Så, här kommer jag att diskutera en del värdefull mekanism som valts: FreeBSD fängelse (), Linux Security Module (LSM) ram och med utökad säkerhet, Linux (SELinux).

FreeBSD fängelse ()

chroot ()-systemet samtalet har en hel del problem, som nämnts ovan. Till exempel är det svårt att korrekt användning kan användaren root lära fortfarande från, men det omfattar inte tillträde till nät. FreeBSD utvecklarna beslutade att lägga till ett nytt system samtal för att lösa dessa problem, det nya systemet samtalet kallas fängelse (). Denna inbjudan liknar chroot (), men försök att använda enklare och mer effektivt att använda. I ett fängelse, är alla de ansökningar (även roots) begränsade fängelse och fängelse i processen kan endast kommunicera med andra processer, och systemet blockerade försöken rotanvändare till fängelse vägen från typiska. fängelse kommer att tilldelas en specifik IP-adress, kan inte använda en annan adress som sin egen adress.

fängelse ()-anrop är unikt för FreeBSD, vilket begränsar dess användbarhet. Men alla OSS / FS har en hel del crossover mellan effekten av kärnan (korsbefruktning). Till exempel har med hjälp av Linux säkerhet ram har utvecklats för Linux-versionen av ett fängelse. Dessutom har FreeBSD 5 lagt en flexibel MAC ram (från TrustedBSD projektet), inklusive de grundläggande funktionerna i en modul som liknar SELinux. Alla, att i framtiden se mer av denna situation inte bli förvånad.

Linux Security Module (LSM)

I 2001 Linuxkärna toppmöte om, har Linus Torvalds ett problem. Ett antal olika säkerhetslösningar projekt, bland annat med utökad säkerhet, Linux (SELinux) projekt och bad honom att lägga sin säkerhet metoder för Linux-kärnan. Problemet är att dessa olika metoder är ofta oförenliga. Torvalds finns inget enkelt sätt att fastställa vilket som är bäst, så han frågade dessa projekt tillsammans för att skapa en gemensam Linux säkerhet ram. Så, kan administratören ge dem någon särskild installationsmetod de vill ha säkerhet. Efter flera diskussioner med Torvalds, Crispin Cowan inrätta en grupp för att skapa den gemensamma säkerhets-ramen. Denna ram är uppkallad Linux Security Module (LSM) ram, nu är en del av standarden Linux-kärnan (exempelvis 2,6-versionen av kärnan).

Med begreppet LSM ram särskilt enkelt. Linuxkärnan är fortfarande gör sin rutin säkerhetsinspektion, exempel, om du skriver en fil, du behöver fortfarande ha skrivrättigheter till.

Men när det är nödvändigt om Linux-kärnan bör ge tillgång till avgöra om det bör kontrolleras - av en "bok" att kräva en säkerhetsmodul att genomföra - att avgöra om tillståndet åtgärder. På detta sätt kan administratörer helt enkelt välja att han vill använda säkerhetsmodulen, och på samma sätt som andra Linux-kärnmoduler infoga. Sedan kommer säkerhetsmodulen avgöra vad som är tillåtet.

LSM ram utformad för att vara så flexibel att den kan nå många olika typer av säkerhetspolitiken. Faktum är att ett antal olika projekt tillsammans se till att tillräckliga behöriga LSM ramen för det verkliga arbetet. Till exempel, när den interna objekt skapas eller tas bort när LSM i ett antal samtal - beror inte på att dessa åtgärder kan avbrytas, men att säkerhetsmodulen kan hålla reda på viktiga data. Använda ett antal olika analytiska verktyg för att säkerställa att LSM ramen inte missar några viktiga avvikelser i sitt mål filial. Resultaten visar att projektet än många tror hårdare, och dess framgång är svårt vann.

LSM är nödvändigt för att förstå de grundläggande designval som gjorts. I grunden var LSM ram som är avsedd för nästan alla grenar är begränsade undantag, inte tillförlitliga (auktoritativ). Branch att göra en trovärdig onormal absolut slutgiltiga beslutet: Om undantaget är den gren att en begäran bör tillåtas, kommer det att bli villkorslöst tillåtet. Tvärtom kan bara öka trovärdigheten för onormala grenen av andra begränsningar, det kan inte bevilja nya rättigheter. Teoretiskt, om alla grenar är trovärdiga onormala LSM, LSM ram kommer att vara mer flexibel. En som kallas stånd () undantag filial är betrodd - men bara för att den var tvungen att stödja POSIX vanliga kapacitet. Kan dock brevet göra alla onormala grenar, är det nödvändigt att Linux-kärnan, många grundläggande förändringar, säger att förändringen inte får godtas.

Många fruktar att om de flesta av de onormala filial kan tro, även de minsta fel blir en katastrof, och låt undantag filialen är begränsad innebär att användare inte kommer att bli förvånad (I varje fall den ursprungliga UNIX-behörigheter fortfarande arbete) . LSM ram så utvecklare som vill begränsa valmöjligheterna, och de flesta av dess utvecklare lita på att de kan arbeta inom ramen.

LSM ramverk för att förstå andra begränsningar är också viktig. LSM ram är utformad för att stödja åtkomstkontroll, revision och andra säkerhetsfrågor inte. LSM modul själv inte registrerar alla frågor eller deras resultat, eftersom de inte kan se alla. Varför? En anledning är att kärnan inte kan kalla LSM modulen Förfrågningar som avslagits, om du vill granska denna vägran kommer att bli ett problem. Också, på grund av prestandaskäl, är några av de föreslagna filial för nätverk anomalier och data LSM område som inte används av kärnan tråden. Det kan kontrollera ett antal nättillträde, men inte tillräckligt för att stödja "märkt" nätverk dataström (i detta fall, olika datapaket har olika säkerhet etiketter hanteras av operativsystemet). Dessa begränsningar är olämpliga, i strid med de grundläggande principerna för allmänna idéer, LSM ram har förlängts en dag hoppas på att bli av med dessa restriktioner.

Även med dessa restriktioner, LSM ram för att begränsa de privilegier att lägga till det är fortfarande mycket bra. Torvalds LSM ram genom att det grundläggande målet förverkligas: "Jag tycker inte om kampen mellan olika säkerhets-grupper. Jag hoppas att är indirekt, låt mig ur denna kamp, då marknaden får problem med att bestämma vilken strategi och tillämpas för att uppnå den ultimata . "

Så om du vill begränsa Linux beviljats förmånen att ditt program kan du skapa helt egna säkerhetsmodulen. Om du använder en riktig externa problem som kan behöva göra det - lyckligtvis detta är möjligt. Men detta är mycket viktigt, i alla fall, du måste ändå skriva kärna kod. Om möjligt, du bäst att inte använda den befintliga Linux säkerhetsmodulen, men försök att skriva en egen säkerhetsmodulen. Vissa tillgängliga LSM modul, men med utökad säkerhet, Linux (SELinux) är den mest mogna en Linux säkerhetsmodul, så låt oss undersöka den här modulen.

Utökad säkerhet, Linux (SELinux) historia

En liten historia bidrar till att hjälpa dig att förstå med utökad säkerhet, Linux (SELinux) - och det i sig är en rolig historia. US National Security Agency (National Security Agency, NSA) har länge varit för säkerhet i de flesta operativsystem, begränsad kapacitet. Är trots allt en av dem att se till att US Department of Defense att använda datorn i ansiktet av oändliga attacker att upprätthålla säkerheten. NSA fann att de flesta av operativsystemets säkerhet mekanismer, inklusive Windows och de flesta UNIX-och Linux-system, bara uppnås en "selektiv åtkomstkontroll (diskretionära åtkomstkontroll)" (DAC) mekanism. DAC är att köra programmet enligt användarens identitet och handlingar för att hitta ägare till föremålet programmet kan göra. NSA anser att detta är ett allvarligt problem, eftersom DAC sig sårbara eller skadliga program är ett misslyckande av skydd. I stället har NSA länge hoppats att operativsystemet kan också stödja "obligatorisk åtkomstkontroll (obligatorisk åtkomstkontroll)" (MAC) mekanism.

MAC mekanism gör att systemadministratören kan definiera systemets säkerhetspolitik, kan denna strategi baseras på andra faktorer, t.ex. användarens roll, programmets trovärdighet och användningsområde kommer programmet att använda den typ av uppgifter 等等 att begränsa programmet kan Att göra saker. Ett litet exempel med Mac-användare kan inte enkelt efter "hemlig (Secret) uppgifter i" icke-konfidentiell (Icke sekretessbelagda) uppgifter. Däremot kan MAC göra faktiskt mycket mer än så.

NSA har operativsystemet leverantörerna i många år, men många av de största marknadsandelen leverantör av integration för MAC inte är intresserad av att komma. Även de som integrerade MAC-leverantören också vanligtvis som en "separat produkt", snarare än konventionella produkter. Dels för att den gamla MAC är inte tillräckligt flexibel.

Så försök att NSA: s forskning och större flexibilitet i MAC och lätt tas med i operativsystemet. De använder Mach operativsystem utvecklat prototyper av sina idéer, och senare expanderat det arbete som inleddes med "Fluke" av operativsystemet.

Det är dock svårt att övertyga människor om att dessa idéer kan appliceras på "riktiga" operativsystem, eftersom alla dessa är baserade på lilla "leksak-klass" forskningsprojekt. Mycket få utanför prototyp kan försöka att se dessa idéer i verkliga tillämpningar hur väl fungerar. NSA kan inte övertyga en leverantör av titel att lägga till dessa idéer, och NSA hade ingen rätt att ändra egna operativsystem. Detta är inte ett nytt problem; år sedan försökte DARPA att tvinga igenom sina egna operativsystem som används forskare operativsystemet Windows, men stött på många problem (se referenser nedan).

Så, kom NSA över en tanke så här i efterhand framstår som uppenbart: att använda en leksak inte är öppen källkod-operativsystemet och genomföra sin säkerhet idéer för att visa att (1) det kan fungera, (2) Det är specifika för arbete (genom för alla källkod). De valde den dominerande marknaden, öppen källkod kärna (Linux) och där förverkligandet av sin idé att "utökad säkerhet, Linux" (SELinux). Inte överraskande, använd riktiga systemet (Linux) för NSA forskare kan behandla dem i leksaken inte kan hantera. Till exempel, i de flesta Linux-baserade system, nästan alla är dynamiskt länkade, så de fick göra lite forskning om hur du gör en djupgående analys förfarande (tillgång till dem på "entrypoint" och "köra" behörigheterna för dokumentet för mer information). Detta är ett mycket framgångsrikt sätt, personer som använder SELinux prototyp tidigare än de som använder mycket mer.

SELinux att arbeta

Så, för att SELinux arbeta för? SELinux metod faktiskt mycket vanligt. En viktig kärna för varje objekt, till exempel varje filsystem objekt, och varje process har en korrelation till deras "säkerhet sammanhang (säkerhet sammanhang)". Säkerhet sammanhang kan grundas på militär säkerhet nivå (om inte konfidentiell, konfidentiell och mycket hemlig), baserat på användarnas roller, applikation-baserade (ja, en webbserver kan ha sin egen säkerhet sammanhang), eller på många andra element. När det kör ett annat program, kan processen ändra säkerhetskod sammanhang. Även beroende på förfarandet kalla det, ett visst program kan köras i olika säkerhet sammanhang, även om en användare startar med alla förfaranden.

Sedan kan systemadministratören ange vilka rättigheter som tilldelas skapa en trygghet sammanhang som "säkerhetspolitik (säkerhetspolitik)". När systemet samtalet uppstår när, SELinux att kontrollera om alla nödvändiga behörighet har tilldelats - och om inte, avslog den begäran.

Om du t.ex. vill skapa en fil, säkerheten ramen för den pågående processen på underkatalogen säkerhetskontext på "Sök (Search)" och "add_name" privilegium, och det behöver (att skapa) filer i säkerhet ramen för "Skapa ( skapa) "privilegium. På samma sätt måste säkerheten ramen för denna fil med filsystemet har förmånen att "närstående (tillhörande)" (Så, till exempel, "mycket konfidentiellt" handlingar inte kan skriva en "inget förtroende" i skivan). Även för uttag, nätverksgränssnitt värd och hamn för Network Access Control. Om säkerhetspolitiken för dem som alla beviljats tillstånd, då ansökan kommer att tillåtas av SELinux. Annars kommer de att förbjudas. Om du gör det steg för steg alla dessa kontroller kommer att bli långsammare, men det finns många optimering program (som bygger på år av forskning) att göra det mycket snabbt.

Granskningen har oberoende av klassystemet i den vanliga UNIX-behörigheter bitar, i SELinux-systemet måste du skriva både standard-UNIX behörigheter, att det SELinux tillåtelse göra något. Kan dock SELinux kontroller göra mycket av den traditionella UNIX behörigheterna för klassen är svårt att uppnå.

Använda SELinux, kan du enkelt skapa ett särskilt program kan bara köras och endast i samband med en viss webbserver för att skriva filer. Ännu mer intressant är att om en angripare gjorde en webbserver och bli root, kommer en angripare inte ges kontroll över hela systemet - om det finns en bra säkerhetspolicy, då.

Det har varit svårt: För att SELinux effektivt, måste du ha en bra anledning bakom SELinux säkerhetspolitik genomförande. De flesta användare kommer att behöva en praktisk lätt att ändra sin ursprungliga strategi. För några år sedan började jag att uppleva SELinux, den tiden är den ursprungliga strategin ännu inte mogen, det finns många problem. Till exempel, på den tiden innan jag hittade det tidiga provet policy tillåter inte systemet uppdatera hårdvaruklockan (det sista jag fram en patch för att lösa problemet). Bra första säkerhetspolitik motiv som liknar den produktkategori hoppas NSA att göra med näringslivet, och ser att göra det. Red Hat, ett antal av Debian-utvecklare är Gentoo och andra som använder den grundläggande SELinux ram, och den ursprungliga säkerhetspolitik skapas, så att användarna kan genast börja använda den. I själva verket planerar Red Hat för alla användare i deras arbete i både Fedora Core SELinux och ge enkla verktyg för att göra det möjligt för icke-professionella användaren kan välja några av de vanligaste alternativen att ändra sin säkerhetspolitik. Det finns en startbar Gentoo SELinux LiveCD. Minimera dessa grupper kommer att göra det lättare att behandla privilegium, utan en massa kod.

Här är vi tillbaka till den ursprungliga positionen. SELinux först när genomförandet av programmet bara för att en säker överföring, som styr processen för behörighet (inte en del av processen). Därför att till fullo utnyttja potentialen i SELinux måste du bryta din ansökan process och förfaranden för oberoende, endast några små privilegierad komponenter - precis hur denna situation utvecklas i avsaknad av SELinux säkerhetsförfaranden. Verktyg som SELinux ger dig möjlighet att bättre kontrollera beviljade behörigheter och så skapa ett starkare försvar, men du behöver fortfarande dela upp programmet i mindre delar så att de som kontrollerar spela maximal effektivitet.

Slutsats

Minimera säkerhetsfrågor privilegium är den viktigaste försvar. Eftersom felet är oundvikligt, kommer du att kraftigt minska risken för defekter leder till säkerhetsproblem. Dock måste minst ett säkerhetsprogram vara relaterad till säkerheten hos vissa delar av koden, så du kan inte bara minimerar bekostnad av alla andra förmåner. Även när du har för att minimera några av dem som deltar i säkerhet efter den eller de som måste vara korrekt. Till höger, måste du undvika vanliga misstag.