Download - Protegendo sites php no seu servidor web
![Page 1: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/1.jpg)
CláudioBorgescborges@openbsd‐sp.org
![Page 2: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/2.jpg)
OQueseráabordado
Oporquedasegurança. Diretivasefunçõesperigosas. Configurandooopen_basedire
disable_functions. Utilizandoasdiretivasphp_flagephp_value. Apolêmicadoregister_globals. Mod_security. Suhoshin. Cuidadoscomlogseexibiçãodeerrosem
ambientedeprodução. Programandocomsegurança.
![Page 3: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/3.jpg)
OPorquedasegurança
![Page 4: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/4.jpg)
Falhaspodemexistiremqualquersistema. Programasinsegurospodemserfeitosem
qualquerlinguagem. Protegerasaplicaçõeswebétarefatantodo
administradorquandodoprogramador. Muitasfeaturesajudamnaprogramaçãomas
diminuemasegurança. Porserumalinguagemmuitorica,muitos
programadoresnãoconsideramqueasegurançatambémdependedaqualidadedoseucódigoPHP.
![Page 5: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/5.jpg)
Diretivasperigosas
![Page 6: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/6.jpg)
allow_url_fopen–Permiteutilizararquivosexternoscomosefossemarquivoslocais.
allow_url_include–Permiteutilizararquivosexternoseminclude/require.
expose_php–Adicionaumaassinaturanoheaderdoseuservidorweb,informandoqueophpestáinstalado.
![Page 7: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/7.jpg)
Exemplodeusodesitemaldesenvolvidoeallow_url_fopen/allow_url_includehabilitado:
![Page 8: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/8.jpg)
Agoradesabilitado:
![Page 9: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/9.jpg)
Exemplodescanemservidorcomexpose_phphabilitado:
![Page 10: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/10.jpg)
Ecomeledesabilitado:
![Page 11: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/11.jpg)
Funçõesperigosas
![Page 12: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/12.jpg)
Asfunçõesexec,shellexec,systemepassthruexecutamcomandosexternos.
Outrasfunções:phpinfo,proc_open,proc_nice,chdir,chroot,dir,closedir,getcwd,opendir,readdir,rewinddir,scandir,popen,pcntl_exec,pcntl_fork,pcntl_alarm,pcntl_setpriority,pcntl_signal,pcntl_wait,pcntl_waitpid,ini_get,ini_get_all,ini_set,ini_restore.
![Page 13: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/13.jpg)
Configurandooopen_basediredisable_functions
![Page 14: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/14.jpg)
open_basedir–DefineosdiretóriosapartirdosquaisoPHPpodeutilizar.
open_basedir = /var/www/:/tmp/
disable_functions–Permitedesabilitarfunçõesquenãoprecisemserutilizadas.
disable_functions = phpinfo, shell_exec, exec, passthru, proc_open, proc_nice, system, chdir, chroot, dir, closedir, getcwd, opendir, readdir, rewinddir, scandir, popen, pcntl_exec, pcntl_fork, pcntl_alarm, pcntl_setpriority,
pcntl_signal, pcntl_wait, pcntl_waitpid, ini_get, ini_get_all, ini_set, ini_restore
![Page 15: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/15.jpg)
Exemplodeumapáginasemopen_basedirconfigurado:
![Page 16: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/16.jpg)
Outroexemplo:crieiumarquivochamadoreadfile.phpcomoseguinteconteúdo:
<?php readfile(‘/etc/passwd’); ?>
Eoresultado:
![Page 17: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/17.jpg)
Eomesmoexemplocomeleconfigurado:open_basedir = /var/www/:/tmp/
![Page 18: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/18.jpg)
Ecomocódigodoreadfile.php:
![Page 19: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/19.jpg)
Apolêmicadoregister_globals
![Page 20: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/20.jpg)
Comregister_globalshabilitado,sãocriadasvariáveislocaiscomonomeequivalenteàsdaEGPCS.
Épossívelutilizarregister_globalshabilitadoeterminhaaplicaçãosegura?
Porquetantosprogramadoresinsistememhabilitarregister_globals?
Porquenãoutilizarregister_globals?
![Page 21: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/21.jpg)
Exemplosdeusoderegister_globals
![Page 22: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/22.jpg)
Exemplodecódigocomregister_globalshabilitado:
if (authenticated_user())
$auth = true;
if ($auth)
echo “Usuário autorizado…”;
else
echo “Usuário sem autorização!”;
OcódigoacimapodeserfacilmenteburladocomaseguinteURL:
http://www.site.com.br?login.php?auth=1
![Page 23: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/23.jpg)
Eagoradaformacorreta:
if (authenticated_user())
$_SESSION[‘auth’] = true;
if ($_SESSION[‘auth’])
echo “Usuário autorizado…”;
else
echo “Usuário sem autorização!”;
![Page 24: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/24.jpg)
Utilizandoasdiretivasphp_flagphp_value
![Page 25: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/25.jpg)
Comasdiretivasphp_value,php_flag,épossíveldefiniropçõespersonalizadasparacadavhostviaarquivos.htaccess.ÉnecessárioqueadiretivaAllowOverrideestejadefinidacomovalorAll.
Asdiretivasphp_admin_flagephp_admin_valuesópodemserutilizadasemarquivosdeconfiguraçãodoApacheenãopodemsersobrescritaspordiretivas.htaccess.
![Page 26: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/26.jpg)
Exemplodeusodadiretivaphp_admin_value:
![Page 27: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/27.jpg)
Mod_security
![Page 28: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/28.jpg)
Éumfirewalldeaplicaçãoweb(WAF). ÉummódulodoApache. Monitoramento,detecçãoeprevençãoemtemporeal.
Existemarquivosderegrasdisponíveisparadownload.
Vocêmesmopodecriarsuasregras. Épossívelcriarwhitelists.
![Page 29: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/29.jpg)
Suhoshin
![Page 30: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/30.jpg)
UmpatchparaoPHPquepodeserutilizadocomoestensão.
Proteçãoemtempodeexecução. Temmododesimulaçãoeproteção. Aceitafiltrarentradadedados. Permiteencriptarsessões. Proteçãodememória. Aplicalimitesderequisiçõesportipodevariável. Váriasopçõesdelogs. Aceitacriarwhitelist/blacklist.
![Page 31: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/31.jpg)
Cuidadoscomlogseexibiçãodeerrosemambientede
produção
![Page 32: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/32.jpg)
Gravarlogsdeerroséútilparadebugarproblemas.
Ousuárionãodeveteracessoatodasasinformaçõesdeerro.
Exibirerrosemambientedeproduçãopodefornecerinformaçõessobresistemaeservidor.
![Page 33: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/33.jpg)
Opçõesdeerroselogsnophp.ini
![Page 34: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/34.jpg)
error_reporting–Definequaisníveisdeerrosserãoreportados.
display_errors–Determinaseoserrosdevemserexibidoscomopartedasaídaounão.
log_errors–Defineseoserrosserãogravadosemarquivoounão.
error_log–Defineemqualarquivooserrosserãogravados.Necessitaqueolog_errorsestejaativado.
![Page 35: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/35.jpg)
Programandocomsegurança
![Page 36: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/36.jpg)
Sempreverifiqueotipodedado,utilizefunçõesctype_alpha,ctype_alnum,ctype_digit,is_numeric,is_digit,eexpressõesregulares.
Filtreosdadosdeentradacomfunçõesdotipofilter_varefilter_input.
Utilizarfunçõesdeescapeoutput,comoporexemplohtmlentities,strip_tags.
Nuncautilizemagic_quotes. Nuncaarmazenesenhaemtextoplano,utilize
hashes(md5,sha1,…). Utilizerequire_oncenolugardeinclude. Nuncaconfieemusuário,sempreverifiquea
origemdosdados.
![Page 37: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/37.jpg)
Referências
![Page 38: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/38.jpg)
Siteoficialdalinguagemphp:http://www.php.net
Siteoficialdomod_securityhttp://www.modsecurity.org
Siteoficialdosuhoshin:http://www.hardened‐php.net/suhosin/
Siteoficialdophpsecinfo:http://phpsec.org/projects/phpsecinfo/index.html
SiteoficialdoChorizo:https://chorizo‐scanner.com
![Page 39: Protegendo sites php no seu servidor web](https://reader034.vdocuments.us/reader034/viewer/2022042814/556107a6d8b42a0e198b45c7/html5/thumbnails/39.jpg)
Perguntas?
cborges@openbsd‐sp.org
IRC:irc.freenode.netCanais:slackware‐br,sysadms,openbsd‐br,opensd‐sp