Escolar Documentos
Profissional Documentos
Cultura Documentos
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