Sikkerhetsforbedret Linux

SELinux
programvare
SELinux GUI-administrator i Fedora 8
SjangerIT-sikkerhet
UtviklerNSA og Red Hat
Dato for første versjon1. januar 1998
Siste versjon2.8 (24. mai 2018)
OperativsystemLinux
SpråkC.
TillatelseGNU GPL
( gratis lisens )
Nettstedselinuxproject.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).

Historie

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.

Beskrivelse

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.

Brukere, kontekster og 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

Funksjoner til SELinux inkluderer:

Implementeringer

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.

Mulig bruk

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

Eksempler

Sett SELinux i håndhevingsmodus:

$ sudo setenforce 1

Sjekk statusen til SELinux:

$ getenforce

Sammenligning med AppArmor

SELinux 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.

Forskjeller

Lignende systemer

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] .

Merknader

  1. ^ Sammenlign National Security Agency Shares Security Enhancements til Linux , i NSA Press Release , Fort George G. Meade, Maryland, National Security Agency Central Security Service, 2. januar 2001. Hentet 17. november 2011. 2018) .
    "NSA er glade for å kunngjøre at de har utviklet, og gjør tilgjengelig for publikum, en prototypeversjon av et sikkerhetsforbedret Linux-operativsystem."
  2. ^ Security-Enhanced Linux - NSA / CSS , på nsa.gov , National Security Agency, 15. januar 2009. Hentet 6. februar 2013 (arkivert fra originalen 19. juli 2019) .
  3. ^ Fedora Documentation Project, Fedora 13 Security-Enhanced Linux User Guide , Fultus Corporation, 2010, s. 18, ISBN  978-1-59682-215-3 . Hentet 22. februar 2012 .
    «SELinux-avgjørelser, som å tillate eller nekte tilgang, bufres. Denne cachen er kjent som Access Vector Cache (AVC). Bufring av beslutninger reduserer hvor ofte SELinux-regler må sjekkes, noe som øker ytelsen."
  4. ^ Sikkerhetsforbedret Linux på Android , på source.android.com , Android Open Source Project. Hentet 31. januar 2016 .
  5. ^ Hvordan installere SELinux på Ubuntu 8.04 "Hardy Heron" , i Ubuntu Tutorials .
  6. ^ Versjonsmerknader for SUSE Linux Enterprise Desktop 11 , på novell.com , Novell . Hentet 6. februar 2013 .
  7. ^ SELinux på CoreOS , i CoreOS Docs .
  8. ^ SELinux / Commands - FedoraProject , på fedoraproject.org . Hentet 25. november 2015 .
  9. ^ chcon , på linuxcommand.org . Hentet 6. februar 2013 (arkivert fra originalen 24. oktober 2004) .
  10. ^ restorecon (8) - Linux man page , på linux.die.net . Hentet 6. februar 2013 .
  11. ^ restorecond (8) - Linux man page , på linux.die.net . Hentet 6. februar 2013 .
  12. ^ runcon (1) - Linux man-side , på linux.die.net . Hentet 6. februar 2013 .
  13. ^ sekund (1) - Linux man page , på linux.die.net . Hentet 6. februar 2013 .
  14. ^ fiksefiler (8): fiks SELinux sikkerhetskontekstfil - Linux man page , på linux.die.net . Hentet 6. februar 2013 .
  15. ^ setfiles (8): SELinux sikkerhetskontekster sett fil - Linux man page , på linux.die.net . Hentet 6. februar 2013 .
  16. ^ load_policy (8) - Linux man-side , på linux.die.net . Hentet 6. februar 2013 .
  17. ^ booleans (8) - Linux man page , på linux.die.net . Hentet 6. februar 2013 .
  18. ^ getsebool (8): SELinux boolsk verdi - Linux man page , på linux.die.net . Hentet 6. februar 2013 .
  19. ^ setsebool (8): sett SELinux boolesk verdi - Linux man page , på linux.die.net . Hentet 6. februar 2013 .
  20. ^ togglesebool (8) - Linux man-side , på linux.die.net . Hentet 6. februar 2013 .
  21. ^ Ubuntu Manpage: selinux-config-enforcing - endre / etc / selinux / config for å angi håndheving , manpages.ubuntu.com , Canonical Ltd. Hentet 6. februar 2013 (arkivert fra originalen 20. desember 2012) .
  22. ^ Ubuntu Manpage: selinuxenabled - verktøy som skal brukes i shell-skript for å finne ut om , manpages.ubuntu.com , Canonical Ltd. Hentet 6. februar 2013 (arkivert fra originalen 9. februar 2013) .
  23. ^ Ubuntu Manpage: selinux-policy-upgrade - oppgrader modulene i SE Linux-policyen , manpages.ubuntu.com , Canonical Ltd. Hentet 6. februar 2013 (arkivert fra originalen 4. april 2012) .
  24. ^ SELinux bakgrunner , i SELinux , Security Guide, SUSE.
  25. ^ apparmor.d - syntaks for sikkerhetsprofiler for AppArmor , på manpages.ubuntu.com (arkivert fra originalen 17. oktober 2013) .
  26. ^ Rainbow , på laptop.org .
  27. ^ SELinux-relatert arbeid , på NSA.gov . Hentet 17. desember 2017 (arkivert fra originalen 20. februar 2018) .

Relaterte elementer

Andre prosjekter

Eksterne lenker