Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

SELinux – Linux på MAC MAC på Linux Lars Strand 7. mai 2007.

Liknende presentasjoner


Presentasjon om: "SELinux – Linux på MAC MAC på Linux Lars Strand 7. mai 2007."— Utskrift av presentasjonen:

1 SELinux – Linux på MAC MAC på Linux Lars Strand 7. mai 2007

2 FBI/CSI rapport (2006) CSI = Computer Security Institute.
Hvorfor generell nedadgående? - mer bevissthet rundt sikkerhet - mer investeringer brukt på sikkerhet De som øker er: - tap fra laptop og/eller mobile enheter - telecommunication fraud - web-site defacement – aktuelt for SELinux!

3 “Patche-jag” Oppdaterings-syklus: Sårbarhet oppdaget!
Forfatter tetter hullet og publiserer en patch for sårbarheten. Bruker laster ned, tester og installerer patch. Tiden fra punkt 1 til 3 må gå raskest mulig. Største problem er nok punkt 3. Mer kjedelig problem: Tiden mellom 1 og 2. “Zero-day” - sårbarhet og angrepsmetode/verktøy publisert/tilgjenglig samme dag. 5% zero-day-angrep Hvordan beskytte? Nevne Kevin Mitnick som utnyttet systemers treige oppdateringssyklus – Hvor publiserte sårbarheter ble tettet og behørig kommentert i kildekoden. Zero-day vulnerability = sårbarhet hvor det ikke finnes noe patch. Dvs. tiden mellom 1 og 2. Hvordan beskytte – sandbox (chroot), brannvegg, ids etc. Avgjøre aksesskontroll!

4 Aksesskontroll Sikkerhetspolicy kan benytte to typer aksesskontroll (alene eller i kombo): 1. Aksesskontroll avgjøres av eier (bruker) av objektet (fil/prosessen). 2. Aksesskontroll avgjøres av OSet. Kanskje kan SELinux være enda mer proaktiv.

5 Discretionary access control
Aksess bestemmes av eier av objektet. Eks: Tilgang til dagbok. Eks: Filer under $HOME. Definisjon: “If an individual user can set an access control mechanism to allow or deny access to an object, that mechanism is a discretionary access control (DAC), also called identity-based access control (IBAC).” -- M. Bishop, computer security (2003). DAC = “Subjektbestemt aksess-/tilgangskontroll”. Et barn skriver dagbok. Da er det barnet (subjektet) som avgjør hvem som skal få lov til å lese i dagboken og ikke. Barnets mor får lov til å lese i dagboken, men ingen andre. Dette er DAC, siden det er subjektet (morens) identitets som avgjør tilgang til objektet (dagboken). Når jeg leser mailen min i mutt. Mutt kan lese mine SSH-filer, slette alle mine filer på hjemmeområdet!

6 Mandatory access control
Aksess bestemmes av en overordnet policy. Policy kan ikke overstyres av subjekt (eier). Eks: Sjekk av vandel. Definisjon: “When a system mechanism controls access to and an individual user cannot alter that access, that control is a mandatory access control (MAC), occasionally called a rule-based access control.” -- M. Bishop, computer security (2003). MAC = “Obligatorisk/overordnet aksesskontroll”. Eks med apache. Hvis apache blir kompromittert, kan det være svært begrenset en angriper har mulighet til å få utført. Da det er bestemt at apache bare har lov til å aksessere de og de resursser. MAC kan beskytte mot dårlig skrevet applikasjoner.

7 Tradisjonell UNIX (og Linux)
Linux = DAC. Tradisjonell aksesskontroll. Bruker X har kontroll over alle sine filer. Eksekveres 'ls', kjøres den med samme rettigheter som eksekveringen av 'OpenOffice'. Grov inndeling: Superbruker (uid=0) og andre brukere. MAC medfører gjerne en instramming. Ofte mer granularitet. DAC er det vi alle er kjent med i dag. MAC skifter fokus for aksesskontroll/snur det på hodet. Istedefor subjektet selv som bestemmer, er det systemet selv som bestemmer. H e i * F ø l g m e d l i t t * I k k e s i t t å l e s h e r n e d e!

8 Principle of least privilege
Mutt – lese mine ssh-nøkler. Slette alle mine filer. Mutt = mailleser. Hva trenger den av rettigheter? Begrense rettigheter slik at en prosess fungerer normalt, og nekte alt annet. Definisjon: "The principle of least privilege states that a subject should be given only those privileges that it need in order to complete its task." -- M. Bishop, computer security (2003). Slik begrensing av rettigheter kalles “principle of least privilege”.

9 SELinux Security-Enhanced Linux = SELinux. Opprinnlig utviklet av NSA.
Overrasket alle ved å gjøre SELinux open source. I det offisielle kjernetreet fra 2.6. Benytter “Linux Security Modules” (LSM). I dag: Fedora og Redhat. Runner-up: Debian, Gentoo, (Ubuntu). NSA – antakelig største ansamling matematikere i verden.

10 Sikkerhetsmodell Må skille mellom: Subjekt programmer prosesser
Objekt (“security classes”) filer, hard- og softlinker, kataloger, sockets, ... filsystemer, prosesser, ... Handling Lese, skrive, legge til, eksekvere, låse, ... Som i gramatikk operer subjekt på objekter. Forklare skille mellom programmer og prosesser. Prosess er et eksekverende program som har en state osv. Merk at prosess både kan være subjekt og objekt for handlinger. “Security classes of objects”

11 Sikkerhetsmodell Eks: Prosess 31337 lov å lese /etc/passwd?
Først sjekke tradisjonell DAC. Nekter DAC = ikke tillatt. Hvis DAC = ok, sjekker SELinux. Nøkkelegenskap = supplerer tradisjonell DAC med MAC:

12 Sikkerhetsmodell Subjekt og objekter grupperes i ulike klasser.
Eks: Alt som har med apache i en “klasse”/”gruppe”. Konstrueres vha. “security attributes”. Fire attributter: brukeridentitet rolle type / domain nivå og/eller kategori Apache: * binærfilene * html-filene * logg-filer Bygd opp av: * Brukere * RBAC * TE

13 1. Brukere SELinux benytter egne brukeridenter på:
Subjekt (prosess): Brukeridenten som kjører prosessen. Objekt (fil/program): Eier av filen. Separat fra Linux' DAC. Mapper “vanlige” brukere til SELinux'. Vanligvis bare en håndfull (SELinux-) brukere: user_u: Vanlige brukere. system_u: Prosesser startet (ved boot). root: Administrator (fra konsollet). Legg merke til *_u notasjon. Brukeren 'root' er noe som henger igjen fra gammelt av. Blir antakelig faset ut i fremtiden. Kompilert inn i policyen.

14 2. Rolle Brukere kan tre inn i ulike roller.
Rettigheter gis ikke til roller. Rollen gir “tilgang” til ulike typer / domains. Benyttes for prosesser, for filer er den alltid object_r. Legg merke til *_r notasjon. Rettigheter gis til de ulike rollene i Role Based Access Control (RBAC).

15 3. Type / domain Type, også kalt domain, er “primærattributten”.
'type' for filobjekter. 'domain' for prosesser. Få brukere/roller - flere titalls domains. Oppretter sandkasser som begrenser aksess. Type Enforcement (TE) “Domain transition” - regler for bytte av “sandkasser”: Ny prosess. Arver den parent domain? eks: initrc_exec_t til httpd_t Ny fil. Arver den type? Legg merke til *_t notasjon. Filkopiering: Filen får samme type som den blir kopiert til. Filflytting: Filen bevarer opprinnlig type. Mer om dette senere.

16 3. Type / domain

17 4. Kategori / nivå Sette kategori og/eller nivå (horisontalt / vertikalt). Relativt “nytt” felt. Introdusert i RHEL5. Eks kategori: Driftsavdelingen, Administrasjonen. Eks nivå: Begrenset, hemmlig, strengt hemmlig. Eks nivå/kategori: Hemmlig/Hæren er forskjellig fra Hemmlig/Marinen.

18 Security context Oppsummert:
<bruker>:<rolle>:<type>:<kategori/nivå> Eks: system_u:system_r:unconfined_t:s0:c0 Disse attributtene danner en “security context”: 'Types' for filobjekter og 'domains' for prosesser. Roller benyttes for å begrense hvilke domains som kan aksesseres. Brukeridenter begrenser hvilke roller som kan benyttes. D u ! * L e s e r d u h e r i g j e n ? * L ø f t b l i k k e t

19 SELinux – avgjørelsesprosess
Fokusere på policy. At det kan være ulik policy.

20 SELinux komponenter Kernel
SELinux bibliotek 'libselinux' (ls, ps, id, ..) SELinux administrasjonsverktøy Policy Er endel av standard kjernetreet i dag. Begynner vi med det siste.

21 SELinux policy /etc/selinux/POLICYTYPE/* Skrevet med M4.
Kompilert til binærformat. Lastes tidlig i boot-prosessen (init). Modifisert policy kan lastes i realtime: cd /etc/selinux/targeted/src/policy/ && make reload Modulær: semodule -l semodule -i modul.pp

22 Konfig-filer Oppførsel (settes i /etc/selinux/config): enforcing
permissive disabled Ulike policy /etc/selinux/POLICYTYPE/policy/ targeted (1.1M) strict (2.5M) mls (2.2M) permissive – printer warnings, men ingen enforce disabled – helt disabled i kjernen.

23 Targeted policy Et sett med daemoner omfavnet av policy (RHEL4):
dhcpd, apache, named, nscd, ntpd, portmap, squid,.. Dvs. disse har skreddersydd policy. Resten har “full aksess”. Puttet i en “unconfined” domain. 'unconfined_t' eller 'initrc_t' Samme aksess som om SELinux var skrudd av. Policy enforcement kan skrus av for hver daemon. Ingen fokus på SELinux-bruker og -rolle i targeted. Ikke noe poeng å legge til SELinux-brukere.

24 Det er denne du vil bruke.
Targeted policy Det er denne du vil bruke.

25 Administrasjon sestatus – viser SELinux status.
/selinux – egen selinux-statuskatalog (lik /proc) “SELinux-opsjonen” = “Z” Viser security context. Eks: $ id -Z user_u:system_r:unconfined_t $ ps -Z LABEL PID TTY TIME CMD user_u:system_r:unconfined_t pts/ :00:00 bash user_u:system_r:unconfined_t pts/ :00:00 ps SELinux bruker: users_u SELinux rolle: system_r SELinux type: unconfined_t

26 Filhåndtering Endre security context på filer:
chcon - for endring av security context (lik chmod) restorecon/fixfiles – sjekk og fiks av security context i henhold til policy. touch /.autorelabel && reboot (anbefalt!) 'tar --selinux' – bevarer security context. Finne filer med bestemt security context: find / -context system_u:object_r:net_conf_t Kanskje vise i terminal. Lage en fil under /etc, vise at den ikke får samme security context som de andre. /etc/selinux/targeted/contexts/files/file_contexts fixfiles et shell-wrapper for setfiles og restorecon

27 Variabler Kan tune policy uten å endre, bygge og lastes på nytt.
Kan “skru av SELinux” for utvalgte daemons. Mer presist: Transition til spesifikk domain droppes. Dvs. prosessen forblir i en unconfined domain. Definert: /etc/selinux/targeted/booleans Gjenspeilt: /selinux/booleans/* 'getsebool -a' – for å liste. 'setsebool -P VARIABEL' – for å sette. GUI = system-config-selinux Ser en trend i at SELinux blir mer modulær og mer variabler som kan tunes. Samt verktøy for å endre blir bedre. # echo "1 1" > /selinux/booleans/ntpd_disable_trans # echo 1 > /selinux/commit_pending_bools Vise ved eksempel: Starte ntpd – vise Z Endre trans Restarte ntpd – vise Z Vise system-config-selinux

28 Utfordringer NFS / Samba.
Løsning: Setter én security context ved mount: mount -o context=user_u:object_r:user_home_t .. Brukervennlighet: “Det fungerer ikke! Har satt riktig eierskap!” *Sjekke logger*: “May 4 17:54:24 valhall5 kernel: audit( :63): avc: denied { read } for pid=1038 comm="setfiles" name="2" dev=proc ino= scontext=system_u:system_r:setfiles_t:s0 tcontext=system_u:system_r:kernel_t:s0 tclass=dir” “WTF!?!?” (Skrur av SELinux) RHEL5: /var/log/audit/* /var/log/messages Egen selinux-troubelshooter.

29 SELinux fremover Økt omfavnelse. dvs. mer skal beskyttes av policy.
Økt fokus på brukervennlighet! flere (grafiske) verktøy. RHEL legger grunnlaget for videre sikkerhetsmodellering. MLS og MCS. For å oppnå sertifiseringer (EAL4+, LSPP, ..) Lik teknologi (en konkurrent?): AppArmor.


Laste ned ppt "SELinux – Linux på MAC MAC på Linux Lars Strand 7. mai 2007."

Liknende presentasjoner


Annonser fra Google