SELinux programvare | |
---|---|
SELinux GUI-administrator i Fedora 8 | |
Sjanger | IT-sikkerhet |
Utvikler | NSA og Red Hat |
Dato for første versjon | 1. januar 1998 |
Siste versjon | 2.8 (24. mai 2018) |
Operativsystem | Linux |
Språk | C. |
Tillatelse | GNU GPL ( gratis lisens ) |
Nettsted | selinuxproject.org/ |
Innen datavitenskap er Security-Enhanced Linux ( SELinux ) en Linux-kjernesikkerhetsmodul som gir et sett med verktøy for å bruke og overvåke tilgangskontroll inkludert obligatorisk tilgangskontroll (MAC), som alle bruker Linux Security Modules-rammeverk (LSM) .
SELinux er et sett med modifikasjoner som kan brukes på Unix - lignende operativsystemer som Linux og BSD . Arkitekturen prøver å skille bruken av sikkerhetsregler fra definisjonen av selve reglene, og reduserer antallet programvare som har ansvaret for å verifisere at disse blir respektert. De grunnleggende konseptene til SELinux kan spores tilbake til noen prosjekter fra US National Security Agency (NSA).
Det første arbeidet rettet mot standardisering av obligatoriske og skjønnsmessige tilgangskontroller (MAC og DAC) i et UNIX-miljø (nærmere bestemt POSIX) kan tilskrives Trusted UNIX (TRUSIX) arbeidsgruppen til American National Security Agency ( NSA ) som fra 1987 til 1991 produserte en formell modell (publisert i en Rainbow Book ) og en evalueringsprototype som imidlertid aldri har blitt publisert.
SELinux ble designet for å demonstrere verdien av obligatoriske tilgangskontroller for linux-fellesskapet og hvordan disse kontrollene kan legges til Linux. Opprinnelig måtte oppdateringene som har blitt integrert i SELinux eksplisitt brukes på linux-kjernens kildekode, siden kjerneversjon 2.6 har den blitt fullstendig integrert som standard.
Den første SELinux-utvikleren ga ut den første versjonen til utviklingsfellesskapet for åpen kildekode under GNU GPL 22. desember 2000. [1] Programvaren ble med i hovedkjernen for Linux 2.6.0-test3, utgitt 8. august 2003.
Sikkerhetsforbedret Linux implementerer Flux Advanced Security Kernel (FLASK). Denne kjernen inneholder arkitektoniske komponenter designet for Fluke-operativsystemet. Fluke-komponenter gir omfattende støtte for å håndheve mange typer obligatoriske tilgangskontrollpolicyer, inkludert utførelsesbasert, rollebasert tilgangskontroll (RBAC) og sikkerhetsbeskyttelse på flere nivåer . FLASK er på sin side basert på DTOS, et Trusted Mach-operativsystem, et forskningsprosjekt utført av Trusted Information Systems som har påvirket utformingen og implementeringen av DTOS.
Fra NSA Security-enhanced Linux Team: [2]
NSA Security-Enhanced Linux er et sett med Linux-kjerneverktøy for overvåking av tilgangskontroll ( MAC ) installert i store Linux-distribusjoner.
Den gir en robust mekanisme for å holde konfidensiell informasjon intakt som ellers kunne bli tuklet med, omgår applikasjonssikkerhetsmekanismer, begrenser og fikser skader som kan være forårsaket av ondsinnede eller defekte applikasjoner.
SELinux inkluderer et sett med konfigurasjonsfiler og sikkerhetspolicyer designet for å møte vanlige eller generelle sikkerhetsmål.
En Linux-kjerne som integrerer SELinux pålegger obligatoriske tilgangskontrollpolicyer som begrenser brukerprogrammer, serversystemprogramvare, tilgang til filer og nettverksressurser. Ved å begrense tillatelsene til et minimum, på Linux- systemer , reduserer eller eliminerer det muligheten til demonprogrammer og prosesser til å forårsake skade hvis de er feil eller kompromitterte (for eksempel gjennom bufferoverløp eller konfigurasjonsfeil). Denne innesperringsmekanismen fungerer uavhengig av Linux-tilgangskontrollmekanismer. Den har ikke et konsept om en "root" superbruker og har ikke de tradisjonelle spesielle sikkerhetstillatelsene som tilskrives filer og kataloger som endrer oppførselen til systemet overfor brukere og/eller grupper (f.eks . setuid / setgid ).
Sikkerheten til et system uten SELinux avhenger av korrektheten til kjernen, av alle privilegiene til applikasjonene og av hver av deres konfigurasjoner. Et problem i noen, eller til og med bare ett av dem, kan generere sikkerhetskompromitter for hele systemet. Tvert imot, et "modifisert" linux-system, det vil si basert på en SELinux-kjerne, avhenger av korrektheten til kjernen og av konfigurasjonene av sikkerhetspolicyene. Noen feil med korrekthet eller konfigurasjon av applikasjoner kan kompromittere funksjonen til systemdaemon-prosessene til hver enkelt bruker, og også, ikke nødvendigvis, representere en trussel mot systemdemonene til andre tilkoblede brukere eller mot sikkerheten til hele systemet. SELinux gir et sett med konsepter og funksjonalitet hentet fra tilgangskontroller, integritetssjekker og rollebasert tilgangskontroll (RBAC). "Tredjeparts"-verktøyene lar deg skape allsidighet i sikkerhetspolicyer.
SELinux-brukere og -policyer må ikke være relatert til Linux-systembrukere og -policyer. For hver bruker eller prosess tildeler SELinux en trestrengs kontekst som består av brukernavn, rolle og domene (eller type). Vanligvis deler de fleste ekte brukere det samme SELinux-brukernavnet, og all tilgangskontroll håndteres via den tredje taggen, domenet. Dette systemet som brukes er derfor mer fleksibelt enn det som normalt kreves. En prosess plasseres i et gitt domene hvis policykonfigurasjonen tillater det. For å starte en prosess i en eksplisitt spesifisert kontekst (bruker, rolle, domene) må den startes med kommandoen runcon, SELinux kan nekte å starte hvis den ikke er spesifisert i sikkerhetspolicykonfigurasjonen.
Maskinvare, nettverksporter og filer har alle en SELinux-kontekst. Dette består av et navn, en rolle (sjelden brukt) og en type. Når det gjelder et filsystem, kalles kartleggingen mellom filer og sikkerhetskontekster tagging. Merkingen er definert i policyfilene, men kan også justeres manuelt uten å endre policykonfigurasjonene. Typer, i SELinux-sammenheng, er definert i stor detalj. For eksempel bin_t(alle filer i / bin-mappen) eller postgresql_port_t(PostgreSQL-port, 5432). SELinux-konteksten for et eksternt filsystem kan spesifiseres eksplisitt ved monteringstid.
SELinux legger til alternativet -Ztil noen skallkommandoer som ls, ps (og noen andre). Dette lar deg se sikkerhetskonteksten til filer eller prosesser.
En standard policy består av: en kartleggingsfil (merking), en regelfil og en grensesnittfil. Disse tre filene definerer sammen domenet og må alltid kompileres sammen med SELinux-verktøyene for å produsere en enkelt policyfil. Den resulterende policyfilen må lastes inn i kjernen for å bli aktiv. Disse typene prosedyrer (sett inn / fjern til / fra kjernen) krever ikke omstart av systemet. Policyfiler kan være håndskrevne eller genereres av SELinux Management som er mye enklere å bruke. Normalt testes de nye kriteriene først i «permissive mode», hvor brudd tillates og registreres. Verktøyet audit2allowkan brukes til å lage tilleggsregler, som utvider den opprinnelige policyen, for å oppnå begrenset alle legitime aktiviteter som en applikasjon kan utføre.
Funksjoner til SELinux inkluderer:
SELinux er implementert og tilgjengelig, fra versjon 4 og utover, i den kommersielle distribusjonen av Red Hat: " Red Hat Enterprise Linux (RHEL)". Sikkerhetspolicyen i RHEL4 tar sikte på maksimal brukervennlighet og er derfor svært lite restriktiv. Etter den fjerde versjonen implementeres en mye mer restriktiv sikkerhetspolicy. SELinux finnes også i de tilsvarende versjonene av CentOS og Scientific Linux og fra versjon 4.3 [4] er det også implementert i Android -operativsystemet .
En av de første distribusjonene, støttet av GNU / Linux-fellesskapet, for å implementere SELinux var Fedora . Andre distribusjoner som støtter det i dag er Debian , Ubuntu 8.04 Hardy Heron [5] og fra versjon 11.1 Enterprise har også openSUSE en implementering som en "technology preview" [6] .
SELinux er mye brukt i Linux-beholderbaserte systemer , som CoreOS Linux Container og rkt [7] . Det er nyttig som en ekstra sikkerhetssjekk, for å bidra til ytterligere å styrke isolasjonen mellom containere og deres vert.
SELinux kan potensielt kontrollere, med svært presise spesifikasjoner, aktivitetene, prosessene eller demonene til hver bruker som kjører Linux. I alle fall brukes modulen hovedsakelig til å begrense demoner som databasealgoritmer eller webservere, som har mye mer definerte aktiviteter og tilgang til data. Denne begrensningen forhindrer potensiell skade på en demonprosess som har noen sårbarheter. Vanligvis blir de "vanlige" prosessene til brukerne utført uten hjelp av SELinux-modulen, men er fortsatt begrenset av de klassiske Linux-tilgangstillatelsene.
Noen kommandolinjer som brukes er: [8] chcon , [9] restorecon , [10] restorecond , [11] runcon , [12] secon , [13] fixfiles , [14] setfiles , [15] load_policy , [16] booleans , [17] getsebool , [18] setsebool , [ 19] togglesebool[20],,,,,,, [ 21 ] , [ setenforce22 semodule] og [ 23 ] . postfix-nochrootcheck-selinux-installationsemodule_packagecheckmoduleselinux-config-enforcing selinuxenabledselinux-policy-upgrade
Sett SELinux i håndhevingsmodus:
$ sudo setenforce 1Sjekk statusen til SELinux:
$ getenforceSELinux er bare en av mange mulige tilnærminger til problemet med å begrense handlingene som installert programvare kan utføre. Et annet veldig vanlig alternativ kalles AppArmor og er tilgjengelig på distribusjoner som: SUSE Linux Enterprise Server (SLES), openSUSE og andre basert på Debian . AppArmor ble utviklet i den nå ubrukte Immunix Linux-distribusjonen. AppArmor og SELinux skiller seg radikalt fra hverandre. Av denne grunn danner de distinkte alternativer for programvarekontroll. I motsetning til SELinux, ble AppArmor designet for å være enkelt, og utvidet den samme administrative semantikken som brukes for DAC helt til obligatorisk tilgangskontroll.
Isolering av prosesser og applikasjoner, av sikkerhetsgrunner, kan også oppnås av andre systemer, for eksempel virtualiserte . OLPC - prosjektet , for eksempel, i sin første implementering [26] kjørte applikasjoner på separate virtuelle servere ( Vserver ), som fungerte som en sandkasse .
NSA har også brukt noen SELinux-konsepter for sikkerheten til Android -baserte operativsystemer [27] .