You are on page 1of 6

Aula 4 - Protegendo Servidor WEB 4.

1 Ambiente seguro com chroot O Apache e o PHP sero reinstalados dentro de um ambiente seguro chamado chroot, que permite o enjaulamento de aplicaes, a!endo com que aquilo que esti"er dentro do conteiner no tenha acesso # m$quina real. O primeiro passo % instalar e con igurar um host de orma segura, neste caso, em uma m$quina "irtual. &nstalao e con iguao do chroot Pode'se utili!ar o comando debootstrap para criar um sistema (ebian em chroot. 1 ' &nstale o debootstrap) * aptitude install debootstrap + ' ,tili!e o debootstrap para montar um (ebian em chroot) * m-dir ."ar.debchroot * debootstrap lenn/ ."ar.debchroot 0 ' 1onte o diret2rio "irtual do -ernel do sistema original dentro do sistema chroot) * mount ''bind .proc. ."ar.debchroot.proc 4 ' (epois, acesse o sistema chroot criado) * chroot ."ar.debchroot 3 ' 1odi ique a "ari$"el de prompt para di erenci$'lo do sistema original) * "im .root..bashrc e4port P5167debchroot88)9:9; 7 < ' =ntre no"amente no sistema chroot e atuali!e a lista de pacotes do apt) * chroot ."ar.debchroot * aptitude update > ' Para um teste, pare o ssh no sistema original) * e4it * .etc.init.d.ssh stop ? ' Agora dentro do sistema chroot, instale o ssh) * chroot ."ar.debchroot * aptitude install ssh @ ' (e ina uma senha para o usu$rio root do sistema chroot) * pass:d root 1A ' Bo .etc. stab do chroot, crie a montagem dos dispositi"os dos terminais "irtuais) * "im .etc. stab none .de".pts de"pts

de aults A A * mount 'a * mount 11 ' Conecte'se "ia ssh em qualquer m$quina e "eja em qual sistema entrar$) * ssh rootD1@+.1<?.+AA.8 4.+ &nstalao do Apache no chroot e con igurao &nstalao do Apache no chroot 1 E Para o Apache na m$quina real) * .etc.init.d.apache+ stop + ' &nstale o Apache+) * chroot ."ar.debchroot * aptitude install apache+ 0 ' =dite o arqui"o de con igurao do apache+ e de ina um FG(B) * "im .etc.apache+.apache+.con 5er"erBame 1@+.1<?.4.4 4 ' Heinicie o Apache+) * .etc.init.d.apache+ restart 3 ' Faa um teste acessando a p$gina do seu ser"idor pelo bro:ser) http)..1@+.1<?.+AA.4 4.0 Procedimentos b$sicos de segurana no Apache+ 1 ' Hetire a opo de &nde4es para o diret2rio padro do Apache+) * chroot ."ar.debchroot * cd .etc.apache+.sites'a"ailable * "im de ault I(irector/ ."ar.:::.J *Options &nde4es Follo:5/mKin-s 1ultiLie:s Options Follo:5/mKin-s 1ultiLie:s Allo:O"erride Bone Order allo:,den/ allo: rom all I.(irector/J + ' (esati"e o banner de p$gina do Apache+) * cd .etc.apache+.con .d * "im securit/ 5er"er5ignature O 0 ' Heinicie o Apache+) * .etc.init.d.apache+ restart 4 ' Faa um teste acessando a p$gina do seu ser"idor pelo bro:ser)

http)..1@+.1<?.4.4 3 ' 5aia do sistema chroot e crie um script no sistema original para iniciar o Apache+ dentro do sistema chroot quando a m$quina or ligada) * e4it * "im .etc.init.d.apache+Mchroot *N.bin.bash mount ''bind .proc ."ar.debchroot.proc chroot ."ar.debchroot .etc.init.d.apache+ start chmod >33 .etc.init.d.apache+Mchroot < ' Crie os lin-s simb2licos para os nO"eis de e4ecuo) * update'rc.d apache+Mchroot start +1 + 0 4 3 . 4.4 &nstalando e con igurando o PHP3 P 5uhosin no chroot 5uhosin % um a"anado sistema de proteo que oi desen"ol"ido com o objeti"o de proteger ser"idores e usu$rios de alhas nas aplicaes escritas em PHP e implementar correes # pr2pria base da linguagem. Q separado em duas partes independentes que podem ser utili!adas em conjunto ou indi"idualmente, sendo que uma delas % um patch a ser aplicado no core do PHP que implementa proteo contra "ulnerabilidades do sistema R=ngine ProtectionS e a outra parte % uma e4tenso que coloca em uncionamento todas as outras protees e implementaes de segurana. Contra o quT o 5uhosin protegeU ' 5uhosin % a Vnico proteo est$"el e real disponO"el contra remote ile include ' Protege contra HWWP Hesponse 5plitting Lulnerabilities ' Protege contra scripts que manipulam o memor/Mlimit ' Adiciona proteo contra ataques ao mailRS ' Filtra caracteres A5C&&X de inputs de usu$rios ' &gnora "ari$"eis de Y=W, PO5W, COOZ&= com os seguintes nome) YKO[AK5, MCOOZ&=, M=BL, MF&K=5, MY=W, MPO5W, MH=G,=5W, M5=HL=H, M5=55&OB, HWWPMCOOZ&=MLAH5, HWWPM=BLMLAH5, HWWPMY=WMLAH5, HWWPMPO5WMLAH5, HWWPMPO5WMF&K=5, HWWPMHA\MPO5WM(AWA, HWWPM5=HL=HMLAH5, HWWPM5=55&OBMLAH5 ' 5uporta "eri icao de upload de arqui"os atra"%s de um script e4terno. A p$gina do projeto %) http)..:::.hardened'php.net. 4.3 ' &nstalando o PHP3P5uhosin H$ duas omas de reali!armos a instalao do 5uhosin) 1 ' m%todo mais di Ocil) % necess$rio a instalao do pacth do 5uhosin, a recompilao do PHP3 e a instalao de uma e4tenso especO ica do 5uhosin. =sse % um processo que pode le"ar mais de 1h, o que pode ser precioso para o pro issional que est$ instalando e con igurando seu ser"idor :eb. + ' m%todo mais $cil) que % a que adotaremos aqui, podemos utili!ar um pacote do PHP3 pre"iamente compilado, com o patch e a e4tenso j$ instaladas, que precisa apenas ser con igurado, para personali!armos os controles de segurana do 5uhosin. =sse pacote est$ disponO"el para (ebian.,buntu.

1 E &nstalao do PHP3'5uhosin) * chroot ."ar.debchroot * aptitude install php3'suhosin + E Habilitar o suporte ao 1/5GK) * "im .etc.php3.apache+.php.ini ] =4ample lines) e4tension6m/sql.so 4.< ' Con igurando o 5uhosin O arqui"o de con igurao do 5uhosin est$ situado em .etc.php3.con .d.suhosin.ini ou suas opes de con igurao estaro mescladas as opes do PHP3 dentro do php.ini, dependendo de sua distribuio Kinu4. =m nosso caso, utili!ando o (ebian.,buntu, o arqui"o est$ em .etc.php3.con .d.suhosin.ini. Lamos #s con iguraes do 5uhosin) 1' Abrir arqui"o de con igurao suhosin.ini) * chroot ."ar.debchroot * nano .etc.php3.con .d.suhosin.ini + ' Habilitar o 5uhosin, dei4ando a linha abai4o descomentada) e4tension6suhosin.so 0 ' Kimitar a quantidade de director/ trans"ersals R.........S) suhosin.e4ecutor.include.ma4Mtra"ersal64 4 ' (esabilitar o .e no pregMreplace, que normalmente % utili!ado de orma insegura, j$ que esse par^metro permite a e4ecuo de unes do PHP) suhosin.e4ecutor.disableMemodi ier6O 3 ' Proteger ormul$rios de e'mail contra ataque de spammers) suhosin.mail.protect6+ < ' Con igurar limite de mem2ria, pois quando o sa eMmode est$ desabilitado, usu$rios podem utili!ar o iniMset para alterar seu limite de mem2ria) suhosin.memor/Mlimit6+3<1 > ' Gual ao o 5uhosin e4ecutar$ ao iltrar algo Ra opo 4A+ ar$ com que o c2digo no seja e4ecutado e retornse uma resposta HWWPS) suhosin. ilter.action64A+ ? ' Kimite m$4imo de tamanho para "ari$"eis "indas de COOZ&=, PO5W e Y=W) suhosin.request.ma4Marra/Mdepth64A@< suhosin.request.ma4Marra/Minde4Mlength6+A4? suhosin.request.ma4MnameMlength6+A4? suhosin.request.ma4M"alueMlength6<3AAAA suhosin.request.ma4M"ars64A@< suhosin.post.ma4Marra/Mdepth6?A4? suhosin.post.ma4Marra/Minde4Mlength61A+4 suhosin.post.ma4MnameMlength6+A4? suhosin.post.ma4MtotalnameMlength6?A4?

suhosin.post.ma4M"ars64A@< @ ' 1$4imo upload de arqui"os em um script) suhosin.upload.ma4Muploads61AA 1A ' (esabilitar qualquer include, curl, passthru, base<4Mencode, mail e outras opes na uno e"alRS. Funciona muito bem quando um atacante poe a!er o upload de um script malicioso, cujo conteVdo normalmente % um c2digo o uscado a partir da base<4 e passado para a e"alRS. suhosin.e4ecutor.e"al.blac-list6include, requireMonce, includeMonce, require, curlMinit, passthru, ile, base<4Mencode, base<4Mdecode, mail, e4ec, s/stem, procMopen, lea-, s/slog, p soc-open, shellMe4ec, iniMrestore, s/mlin-, streamMsoc-etMser"er, procMgetMstatus, dl, pcntlMe4ec, pcntlM or-, pcntlM:e4itstatus, pcntlM:stopsig, pcntlM:i e4ited, procMnice pcntlMsignal, pcntlM:aitpid, pcntlM:i signaled, pcntlM:termsig, ,popen, pcntlM:i stopped, soc-etMaccept, soc-etMconnect, soc-etMcreate, soc-etMcreateMlisten, soc-etMbind, soc-etMcreateMpair, lin-, registerMshutdo:nM unction, registerMtic-M unction 11 ' (esabilitar e"alRS por completo, caso no precise dessa uno em suas aplicaes) suhosin.e4ecutor.disableMe"al6O 1+ ' Filtra bloqueando todas as unes que no estejam na opo abai4o, separadas por "Orgula) suhosin.e4ecutor. unc.:hitelist6 10 ' Q o equi"alente ao disableM unctions no php.ini) suhosin.e4ecutor. unc.blac-list6 14 ' Arma!enar em log todas as aes, al%m das queries 5GK que alharam, com o s/slog) suhosin.log.s/slog 6 5MAKK _ `5M5GK 13 ' (esabilitar a possibilidade de a!er o upload de bin$rios) suhosin.upload.disallo:Mbinar/6O 1< ' (esabilitar a possibilidade reali!ar o upload de arqui"os =KF) suhosin.upload.disallo:Mel 6O =ssas alteraes j$ nos ajudaro bastante no que di! respeito a segurana com o 5uhosin. Para mais in ormaes sobre mais outras opes de con igurao, % possO"el consult$'las no enereo abai4o) http)..:::.hardened'php.net.suhosin.con iguration.html 4.> Con iguraes de segurana no PHP3 1esmo com o 5uhosin instalado, precisamos customi!ar ainda mais algumas opes e unes e4istentes no phi.ini. &sso % necess$rio para nos preca"ermos de uma s%rie de ataques, "oltados para a aplicao :eb, que al%m de estar "inculado # alta de boas pr$ticas de programao, tamb%m possui pontos de con"ergTncia com a m$ con igurao do php.ini. A locali!ao do arqui"o pode "ariar de acordo com a distribuio, mas "ocT pode encontr$'lo rapidamente usando o comando alocatea. Bo caso do CentO5, o arqui"o % o a.etc.php.inia, enquanto nas distribuies deri"adas do (ebian % usado o arqui"o a.etc.php3.apache+.php.inia. Lamos dar uma olhada em algumas opes desse arqui"o e alter$'las de acordo com nossas necessidades. Atra"%s do arqui"o php.ini e da "ari$"el disableM unction, podemos bloquear o uso de certas unes PHP que poderiam colocar em risco a segurana do sistema.

5implesmente temos que locali!ar o php.ini do nosso sistema, que pode ser "isto atra"%s da uno phpin oRS, e editar a "ari$"el disableM unctions, que estar$ pro"a"elmente sem nenhuma uno especi icada.) 1 ' (esati"ar unes que so arriscadas para nossa segurana) * nano .etc.php3.apache+.php.ini disableM unctions 6 phpMuname, getm/uid, getm/pid, passthru, lea-, listen, dis- reespace, tmp ile, lin-, ignoreMuserMabord, shellMe4ec, dl, setMtimeMlimit, e4ec, s/stem, highlightM ile, source, sho:Msource, paththru, "irtual, procMopen, procMclose, procMgetMstatus, procMnice, procMterminate, phpin o + ' (esabilitar registerMglobals, para e"itar o registro autom$tico de "ari$"eis globais no sistema Re4.) ;MPO5Wb7admin7c "irar ;adminS) registerMglobals6O 0 ' (esati"ar magicMquotesMgpc que est$ depreciada e ser$ retirada de uturas "erses do PHP. =la tenta a!er um escape em caracteres maliciosos, mas no unciona com 1AAd de acur$cia) magicMquotesMgpc6O 4 ' (esati"ar allo:MurlM open para no permitir a abertura de arqui"os atra"%s da ,HK) allo:MurlM open6O 3 ' (esati"ar displa/Merrors, para e"itar que in ormaes sejam passados para o usu$rio, caso ocorra algum erro na aplicao) displa/Merrors6O < ' Ati"ar logMerrors, para que todos os erros sejam arma!enados em um arqui"o de log) logMerrors6On > ' (esati"ar e4poseMphp, para e"itar que in ormaes sobre o PHP sejam e4ibidas para o usu$rio) e4poseMphp6O ? ' (esati"ar allo:MurlMinclude, para e"itar ataques como HF&) allo:MurlMinclude6O @ ' Para aumentar ainda mais a segurana, limitando o tempo de e4ecuo de cada script, em segundos) ma4Me4ecutionMtime6+A Com essas alteraes em nosso php.ini e o 5uhosin instalado e con igurado, nosso ser"idor PHP estar$ quase completamente seguro. &n eli!mente, a maioria das alhas que tornam um aplicao :eb "ulner$"el, o que pode acabar se e4tendendo ao ser"idor, % a alta de preocupao dos desen"ol"edores com as boas pr$ticas de programao e alta de conhecimento de desen"ol"imento seguro. Com uma aplicao :eb desen"ol"ida le"ando em considerao aspectos b$sicos de segurana, como utili!ao de sesso com one'time'to-e, criptogra ia, arma!enamento seguro em banco de dados, certi icado digital e etc, aliado com um ser"idor :eb bem con igurado e protegido, di icilmente ter$ dores de cabea com comprometimentos de sites e ser"idores.

You might also like