Você está na página 1de 55

SELinux

Vinicius Uriel

OQueSELinux?

SELinux

SecurityEnhacedLinux
AagnciadesegurananacionaldosEstados
Unidos(NSA)desenvolveuumprojetode
pesquisaqueresultounaFlaskSecurity
Architecture.
OSELinuxumaimplementaodessa
arquitetura.

SELinux

Ossistemasdecontroledeacessodisponveis
namaiorpartedossistemasoperacionaisse
restringeaumcontroledeacesso
discricionrio.
AarquiteturaFlask(FluxAdvancedSecurity
Kernel)secolocacomoumaalternativa,
implementandocontrolebaseadoempapise
mandatrio.

SELinux

DAC:DiscretionaryAccessControl
Controledeacessobaseadonapossedo
objeto,odonodoobjetotemacessototalao
seuobjetoedefinequetiposdeacessodar
aosdemaissujeitosdosistema.

SELinux

MAC:MandatoryAccessControl
Ocontrolebaseadonapermissodeacesso
aumaclassedesigiloespecfica.Asclasses
desigilosoimutveis,prestabelecidase
fixadaspelosistemaoperacional.
Ex:MLS/MCS,implementamodelo
mandatriodescritoporBelleLaPadula.

SELinux

RBAC:RoleBasedAccessSystem
Cadapapelnosistemapossuiumconjuntode
permisses.
Umusuriorealpodedesempenhardiversos
papis.

SELinux

FlaskArchitecture:

Controlesobrepropagaodeprivilgios.

Acadaaoaspermissessoverificadas.

Permissesdeacessobastanteconfigurveis.

Anulaodepermisses.

Histria

SELinux

Motivaes:

AumentodaComplexidadedossoftwares.

Aumentocontnuonaquantidadesdeincidentes
deseguranaemTI.

Interconectividade.(Internet)

Patchversus0dayAttacks

SELinux

SistemasUnixdisponibilizamumasriede
mecanismosdeproteo:

ACLs

Proteesdememria

SandBoxing

Controledeacessodiscricionrio

SELinux

DiantedessecontextoaNSA(Agncia
NacionaldeSeguranca,EstadosUnidos),
realizouumasriedeprojetosdepesquisa,
umdelesresultounaarquiteturaFlask.

SELinux

Lanadoem2000
DesenvolvidosobrealicensaGPL,jquefoi
desenvolvidopelacomunidadeopensource
emcolaboraocomaNSA.
Inicialmentefoidesenvolvidocomoumpatch
aokernel2.2eemseguidaparao2.4

SELinux

PosteriormentefoicriadaumaAPInokernel
2.5doLinux,LSM(LinuxSecurity
Modules).
EstaAPIdsuporteamodulosdesegurana
externosaoKerneldoLinux.
EssaAPIfoiprojetadaparaatenderas
necessidadesdoSELinux.Poisestefoia
motivaodesuacriao.

SELinux

SugestodoprprioLinusTorvalds,que
preferiaessaabordageminserodo
SELinuxdiretamentenoKernel.
Hoje,diversasdistribuiesdosuporteao
SELinux.

SELinux

Funcionamento

SELinux

OSELinuxtomasuadecisocombaseem
trselementosbsicos:

Sujeitos(Processos)

Aes

Objetos(ArquivosouProcessos)

SELinux

SELinux

Quandoumsujeitotentarealizarumaao
sobreumobjeto,osContextosdeSegurana
doatoredoobjetosoenviadosaoServidor
deSeguranaqueirtomaradecisobaseada
nassuaPolticas.

SELinux

OSELinuxassociainformaes,chamadasde
atributosdesegurana,aossujeitoseobjetos.

Useridentity

Role

Type(Domain)

SELinux

UserIdentity

IdentidadesnoSELinux,nonecessriamente
associadoaumusuriodosistema.Arelaode
nparan.

Paraprocessos,indicaocontasobaqualo
processoestrodando

Nocasodeobjetos,determinaascontasde
usurioquesodonasdoobjeto

SELinux

Role

UmusurioSELinuxpodeestarassociadoaum
oumaispapis.

Ospapis(roles)definemumconjuntode
permissesdadosaousurio.

Todoobjeto(arquivos)sodotipoobject_r,eem
geralestoassociadosaalgumaclasse.

Asclassesagrupampermissesrelativasaum
determinadoobjeto.

SELinux

Type

DivideSujeitoseObjetosemgrupos
relacionados.

EstabelecemSandBoxesondeumprocessofica
confinado.

EmSELinuxchamadodeDomnioquandose
refereaumprocesso.

SELinux

ContextodeSegurana:

Atuplaformadapelostrsatributosdesegurana
doSELinuxchamadadecontextodesegurana.

Combasenoscontextosdeseguranaqueso
tomadasasdecisesdeacessooudetransio.

SELinux

TiposdeDeciso:

DecisesdeAcesso

Decideseumsujeitopoderealizardeterminada
operaoemdeterminadoobjeto.

DecisesdeTransio

Determinaotipoqueserassociadoaobjetosrecm
criados:ArquivosouProcessos.

SELinux

DecisesdeAcesso

Decisestomadascomrelaoaoscontextosde
seguranadosujeitoedoobjeto.

Oservidordeseguranaretorna3vetores

Allow

AuditToAllow

DontAudit

SELinux

DecisesdeAcesso

Verificamseumsujeitodeumdeterminado
domniotemdeterminadapermissoaumobjeto
deumadeterminadaclassedeoutrodomnio.

SELinux

DecisodeTransio

Processos

Quandoumprocessocriadoeleassociadoao
mesmodomniodoprocessopai.
Algunsprocessossodefinidoscomopontode
entradasemnovosdomnios,quandoelessopostos
emexecuotransicionamparaonovodomnio.

SELinux

DecisodeTransio

Arquivos

Porpadrosemprequeumnovoarquivocriadoele
recebeotipododiretrioemqueestcontido.
Podemserdefinidasregrasqueatribuamtipos
especficosparaarquivoscriadospordeterminados
processosemdeterminadosdomnios.

SELinux

ModosdeFuncionamento

Todavezqueumadecisotomada,osvetores
deacessoretornadossoguardadosemuma
cachechamadoAVC,paramelhorara
performance.

AVC:AccessVectorCache

SELinux

ModosdeFuncionamento

OSELinuxpodeserconfiguradoparafuncionar
de2maneiras:

Enforcing

Asregrassoaplicadasesogravadososlogs

Permissive

Oslogssogravadosmasnoimpedenenhumaao

UtilizandoSELinux

SELinux

UmusuriodefinidoemSELinuxporum
nomeseguidodosufixou.Ex:user_u
Umpapeldefinidoporumnomeseguidode
_r.Ex:sysadm_r
Umtipo/domniodefinidoporumsufixot.
Ex:sysadm_t

SELinux

Umcontextodesegurana:

system_u:system_r:sendmail_t

Usurio:system_u

Papel:system_r

Tipo:sendmail_t

SELinux

Ferramentas:

Hdiversasferramentasqueauxiliamna
administraodoSELinux.

Algumasferramentasdesistemaforam
modificadasparamelhoraraintergraocomo
SELinux(opoZ)

SELinux

Exemplos:

idZ

psauxZ

lscontext

getenforce,setenforce

semanage

sestatus

SELinux

MaisExemplos:

audit2allow

semodule

seinfo

SELinux

Polticas

Aspolticasdefinemasinteraesentreos
objetospapisedomnios.

Asdistribuiesjvemcomumasriede
polticasimplementadas.

Aspolticassocdigosbinrioscompilados
carregadosnoSELinux.

SELinux

Sintaxesbsicas

PoliticasdeTransio:

type_transition<tipo(s)fonte><tipodoobjeto>:
<classe(s)><novotipo>
Osargumentosnopluralpodemseragrupadosentre
{}casohajamaisdeum
Trasiesdedomniosempretemprocessnolugarda
classe.

SELinux

Exemplo:

type_transitiontipo1_t
tipo3_t

tipo2_t:{dirfile}

Quandoumprocessonodomniotipo1_tcriarum
arquivoouumdiretriodentrodeumdiretriodo
tipotipo2_tesseobjetopassaraserdotipo
tipo3_t

SELinux

Polticasdepermisso:

<tipo_av><tipo(s)fonte><tipo(s)
alvo(s)>:<classe(s)><permisses>

tipo_av:Tipodovetordeacesso,Allow,
AuditAllow,DontAudit
Osargumentosnopluralpodemseragrupadosentre
{}casohajamaisdeum

SELinux

Exemplo

Allowtipo1_ttipo2_t:file{readappend}

Permitequeumprocessodotipo1_tleiaouacrescente
dadosaofinaldeumarquivodotipo2_t

SELinux

Umpolticacompostabasicamentepor3
arquivos:

Umarquivoquecontemasregrasdapoltica
comextenso.te(typeenforcement)

Umarquivoquecontemocontextodosarquivos
utilizadosnaregracomextenso.fc(filecontext)

Umarquivocomumadescriodoseumdulo
comextenso.if(interface)

SELinux

Dos3arquivos,apenaso.teobrigatrio.
Aocompilarapolticasergeradoum
arquivobinrio.pp(policypackage).

SELinux

Paraescreverumapolticanecessrio
conhecerbemostipos,osusurioseospapis
definidosemseusistema,almdeconhecer
asclassesdeobjetoseaspermisses
associadasacadaclasse.
:'(

SELinux

ParafacilitaraescritadepolticasoSELinux
usaumasriedemacros,quesero
processadaspeloprocessadordemacrosM4,
muitopopularemunix.
Essasmacrosecapsulamvriasoperaese
agrupampermissescomumenteutilizadas.

SELinux

Apesardeseremumpoucomelhor
documentadas,asmacrosaindaexigemque
seconheabemumnmeromuitogrande
delas.
Oproblemainicialnofoiresolvidopor
completo.
:'(

SELinux

Existeumesforoporpartedos
desenvolvedoresdoSELinuxeporparteda
distribuiesemproverferramentasque
facilitemasrotinasdeadministraode
polticasdoSELinux.
Algumasferramentasgrficassoiniciativas
dapropriaequipededesenvolvimentodo
SELinuxeindependemdadistribuio.

SELinux

QuandoumaoperaonegadapeloServidor
deSegurana,elagravadaemumlog,
(Excetonocasodovetordontauditser
retornado).
Essamensagemconhecidacomoavc:denied
Podemsergravadaem/var/log/messagesou
emlogprprio.Ex:Fedora9,localizadosem:
/var/log/setroubleshoot

SELinux

Essamensagempodeserutilizadaparagerar
umaregraquepermitadeterminadaoperao.
Utilizandoocomandoaudit2allowpossvel
gerararegraquepermitadeterminada
operaoapartirdamensagemdenegao.

SELinux

Tambmnoideal.

Podeestarabrindoumabrechamaiordoquea
esperada.

SELinux

Performance:

Apesardoartigosobreaarquiteturadefrasco
afirmarqueaarquiteturateriamodestosimpactos
sobreodesempenhodosistema,emsuaprimeira
implementaoreal(oprprioSELinux),foi
constatadaumaperdadedesempenhodecercade
7%.

SELinux

Demonstraes:

http://www.coker.com.au/selinux/play.html
(fedora)

SELinux
Obrigado!
Fontes:
http://jczucco.googlepages.com/node2.html
http://www.nsa.gov/selinux/papers/flaskabs.cfm
http://www.centos.org/docs/5/html/Deployment_GuideenUS/
Captulos8,43e44
http://www.redhat.com/docs/manuals/enterprise/RHEL4
Manual/pdf/rhelselgen.pdf
McCarty,Bill.SELinux.O'Reilly.October2004

ViniciusUriel

Você também pode gostar