Cuando contratamos un servidor dedicado LAMP (linux, apache, mysql, php) , donde el sistema operativo aconsejamos que sea CENTOS, normalmente el PHP viene habilitado con la mayor parte de funcionalidades «peligrosas» y de las que se nutren los atacantes.
Al contratar nuestro primer server, o si ya somos asiduos en el aquiler de servidores (Virtuales/Clouds/Dedicados) mi consejo es que deshabilitemos las siguientes funciones en nuestro fichero «php.ini» (Si no sabemos donde está, le hacemos un «find / – name php.ini» en nuestra consola.) :
disable_functions =»apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode»
(Al editar el archivo, buscamos primero la linea que empieza por disable_functions y añadimos todo el carro de funciones sensibles)
Finalmente y cuando un atacante intente usar dicha función, si es que lo consigue, verá el siguiente error:
Warning: exec() has been disabled for security reasons in /home/admin/domains/tudominio/test.php on line 86
* Por otro lado, si no vamos a usar Python ni CGIs, deberíamos deshabilitar su ejecución tambien, o bien contactar con vuestro hosting/datacenter para tal fin, ya que muchos scripts de phising y mailers los utilizan.
Un comentario en «Medidas de seguridad PHP modo prevención»
muy buen post Jordi… siempre se tiene que tener en cuenta estas cosas!!!
mejor seria que nos tocara la lotería y no trabajar nunca mas no?