Debido a la naturaleza colaborativa del desarrollo de PHP (hay decenas de programadores involucrados de distintas regiones del planeta), es muy difícil que errores en la programación de PHP en sí mismo sean detectables, incluso para los programadores del PHP Core, y por ello se introduce algunas veces errores en funciones de PHP que pueden permitir a un atacante remoto escalar privilegios en el server, o instalar troyanos aprovechando un buffer overflow en alguna función de PHP. Para tratar de contener éste tipo de fallas es que existe un proyecto llamado Suhosin, que se encarga de proteger a los usuarios de PHP de vulnerabilidades conocidas o desconocidas que forman parte del código PHP en sí mismo. Para lograr tal fin Suhosin viene en dos partes que pueden utilizarce en forma separada o conjunta. La primera parte es un pequeño parche al PHP Core (el núcleo del lenguaje), que implementa unas cuantas medidas de protección básica de bajo nivel contra vulnerabilidades debidas a buffer overflow o problemas con el formato de los string (cadenas de texto). La segunda parte de Suhosin es una poderosa extensión que implementa medidas de protección adicionales como puede ser bloquear o desactivar funciones de PHP en caso de necesidad.
Si se usa un hosting compartido, es una muy buena idea instalar Suhosin, porque jamas uno puede estar seguro del código de un cliente que paga por hosting casi nada, y que le resulta extremadamente fácil saltar de un hosting a otro debido a la tremenda oferta existente. Debido a ello no le presta mucha atención a la seguridad de su código.
Adicionalmente a instalar Suhosin, una muy buena medida complementaria es deshabilitar la función eval() de PHP que abre las puertas a que cualquiera que consiga inyectar código en un script PHP puede ejecutar código PHP arbitrário sobre el server. Muchas veces themes o plugins de Joomla, Mambo o WordPress, traen troyanos ocultos por una función base64_decode(), que es luego ejecutada por eval(), hable sobre ello en diciembre del año pasado en un post de éste blog llamado "Troyanos en themes de WordPress", pero parece que la técnica se ha vuelto tan popular para ocultar troyanos que es aplicada en todo script que pretende infectar un webserver.
Entonces para evitar problemas debemos instalar Suhosin y deshabilitar eval(), de esa forma si alguien tiene un site infectado nos llamara para reportar que "el server tiene un error", porque su página no se ve bien. Para conseguir el objetivo anterior debemos de hacer éstos simple pasos en nuestro Debian (en Ubuntu sólo añadir sudo delante de cada comando):
# apt-get install php5-suhosin
# echo "suhosin.executor.disable_eval=On" >> /etc/php5/apache2/php.ini
# /etc/init.d/apache2 force-reload
Y listo, ya tenemos a nuestro servidor un poquito más protegido que antes, ahora al menos los troyanos no se ejecutaran tan fácilmente, los forzamos a ser más visibles. Complementariamente siempre es buena idea deshabilitar las fuciones que permiten ejecutar comandos del sistema con los privilegios del usuario del webserver (en Debian www-data), para ello edite el archivo /etc/php5/apache2/php.ini busque la línea que diga "disable_functions" y agregue la lista de funciones shell que desea deshabilitar separadas por comas, una buena idea es poner éstos valores:
disable_functions = exec, system, escapeshellcmd
No hay que olvidar reiniciar el apache, para que los cambios en el php.ini tengan efecto. Espero que toda esta información les haya sido de utilidad y los ayude a proteger sus servidores web.







sin comentarios hasta ahora