ANÁLISIS DE SEGURIDAD DE PHP.INI
Buen día amigos.
Como venimos hablando de diferentes cosas de seguridad
informática, hoy toca el turno de hacer la segunda entrega del conjunto de artículos donde hablaremos de lo que debemos de
configurar en PHP para que tenga de una forma Básica - Media seguridad y así no hacken tan rápido tu servidor usando los diferentes ataques que existen.
Este artículo lo llame: "PHP HARDENING - ILUSTRADO"
y la primera entrega de este la pueden encontrar aquí:
Y en esta parte No. 2 hablaremos de que, como, el porque y con que analizar el PHP.ini pero primeramente veamos que es este maravilloso archivo y que cabe señalar que si lo configuramos bien nos evitaremos muchos dolores de cabeza:
Este archivo contiene toda la configuración de PHP con
el que controlamos todos los aspectos de su funcionalidad y su configuración a la hora de ser ejecutado en nuestro servidor.
EL ARCHIVO PHP.INI DONDE SE ENCUENTRA?
Esto realmente es muy fácil de analizar ya que en windows normalmente esta localizado en windows en el directorio:
y como lo localizamos en LInux?
Aquí si usaremos algunas instrucciones para saber realmente cual es el php.ini de configuración ya que recuerden que puede haber varios php.ini en un sistema y ese es un problema saber cual es el indicado, entonces la forma más rápida para localizar en que ruta se encuentra, sería utilizando el comando “locate“,
pero como hemos comentado suelen existir varios archivos php.ini dentro
de un servidor, y por lo tanto esta opción solo valdría para recordar
la ruta del archivo si ya la conocíamos antes.
En cualquier caso, el
comando para realizar la búsqueda sería:
/etc/php5/apache2/php.ini
pero podemos usar como decíamos el comando locate que quedaría así:
locate php.ini
En mi caso no tengo PHP instalado en LInux, pero lo veremos en windows al fin y al cabo sería casi la misma configuración.
OK, una vez hecho esto pasaremos a revisar la configuración de nuestro PHP.INI pero para ello usaremos un script llamado:
PHPiniSimpleScan
Este es una script creado por Aleksandar Kaitović
kaitcoa y con el cual podemos hacer un revisión automática de la configuración de nuestro PHP.ini y este os dirá que tan bien esta configurado.
para eso lo bajaremos de su repositorio en GITHUB y lo copiaremos a un folder en la raiz de mi hd para poderlo accesar mas facilmente desde la cmd del sistema operativo.
y una vez hecho esto pasaremos a ejecutarlo y veremos que parámetros de ejecución nos comenta que tiene pero al ejecutarlo desde la ventana de CMD simplemente me lo abre en mi editor de PHP, viendo esto tendremos que ejecutarlo dentro de un servidor web, entonces manos a la obra a instalar un servidor web.
Para este fin yo instalaré el KEYFOCUS WEB SERVER v 2.5
Entramos al panel de administración y configuramos el servidor para que pueda ejecutar PHP, para eso instalaremos el tipo MIME:
application/x-httpd-php
dirigido a la ruta donde esta instalado el PHP que es:
C:\PHP>php.exe
en Mapeo de filtros CGI y en ese apartado pondremos lo siguiente:
Le damos en guardar y si todo sale bien y la virgen nos ayuda quedará configurado y listo el servidor para poder ejecutar código PHP.
Ahora si probemos si se ejecuta el INDEX.php de PHPiniSimpleScan y para eso copiamos en el folder de acceso a paginas web del servidor osea el localhost del servidor el index.php y lo ejecutaremos asi:
y una vez hecho esto veremos lo siguiente:
y como podemos apreciar nos muestra que analizó nuestro php.ini y nos da algunos tips de lo que debemos de activar o desactivar en este archivo de cnfiguración.
Primeramente nos dice que debemos de desactivar algunas funciones:
You should disable some functions. Just edit your php.ini file and add disable_functions= php_uname, getmyuid, getmypid, passthru, leak, listen, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system, highlight_file, source, show_source, fpaththru, virtual, posix_ctermid, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, phpinfo, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority
y que debemos de desactivar el desplegado de errores:
Display_errors is set. You should turn it off.
-------------------------------------------------------------------------
Expose_php is set. You should turn OFF
-------------------------------------------------------------------------
Como pueden ver hasta te dice que tiene mal configurado tu php.ini y que te pueden dar un ataque DDOS
Somebody can DoS you with uploading a lot of files. You should set your max_file_uploads = 99
---------------------------------------------------------------------------
Open_basedir is empty. You should set it, especially if you are using mod_php
---------------------------------------------------------------------------
allow_url_fopen is enabled. You must disable it.
--------------------------------------------------------------
file_exists must be enabled to perfom root checking.
---------------------------------------------------------------
session.use_only_cookies is disabled. Set ti ON.
Y aquí nos dice algo importante sobre las cookies y su configuración que debemos de activar para que sea mas seguro.
- session.cookie_httponly is disabled. For security reasons you should turn it ON!
- session.cookie_secure is disabled. For security reasons you should turn it ON!
- session.hash_function is disabled. For security reasons you should turn it ON!
---------------------------------------------------------------------------------------
AQuí que debemos de activar el safe_mode
- safe_mode is off. You need to set it ON.
-------------------------------------------------------------------------
y algo que normalmente no usamos y que debemos de activar:
- html_errors is off. You should to set it off.
----------------------------------------------------------------------------
Osea amigos como pueden ver es una utilería que nos puede evitar muchos pero muchos dolores de cabeza o mínimo nos ayudará a hacer mas dificil el trabajo de un hacker novato.
Espero les guste. compartanlo.
! creo que este arroz ya se coció !
necesitas conferencias de Seguridad Informática - Contactame
LI. Rodolfo H. Baz
www.rodolfohbaz.net