Вы находитесь на странице: 1из 17

www.devmedia.com.

br
[versoparaimpresso]
Linkoriginal:http://www.devmedia.com.br/articles/viewcomp.asp?comp=20818

Hardening - Artigo Revista Infra Magazine


1
Este artigo tem como objetivo demonstrar de forma prtica algumas
tcnicas de blindagem de sistema tambm conhecidas como
Hardening.

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.

PontodeMontagem nosuid noexec noatime

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

Servios desnecessrios e inseguros


Depoisdosistemainstalado,deveserrealizadaumaverificaominuciosadetodososprogramasinstalados
esesorealmentenecessrios,mesmosendoumainstalaobsica.Umservidornuncadeveconter
programasclientes.Servioscomotelnet,rshd,rlogind,rwhod,ftpd,sendmail,identd,wget,dentreoutros,
deveroserremovidos.Estesserviospodemserdesinstaladosusandoogerenciadordepacotesdo

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.

Procura de senhas fracas


Asenhadevesernica,intransferveledepropriedadedeumnicousurio.Oadministradornodevesaber
essassenhas.Umprocedimentomuitocomumparaissoconsistenaalteraodasenhanomomentodo
primeirologindousurio.Dessaformaoadministradornoteracessosenhaescolhidapelousurio.Mas,

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.

Desconexo de usurios no autorizados


Inicialmenteimportanteteroconhecimentodequeusuriosnoautorizadospodemestardentrooufora
daempresa.

Oacessonoautorizadoporsistemasexternosdevesercanceladocomextremaurgncia,emespecialseo

Receba notificaes :)
usurioestiverocultandosuaidentidade.Paraoscasosdeacessoporusuriosinternosnoautorizados,
podemsernecessriasaesdisciplinaresdependendodanaturezadoacesso.

importantesalientarque,quandoocorreumainvasodesistema,fundamentalqueasevidncias
relacionadasaoacessoindevidosejamregistradasantesdadesativaodacontanoautorizada,tendo
cuidadoparanodestruirprovasrelacionadasaocrime.

Colocar senha criptografada no GRUB


Muitosadministradoresnoestopreparadosparalidarcomestruturascrticas.Osimplesacessofsicode
umusurioasaladeservidorespoderepresentarumaviolaodeseguranagrave,poisestepoder
conseguiracessoderootsereiniciaroservidorealterarasenhadorootatravsdogerenciadordeboot
(grub).Esseprocessopoderserevitadoseumasenhacriptografadaforadicionadaaogerenciador,no
permitindoqueumusurioqualquerinicieosistemanomododesegurana,porexemplo.

Poltica de utilizao de servios de Rede


TCPwrappersoferecemcontroledeacessoavriosservios.Amaioriadosserviosderedemodernos,
comoSSH,TelneteFTP,utilizamosTCPwrappersqueficammonitorandoaentradadeumpedidoeo
serviorequisitado.
OusodoTCPwrappersumaboaprticanaimplementaodeseguranaemredes,limitandoousodos
serviosderede.LiberaracessosomenteaIPsdesejados,configurarasrestriesdosshnopermitindo
logincomorooteconfigurarosmdulosdopampararestringiracessoaoservidoremdeterminadohorrio,
soboasprticasquedevemseradotadas.

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