Documente Academic
Documente Profesional
Documente Cultură
br
[versoparaimpresso]
Linkoriginal:http://www.devmedia.com.br/articles/viewcomp.asp?comp=20818
InfraMagazine1
Receba notificaes :)
[ArtigodisponvelnoLeitorDigitalDevMedia.Cliqueaquiparaacesslo]
>CliqueaquiparalertodososartigosdaInfraMagazine1
Ateno:esseartigotemumvdeocomplementar.Cliqueeassista!
Doquesetrataoartigo:
Esteartigotemcomoobjetivodemonstrardeformaprticaalgumastcnicasdeblindagemdesistema
tambmconhecidascomoHardening.Estatcnicaconsistenaimplementaodediretivasdeseguranaque
devemserseguidasantes,duranteeapsainstalaoeconfiguraodeservidoresGNU/Linux.
Paraqueserve:
AtcnicadeHardeningpodeserutilizadaemqualquersistemaoperacional.Comograndeaumentono
nmerodeameaasexistentesnaInternetfundamentalqueosistemadeumservidorestejapreparado
parasuperartodasastentativasdeinvaso.Estatcnicanodeveserimplementadasomenteem
servidoresqueficamconectadosdiretamenteaInternet,muitasvezesfornecendoservioscomo,por
exemploservidoresweb,mastambmemmquinasqueprovmserviosinternosderedecomoservidores
dearquivosedeimpresso.Comablindagemdesistemaspossvelaumentarodesempenhodohardware,
liberandorecursosqueestosendoutilizadosporaplicativosdesnecessrios,implementandoconfiguraes
especficasemalgunsservios,almdegerarumambientemaisseguro.
Emquesituaootematil:
Hardeningpodeserutilizadoparaevitarqueusuriosmalintencionadosaproveitemdaausnciado
administradoreimplantemscriptsmaliciososemservidoresinfectandotodaarede,bloquearqueousurio
administradorfaalogindiretamentenoterminal,efetuarlogoutportempodeinatividade,removerpacotes
quenosoutilizados,removerpermissesespeciaisdebinriosexecutveis,dentreoutrastcnicasque
seroapresentadasposteriormente.
Autores:FlvioAlexandredosReis,MarcosFabianoVerbenaeEduardoPaganiJulio
DevidoaocrescentenmerodeameaasexistentesnaInternetedentrodosambientescorporativos,sefaz
necessriaautilizaodetcnicascapazesdeproporcionarmaiorsegurana,estabilidadeetranquilidade
paraosadministradoresderedes.Pensandonisso,esteartigotemcomoobjetivoapresentaroconceitoe
Receba notificaes :)
tcnicasdisponveisparaaimplementaodehardeningemservidoresGNU/Linux.
Hardening,oublindagemdesistemas,consistenautilizaodetcnicasparaprovermaisseguranaa
servidoresquedisponibilizamserviosexternos,comoservidoresWeb,ouatmesmoserviosinternos,
comoservidoresdebancodedados,dearquivos,entreoutros.
Nesteartigosoanalisadasediscutidastcnicasparaaaplicaodehardeningdesdeainstalaodo
sistemaoperacional,oprocessodeparticionamentodediscos,anlisedeserviosdesnecessriose
inseguros,localizaodesenhasfracas,verificaodeusuriosinvlidos,desconexodeusuriosno
autorizados,implementaodepolticasdeutilizaodeserviosderede,gerenciamentodeprivilgiose
aplicaodesegurananoterminal.
Paraarealizaodaparteprticadoartigo,foramutilizadostrscomputadorescomasseguintes
configuraes:Cliente1:Ubuntu9.10Cliente2:Ubuntu9.10Servidor:DebianLenny.
Paraoservidor,osistemaoperacionalescolhidofoioGNU/DebianLenny,porserumLinux
reconhecidamentepelacomunidadecomoestvelerobusto,voltadoparaservidores.Astcnicasaqui
demonstradasforamimplementadasnoservidoreasmquinasclientesforamutilizadasapenasparaa
realizaodeacessosemonitoramento,conformeaFigura1.
Receba notificaes :)
Figura1.Estruturautilizadaparaoartigo.
DicaDevMan:Oadministradordeverteratenoaoimplementarastcnicas.Casonotenhaexperi
ncianosexemplosaquidemonstrados,faaostestesemmquinasvirtuaisafimdeentendereevitarp
ossveisfalhasnaimplementao.
Hardening
Ohardeningconsistenarealizaodealgunsajustesfinosparaofortalecimentodaseguranadeum
sistema.Muitosadministradoressemexperinciaemseguranapreparamseusservidorescomuma
instalaobsicaedepoisquesuasaplicaesestodisponveisnenhumprocedimentofeitoparamanter
aintegridadedosistema.
EmumsistemaGNU/Linuxpossvelatingirumaltonveldeseguranaimplementandoconfiguraesque
permitamoaperfeioamentodaseguranaaplicadaaosistema.Quandosedesejaaplicaratcnicade
hardeninghtrsgrandezasquedevemserconsideradas:segurana,riscoeflexibilidade.
Oadministradorderedesdeveanalisarmuitobemessasgrandezaseencontrarumestadodeharmonia
entreelas,levandoosistemaaumaaltaprodutividadeesegurana,poisquantomaioraseguranamenoro
riscoetambmaflexibilidade.
importanteressaltarqueastcnicasaquiapresentadaspodemnoseradequadasparatodasas
situaes.Porisso,antesdeimplantarefetivamenteastcnicasdehardening,fundamentalquehajaum
estudocompletodocenrioeserviosemquesto.Inicialmenterecomendasesempreinstalarverses
atuaisdossistemasoperacionais,quecontenhamcorreesepatchesdesegurana,poispodeser
problemticoutilizarumaversoantigasematualizaes,deixandoosistematemporariamentevulnervel
nocasodaexistnciadepacotescomfalhas.Servioscrticoscomoweb,emaileDNSdevemestarsempre
nasversesmaisatuais.Softwaresdesnecessriosdevemserdesinstaladosepacotesinsegurosdevemser
substitudosporalternativasmaisconfiveis.
Receba notificaes :)
Aseguirsoapresentadasalgumasutilizaesdehardeningmuitoteisnaconfiguraodesistemas
operacionais.
Particionamento de discos
Oparticionamentodediscosumpontoimportantequandosepensaemsegurana.Aoparticionarodisco,
inseridanosistemaumamaiorsegurana,poiscadapartiotemsuatabeladealocaodearquivos
separada.UmexemplodecomopodeserconfiguradaatabeladepartiesapresentadonaTabela1.
/boot X
/home X x
/usr X
/tmp X x
/var X x
/var/log X x x
Tabela1.Opesdatabeladeparties.
DicaDevMan:nosuidoparmetrousadoparainibiraexecuodebinrioscompermissodesuidbi
tnoexecoparmetrousadoparainibiraexecuodeumbinrionapartioenoatimeoparm
etroresponsvelporeliminaranecessidadedeescritanodiscoparaarquivosqueprecisamsersomente
lidos.
Ocomandomount(comandoUNIXusadoparamontarparties)permiteutilizaralgumasopespara
aumentarasegurananasparties.Crackerspodemaproveitardodiretrio/tmp,ondeporpadro,
qualquerusuriopodegravardadosnosistema,paraintroduzirumbackdoorouqualqueroutroprograma
maliciosoparaterumacessocompletoaosistema.
Backdoor:soprogramasqueinstalamumambientedeservioemumcomputador,tornandooacess
veldistncia,permitindoocontroleremotodamquinasemqueousuriosaiba,comoumaportados
fundosnoautorizada.
Receba notificaes :)
sistemaoperacional,oudesativandoosemtodososnveisdeinicializao.Almdisso,podemseremover
entradasespecficasdosprogramasnobootdosistemaoperacional.
Nesteexemplosoapresentadosospassosnecessriosparaaremoodepacotesquenosoutilizados
nosistema.Aremoodepacotesobsoletosdeverserexecutada,evitandoassimquevulnerabilidades
sejamexploradas.Paraseguiroexemplo,crieumdiretrioem/rootchamadoauditoria,ondesergerado
umarquivocomtodosospacotesqueestoinstalados,podendoassimanalisarquaisseroremovidos.
Ocomandodpkgl,utilizadoemdistribuiesGNU/LinuxDebianederivados,fazumapesquisanosistemae
listatodosospacotesinstalados.Umfiltrocomocomandoawkutilizadoparaformatarasadado
comando,mostrandoassimsomenteasegundaeterceiracolunas,eocomandosed,nesseexemplo,retira
ascincoprimeiraslinhas.Esseresultadogravadoemumarquivotextochamadopacotes.txt,comopode
servistonaListagem1.
Listagem1.ListandopacotesinstaladosnoDebian.
#dpkgl|awk'{print$2,$3}'|sed'1,5d'>/root/auditoria/pacotes.txt
EmdistribuiesRedHatederivadosutilizaseocomandorpmqa,fazendoassimumapesquisaemtodos
ospacotesinstalados,comopodeservistonaListagem2.
Listagem2.ListandopacotesinstaladosnoRedHat.
#rpmqa>/root/auditoria/pacotes.txt
Aanlisedessearquivopodeserumpoucodemorada,aindamaisseoadministradorestiveranalisandoa
sadageradaporumservidorRedHat,umavezqueessadistribuiotrazumnmeromaiordepacotes
instaladosqueumGNU/LINUXDebian.Umpacoteinteressantepararemoverowget.Comessecomando,
umcrackerpodefazercomqueoservidoralvoexecutedownloadsdearquivos,atravsdeumservidorWeb
forjado,porexemplo.Assim,ocrackerpodejogarqualquerscriptquepossadanificarosistemaouat
mesmoabrirumaportaparanovasinvases.
Ocomandoaptituderemoveoaplicativowget,eaopopurgefazcomqueosarquivosdeconfiguraodo
aplicativosejamremovidos,casoexistam,nodeixandovestgiosdesuainstalao,comopodeservistona
Listagem3.
Listagem3.Removendoaplicativos.
#aptitudepurgewget
Outroexemploopacotewirelesstools.Casooservidoremquestonotenhanenhumaplacaderedesem
fio,nohnecessidadedetalaplicativo.
Receba notificaes :)
namaioriadasvezes,assenhasescolhidassofceisdeseremdescobertas,poissousadassequncias
simples,como123456,ouinformaespessoaiscomodatasdeaniversrio,nomeprprio,entreoutras.
Nestescasos,possvelutilizarferramentascapazesdeavaliarseasenhadousuriofracaouno.O
utilitrioJohntheRipperpodeserutilizadocomafinalidadedeencontrarsenhasfracasescolhidaspor
usuriosdeumsistema.Encontrandosenhasfracas,oadministradorpodersolicitarqueousurioefetuea
substituiodasenhaporoutraqueatendaapolticadesegurana,tornandoassimosistemamaisrobusto
etoleranteexploraodevulnerabilidades.
SeumaauditoriaestsendoexecutadaemumservidorGNU/Linuxdeumaempresa,sernecessrio
descobrirseosusuriosestousandosenhasfracas.Noquedizrespeitossenhas,anormaISO27002diz
nositens11.2.3e11.3.1quedevemsercontroladaspormeiodeumprocessodegerenciamentoformale
queosusuriossejamsolicitadosaseguirboasprticasdeseguranadainformaonaseleoeusode
senhas.
Noexemplo,oaplicativoJohntheRipperutilizadoparatestedesenhasfracas.Eleumaferramentade
BruteForce(forabruta,quetestacombinaesdesenhaparaencontrararesposta),quepodeajudara
descobrirsenhasfracasdeusurios,checandodiretamenteoarquivo/etc/shadowdosservidores.O
aplicativopodeserinstaladocomoaptitude,comopodeservistonaListagem4.
Listagem4.InstalandooJohntheRipper.
#aptitudeinstalljohn
OJohntheRipperexecutadopassandocomoparmetrooarquivo/etc/shadow.Ocomandotimefoi
acrescentadoparaquepossacontarotempoqueoaplicativolevouparadescobrirasenhadosusuriose
tambmdoroot,conformemostraaFigura2.
Figura2.ExecuodoJohntheRipperprocurandoporsenhasfracas.
Regrasparadefinirsenhasfortesdevemserlevadasemconsideraocomo,porexemplo,estipularum
nmeromnimodecaracteres(porexemplo,10caracteres),utilizarletrasminsculas,maisculas,nmeros
ecaracteresespeciais.Faacomqueassenhassejamalteradasemintervalosdetempocurtos,quepodem
serdefinidospeloadministrador.Umvalorquepodeseradotadoacada20dias,porexemplo.Definaa
quantidadedesenhasjutilizadasquenopoderoserreaproveitadas.Devesetambmeducaros
usuriosparaquenodivulguemsuassenhasparaterceiros.
Receba notificaes :)
Tomandoessasprovidnciassimples,podeseimpedirquealgumatacanteconsigaquebrarasenha
utilizandoforabruta.Mesmoqueasenhasejaquebradaemalgummomento,comatrocadesenhas
peridica,estapoderjnosermaisvlida.
OPAM(PluggableAuthenticationModule)umconjuntodebibliotecascompartilhadasquepermitemao
administradordosistemalocaldefinircomodeterminadasaplicaesautenticamosusurios,sema
necessidadedemodificarerecompilarprogramas.OPAMumrecursoqueauxiliamuitoquandosepensa
emsegurana.Existemvriosmdulosquepodemserimplementados,aumentandoassimocontrolede
criaoetrocadesenhas.AFigura3mostraqueousurionoconseguiumudarasenhanaprimeira
tentativa,recebendoamensagemEscolhaumasenhamaislonga.Issoocorredevidoaumaalteraono
mdulodoPAM.Aopomin=10foiadicionada,limitandoassimumtamanhomnimoparaasenha
escolhida,comopodeservistonaListagem5.
Figura3.Alterandoassenhadosusurios.
Listagem5.Limitandootamanhomnimodeumasenha.
passwordrequiredpam_unix.sonullokobscuremin=10md5
Usurios Invlidos
NosSistemasGNU/Linuxhtrstiposdeusurios,usurioroot,queoadministradordosistema,usurios
comuns,osquaispossuemumasenhaparalogarnosistemaeacessoaumdiretriohomeondeosmesmos
poderoterprivacidadecomseusarquivospessoaise,porltimo,osusuriosdesistema,responsveispor
controlarrequisiesdeservios.Oshellainterfaceentreusurioesistema.Semumshellvlido,no
possveldigitarcomandoseinteragircomosistema.Ousuriodesistemawwwdata,responsvelpor
receberrequisiesdoservidorWeb,queestejacomumshellvlido,poderintroduzirvulnerabilidadesao
seusistema.
Oacessonoautorizadoporsistemasexternosdevesercanceladocomextremaurgncia,emespecialseo
Receba notificaes :)
usurioestiverocultandosuaidentidade.Paraoscasosdeacessoporusuriosinternosnoautorizados,
podemsernecessriasaesdisciplinaresdependendodanaturezadoacesso.
importantesalientarque,quandoocorreumainvasodesistema,fundamentalqueasevidncias
relacionadasaoacessoindevidosejamregistradasantesdadesativaodacontanoautorizada,tendo
cuidadoparanodestruirprovasrelacionadasaocrime.
Gerenciamento de privilgios
Ousuriorootomaisvisadoporcrackersouusuriosmalintencionados.Seufococonseguirasenha
rooteobteracessototalaosistema.
Paradificultaraaodestasameaas,desativarologincomousuriorootnosterminaismodotextotorna
sefundamental.Dessaforma,oadministradordeverefetuarologincomousuriocomumequandofor
necessrioexecutarumatarefaadministrativatornarserootcomocomandosu.Determinaradatade
validadeparaasenhadosusuriose,comauxliodocomandousermod,removershellsvlidosdeusurios
quenoestoemusotambmsoaesimportantesaseremtomadasparagarantirarobustezdo
sistema.
Segurana no Terminal
Quandocitadooassuntosegurana,logoseimaginaaexploraodeumavulnerabilidadeporumaameaa
remotae,namaioriadasvezes,asameaasinternassoesquecidasouatmesmosubestimadas.Usurios
internosmalintencionadospodemcausargrandesprejuzose,seousurioemquestotiveracessofsico
Receba notificaes :)
aosservidores,asituaoficaaindamaisgrave.
Umusuriomalintencionadocomacessofsicoasaladeservidorespodeusufruirdeumaestaologada
comousuriorooteassimdanificarosistema.AvarivelTMOUTtemafunodeexecutarumlogout
automticoapsdeterminadotempodeinatividadedoterminal.Seuvalorpodeserconfiguradonoarquivo
/etc/profile.Ovaloraseradicionadodeverseranalisadocomcuidado,evitandoassimacessosindevidos.
Valoresmuitoaltospodemdarespaoparaqueousuriotenhaacessoestaologadocomoroot,valores
muitobaixospodeminterferiremtarefasondenecessrioumapesquisa,porexemplo.Oarquivo
/etc/profilesereditadoeadicionadoavarivelcomvalorde60segundos,comopodeservistona
Listagem6.
Listagem6.Inserindovaloresno/etc/profile.
#vim/etc/profile
TMOUT=60
exportPATHTMOUT
Oarquivo/etc/profileslidoduranteobootdosistema,dessaformautilizaseocomandosourceparaque
oarquivopossaserlidonovamenteatribuindoaosistemaasalteraesaplicadas,comopodeservistona
Listagem7.
Listagem7.Comandosource.
#source/etc/profile
Aps60segundosdeinatividade,oshellfarlogoutautomtico,conformemostraaFigura4.
Figura4.Terminalefetuandologoutautomtico.
Outropontoimportanteaserlevadoemconsideraoquandosepensaemcontroledeacessoemuma
organizao,avaliarquemtemacessoaosservidores.Usuriosmalintencionadospodemsimplesmente
usaroCTRL+ALT+DELparareiniciaroservidor,parandoassimtodososserviosdisponveisemumarede.
Issopodeocorreremempresasquenotmumapolticadeacessoaosseusservidores.Segundoanorma
ISO27002,devemsetratarasquestesdeacessofsicosaladeservidores.Noentanto,
independentementedestanorma,podeseinibirafunoCTRL+ALT+DELeditandooarquivo/etc/inittab,
conformeaListagem8.
Listagem8.Editandooarquivo/etc/ssh/inittab.
#vim/etc/inittab
#Antes
#WhattodowhenCTRLALTDELispressed.
ca:12345:ctrlaltdel:/sbin/shutdownt1arnow
#Depois
Receba notificaes :)
#WhattodowhenCTRLALTDELispressed.
#ca:12345:ctrlaltdel:/sbin/shutdownt1arnow
#ou
#Depois
#WhattodowhenCTRLALTDELispressed.
ca:12345:ctrlaltdel:/bin/echoOpodesativada!
SSH
OSSH(SecureShell)umprogramausadoparaacessarremotamenteoutrocomputadorusandoumarede,
executarcomandosemumamquinaremotaecopiararquivosdeumcomputadorparaoutro.Fornece
autenticaoforteecomunicaosegurasobrecanaisinseguros(comoaInternet,porexemplo).muito
usadoparalogaremumsistemaGNU/LinuxatravsdeumamquinaWindows,Macoumesmooutro
GNU/Linux,naqualostradicionaistelneterloginnopodemfornecercriptografiadasenhaedasesso.
Detalhesimportantesprecisamserlevadosemconsideraoquandoumservidorsshconfigurado.Para
isso,algumasconfiguraesimportantesdevemserfeitasnoarquivodeconfigurao,conformeapresentaa
Listagem9.
Listagem9.Editandooarquivo/etc/ssh/sshd_config.
#vim/etc/ssh/sshd_config
#Altereaportapadro
Port42129
#Protocolo2(anteriorespossuemfalhasdesegurana)
Protocol2
#Tempoativadoparadigitarasenha
LoginGraceTime45
#Noaceitarlogincomoroot
PermitRootLoginno
#Noaceitarloginsemsenha
PermitEmptyPasswordsno
#Usaromodulodopamparaseautenticar
UsePAMyes
#Definirusuriosquetempermissodefazerlogin
AllowUsersflaviomarcoseduardo
Apsefetuarasalteraes,oserviosshprecisaserreiniciado(verListagem10).
Listagem10.Reiniciandooserviossh
$invokerc.dsshrestart
Portas Abertas
Quandoosistemanovoinstalado,algunsaplicativos(servios)podemabrirportasintroduzindoassim
vulnerabilidadesnosistema.Comoaplicativonmap,podesefazerumabuscaportodasasportasabertas
Receba notificaes :)
nosistemae,emseguida,podemsercriadasregrasnofirewallparabloquearasquenodevemestar
disponveis.UmalistagemdeportasfeitautilizandooaplicativonmappodeservistonaListagem11.
Listagem11.Listagemdeportasutilizandonmap.
#nmapAp165535localhost
PORTSTATESERVICEVERSION
22/tcpopensshprotocol2.0
25/tcpopensmtpPostfixsmtpd
53/tcpopendomaindnsmasq2.47
80/tcpopenhttphttpd2.2.11
631/tcpopenippCUPS1.3.9
3306/tcpopenmysqlMySQL5.0.750
nmap:NetworkMapper,umaplicativolivreedecdigoaberto,sobrelicenaGPL,utilizadoparaexplo
rarumaredeafimdeefetuarumaauditoriadesegurana.
Analisandooresultadodonmappodeseobservarqueaporta80estaberta,normalmenteusadaporum
servidorWeb.Seesseservionoforutilizado,aportadeverserfechada,evitandoquevulnerabilidades
sejamexploradas.Umaregradofirewalliptablespoderserutilizadaparabloqueartentativasdeacessoa
essaporta,comoexibeaListagem12.
Listagem12.Bloqueandoaporta80comiptables.
#iptablesAINPUTieth0ptcpdport80jDROP
Apsadicionararegranofirewall,faanovamenteapesquisacomonmapeanaliseoresultado.Observe
queaporta80estsendofiltrada,conformeaListagem13.
Listagem13.Conferindoportascomnmap.
#nmapAp80localhost
PORTSTATESERVICEVERSION
22/tcpopensshprotocol2.0
25/tcpopensmtpPostfixsmtpd
53/tcpopendomaindnsmasq2.47
80/tcpfilteredhttp
631/tcpopenippCUPS1.3.9
3306/tcpopenmysqlMySQL5.0.750
SUID BIT
OSUIDBITumadaspermissesespeciaisdisponveisnoGNU/Linux.Quandoestatribudaaumbinrio,
possvelqueumusurioexecuteomesmocomosprivilgiosdeseudono.Seodonodobinrioforo
usurioroot,ousuriovaiexecutarobinriocomoroot.
Podemosencontrarproblemasdeseguranaaoterbinrioscomessapermissoespecialconfigurada.
SegundoanormaISO27002,noitem11.6.1,oacessoinformaoesfunesdossistemasdeaplicaes
porusurioepessoaldosuportedevemserrestritas,deacordocomodefinidonapolticadecontrolede
acesso.Essepontodeveestarmuitobemdeterminadoeesclarecidoparatodososfuncionriosda
Receba notificaes :)
organizao.Poiscasoalgosejaviolado,existeumdocumentoparacomprovarqueaquilonocerto.
Atravsdeumscriptpossvellocalizarealteraressapermisso,comoapresentaaListagem14.
Listagem14.ScriptsugeridopararemoodepermissesSUIDBIT.
#vim/root/auditoria/localiza_suid.sh
#!/bin/bash
#Enviaumamensagemnasadapadrodevdeo
echo"VerificandoarquivoscompermissodeSUIDBIT.."
#fazumabuscaemtodosistemaporarquivosquecontenhamapermissodeSUIDBITesalvaemumarquivotexto
find/perm4000>/root/auditoria/list.suid
#Enviamensagemnatelaorientandooquedeveserfeito
echon"DesejaremoveroSUIDBITdosarquivos?(S/N):"
#Recebeaopoescolhida
readacao
#Executaaao
case$acaoin
S|s)
chmodRvs/
echo"PermissesdeSUIDBITRemovidas!"
sleep3
exit
;;
N|n)
exit
;;
*)
echo"OpoInvlida!!"
sleep3
exit
;;
esac
Depoisdecriadooscript,necessrioalterarsuaspermisses,deixandoqueapenasousuriorootpossa
executlo,eretirandoqualquerpermissodosdemaisusuriosegrupos.Paraessafunousadoo
comandochmod(Listagem15).
Listagem15.Alterandoaspermissesdoscript.
#chmod700/root/auditoria/localiza_suid.sh
Oprimeiropassoexecutaroscript,ecomoparmetrodeverserutilizadonouN.Nessemodoele
apenasirgerarumalistadebinriosquepossuemapermissodeSUIDBITnosistema,deacordocoma
Listagem16.
Listagem16.ExecutandooscriptcomoparmetronouN.
#./localiza_suid.shn
Receba notificaes :)
Observenodiretrio/root/auditoriaqueoarquivolist.suidfoicriado(Listagem17).
Listagem17.Listandoodiretrioauditoria.
#ls/root/auditoria/list.suid
Comosetratadeumsistemarecminstalado,oadministradornodeveencontrarnenhumproblema.Mas
necessriaaatenodomesmo,poisseestiveranalisandoumservidordeumaempresa,ondeestese
encontraemproduo,devemseremoveraspermissessuid.
AgoraexecuteoscriptutilizandooparmetrosouS,removendoassimapermissoSUIDBITdetodos
osbinrios,comovistonaListagem18.Deveseobservarquaisbinriosseronecessriosficarcoma
permissoativa.Considerandoqueofirewallestsendodesenvolvido,ocomandosusernecessriopara
queousuriocomumpossavirarrooteassimexecutaraspolticasimplementadasnofirewall.Utilizandoo
comandochmod,atribuiseapermissosuidsomenteaocomandosu,comovistonaListagem19.
Listagem18.Executandooscriptcomoparmetro(souS).
#./localiza_suid.shs
Listagem19.AdicionandopermissodeSUIDBITaobinriosu.
#chmod+s/bin/su
OutrobinrioqueprecisamosdeixarcomapermissoSUIDBITativaopasswd,paraqueosusurios
consigamtrocarsuasprpriassenhas.ComocomandochmodatribuiseapermissoSUIDBITaobinrio
/usr/bin/passwd,comovistonaListagem20.
Listagem20.AdicionandopermissodeSUIDBITaopasswd.
#chmod+s/usr/bin/passwd
Comessamodificao,umdosproblemasserresolvido.MasapenasretirarapermissoSUIDBITdos
comandosnoevitarproblemasnosistemadearquivos.SegundoanormaISO27002nositens10.4e
10.4.1,deveseprotegeraintegridadedosoftwareedainformaoeterumcontrolecontracdigos
maliciosos.
Umabackdoorumcdigomalicioso.Umcrackerpodeinstalarumabackdoornosistemautilizandouma
tcnicacomo,porexemplo,oPHPInjection(inserodescriptmaliciosoatravsdepginasvulnerveis),a
colocandodentrodo/tmpcompermissesdeSUIDBITeexecutlaremotamente.
Paraexemplificarumataqueaodiretrio/tmp,utilizadoocomandoadduserparaadicionarumusurio
flavio,comovistonaListagem21.
Listagem21.Adicionandoousurioflavio.
#adduserflavio
Receba notificaes :)
Seguindooexemplo,serutilizadoocomandocpparacopiartodososshellsdosistemaparaapartio
/tmpe,logoaps,seratribudaapermissodeSUIDBIT,comovistonaListagem22.
Listagem22.TestecombinriosquetenhampermissoSUIDBIT.
#cp/bin/*sh*/tmp
#chmod4755/tmp/*sh*
Aseguirapresentadaumasequnciadecomandos,ondeousurioflavioestlogadonoterminaltty1,o
quepodeserverificadocomocomandow.Emseguidarealizadooacessoaodiretrio/tmp,onde
possvelexecutaroscriptshdeacordocomaListagem23.
Listagem23.Usuriocomumcompermissoderoot.
$w
22:31:21up3:46,1users,loadaverage:0,07,0,07,0,08
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
flaviotty122:200.00s0.26s0.01sw
$cd/tmp
$./sh
Podeseobservarcomocomandoidqueousurioflavioganhouacessoderooteuid=0(root).Sendoo
usuriorootodonodesseshellcomapermissodeSUIDBITativa,ousurioconsegueexecutaroshellsh
comoroot,conformemostraaFigura5.
Figura5.Usuriocomumrecebendodireitosderoot.
Paraevitaressetipodeproblema,algunsparmetrosdocomandomountpodemserutilizados.Oparmetro
apresentadoaquionosuid,queinibeaexecuodebinriosnapartioindicada.Logadocomousurio
root,aplicaseessaopopartiomontadaem/tmp,comovistonaListagem24.
Listagem24.Remontandoodiretrio/tmpcomaoponosuid.
#mountoremount,rw,nosuid/tmp
#mount
importantelembrarqueodiretrio/tmpnecessariamentedeverestaremumapartioseparada.Isso
segueasboasprticasdeparticionamento.
Apsteraplicadoacorreoaodiretrio/tmp,faanovamenteologincomousurioflavioetenteexecutar
ashellshnovamente.Observequeadiretivaeuid=0(root)nomaislistada.Dessaformaousurioj
notemmaispermissesderoot,conformemostraaFigura6.
Receba notificaes :)
Figura6.Usuriocomumsemdireitosderoot.
NOEXEC
Umscriptmaliciosopodeserinseridoemumapartiodosistemacausandodanosaoservidor.Ocomando
mounttemumparmetrochamadonoexec,seuusopodeevitarqueumscriptsejaexecutadodentrodessa
partio.Assim,parasolucionaresteproblema,podeseaplicaraoponoexeceremontarapartio.
Utilizandoocomandomountcomoparmetroremountapartio/tmpserremontadacomaopode
leituraeescritaeacrescentandoonoexec,deacordocomaListagem25.
Listagem25.Remontandoodiretrio/tmpcomaoponoexec.
#mountoremount,rw,noexec/tmp
Paraconferirseaalteraofoiefetivada,utilizamosocomandomountnovamente(verFigura7).
n
Figura7.Comandomount,emdestaqueapartio/tmpcomoponoexec.
Apsremontarapartio,foirealizadamaisumatentativadeexecutarobinriosh.Noentanto,agorasua
execuoestimpedida,independentedousuriologado.Noexemplofoiexecutadocomoroot,como
mostraaFigura8.
Receba notificaes :)
Figura8.Tentandoexecutarumbinrioemumapartiocomaoponoexecaplicada.
Realizandoamontagemdaspartiesmanualmente,osparmetrosnoseroaplicadosdeformafixas
parties,ouseja,aoreiniciarosistema,essasconfiguraesseroperdidas.Paraqueasconfiguraes
sejammantidasmesmoapsumrestart,bastaeditaroarquivo/etc/fstab(responsvelporarmazenara
tabeladepartiesdoGNU/LINUX,quelidoduranteobootdosistema).Dessaforma,quandoaopo
noexecinseridadiretamentenoarquivo,jserimplementadoobloqueioaoiniciaramontagemdatabela
departiesdosistema.UmexemplodessearquivopodeservistonaFigura9.
Figura9.Arquivo/etc/fstabalteradocomasopesnoexec.
Oadministradorpoderencontrarumproblemaaoexecutaroaplicativoaptitudeseasparties/vare/tmp
estiveremcomonoexecenosuidativos,poisesseaplicativoprecisaexecutarscriptsdentrodetais
parties.OscriptdaListagem26podeserutilizadoparacontornartalproblema.Dessaformapodese
removeraproteoaoexecutaroaplicativoe,emseguida,reativlas.
Listagem26.Scriptparaalteraroponoexecenosuidempartiesdesejadas.
#!/bin/bash
case$1in
start)
#montaaspartieslistadas
mountoremount,rw,noexec/var
mountoremount,rw,noexec/tmp
mount
echo"PartiesSEMpermissodeexecuo"
;;
stop)
#monstaaspartieslistadas
mountoremount,rw,exec/var
mountoremount,rw,exec/tmp
mount
echo"PartiesCOMpermissodeexecuo"
;;
*)echo"errouse$0{start|stop}"
exit0
;;
esac
Receba notificaes :)
exit1
Concluso
Nesteartigoforamtratadososconceitosdehardening,almdedemonstraralgumastcnicaspara
endureceroacessoaosistema.Contudo,oassuntomuitoextensoeimportante,devendosertratado
comofatorfundamentalemumprojetodeimplementaodeumservidor,antesmesmodeentrarem
produo,desdeainstalaoatadisponibilizaodeserviosnarede.
SistemascomooAppArmoreoSELinuxestosendoutilizadosparaaumentaraindamaisaseguranaem
sistemasLinux,criandoumacamadaamaisdesegurana,edevemserconsideradosparatambm
endurecerosistema.
importantesalientarqueexistemtcnicasdehardeningmaisespecficas,comoohardeningemkernel,em
servioscomoApacheeMySql,entreoutros,queserotemasdenovosartigos.
Links
Sitedonmap
http://nmap.org/
Hardening
http://www.ufpa.br/dicas/vir/invback.htm