En la actualidad, con el aumento de la popularidad de WordPress, muchos sitios utilizan PHP + Mysql para crear sus proyectos, y se hace imprescindible mejorar la seguridad de PHP en nuestros servidores.
- Cada vez se está volviendo más importante asegurar PHP a través de su archivo de configuración PHP.ini
Cómo hacer más seguro PHP: encuentra el archivo php.ini
Lo primero que tendríamos que hacer es encontrar el archivo PHP.ini.
Si tenemos acceso ssh a nuestro servidor, podemos ejecutar el siguiente comando en la shell:
# php -i |grep php.ini
En cpanel también podéis ver su configuración y probablemente editar algunas de sus funciones. Si no encontráis el archivo, lo más sencillo es ponerse en contacto con el soporte de la empresa de hosting y que os generen uno para vuestro dominio.
En caso de usar Virtualmin/Webmin solo tenéis que ir a Webmin > Others > PHP Configuration y editar el archivo /etc/php.ini
Cómo hacer más seguro PHP: editar el archivo php.ini
Una vez que lo encontramos, procedemos a editar algunas opciones:
1.-safe_mode (ON)
Poner PHP «Safe mode» en ON es una de las maneras más sencilla de asegurar nuestra instalación y de limitar las funciones que utiliza PHP. En algunos casos puede resultar un poco restrictiva y provocar que determinadas aplicaciones no funcionen, pero siempre es recomendable poner esta orden en On en los Servidores Compartidos, por lo que probablemente, si estamos en un shared server, vuestro proveedor ya lo haya hecho por vosotros.
Si ponemos safe_mode en modo «on» parara la ejecución de funciones exec y otras del estilo que normalmente pueden provocar un fallo en la seguridad del servidor.
2.-Deshabilitar determinadas funciones PHP
PHP puede provocar un hackeo del servidor a través de determinadas funciones que deberíamos deshabilitar para mejorar la seguridad:
Dentro de php.ini hay que buscar la linea donde tengamos:
disable_functions =
Y añadimos lo siguiente:
disable_functions = dl,system,exec,passthru,shell_exec
3.-Register Globals (OFF)
Mediante register_globals pueden introducir en nuestro entorno muchas variables no deseadas, por lo que siempre es recomendable desactivar esta función. Muchos programas como moodle, te solicitan que así lo hagas durante la instalación.
Buscamos en PHP.ini
register_globals = On
y lo cambiamos por:
register_globals = Off
4.-display_errors (OFF)
Con esto conseguiremos que no se muestren todos los errores de la aplicación que pueden proporcionar detalles sobre las rutas a los programas o sobre las consultas MySQL
5.-allow_url_fopen y allow_url_include (OFF)
allow_url_fopen en OFF impide que algunas funciones PHP como include, require, y file_get_contents(), pidan datos externos.
allow_url_include en OFF impide el acceso remoto via include y require.
6.-magic_quotes_gpc (OFF)
Lo mejor, para tener un «ambiente» seguro es ponerlo en OFF. En este articulo teneis algunas de las ventajas y desventajas de hacerlo o no What is Magic Quotes GPC (magic_quotes_gpc) in PHP and the php.ini?
7.-open_basedir
Esta directiva tiene que estar configura a un determinado directorio para que PHP solo pueda acceder a él
8.-Correr PHP a través de PHPsuexec
El gran problema de PHP es que en servidores con cPanel, PHP corre mediante el usuario «nobody». Cuando alguien pone un script con acceso 777, un usuario «nobody» puede escribir en el archivo. Y esto puede ser peligro en un Servidor Compartido (Shared Server) ya que lo que sucede en unas cuentas puede afectar a las demás. En otras palabras: no es necesario que tu cuenta este comprometida. Si lo esta la del vecino, la tuya también.
PHPsuexec hace que los permisos 777 no estén permitidos. ¿Inconveniente? PHP se vuelve más lento, pero es más seguro. Además, como cada proceso esta asociado a un usuario en concreto, es más sencillo seguir la pista a los errores.
Para que PHP funcione de este modo, hay que recompilar PHP con suexec. Si tienes Cpanel/WHM lo tienes que hacer mediante Easyapache. Si estas en un servidor Compartido, probablemente ya este activada la opción (No vas a poder recompilar PHP por tu cuenta).
Cómo hacer más seguro PHP: ¿Usas como CMS WordPress?
Puedes mejorar tu seguridad deshabilitando la ejecución de archivos PHP en directorios donde no es necesario, como /wp-content/uploads/.
Puedes hacerlo abriendo un editor de texto como el Bloc de notas y pegando este código:
<Files *.php> deny from all </Files>
A continuación, debes guardar este archivo como .htaccess y subirlo a /wp-content/uploads/ en tu sitio web usando un cliente FTP.
Cómo hacer más seguro PHP: ¿Gestionas tu propio servidor? Usa Lynis
Lynis es un programa que va a comprobar la seguridad de tu servidor Linux al completo, no solo de PHP. Muy fácil de instalar y de utilizar.
Descarga e instalación (versión 2.2.0, comprueba si hay nuevas):
# mkdir /usr/local/lynis
# cd /usr/local/lynis # wget https://cisofy.com/files/lynis-2.2.0.tar.gz
# tar -xvf lynis-2.2.0.tar.gz
Cómo usarlo:
# cd lynis # ./lynis
Es un programa gratuito que te permite asegurar tu servidor, comprobar si hay puertas traseras de entrada y si cumples con los estándares de seguridad.
Vía Web Host Gear y www.tecmint.com