Poner un servidor Apache/PHP en internet no es solo instalarlo con un simple comando, también requiere hacer algunos ajustes para mantenerlo funcionando al hacer un poco más difícil que algún usuario malintencionado o cracker pueda acceder al servidor. Estas personas por lo general tratan de obtener información sobre las versiones de los servicios instalados y así seleccionar un ataque a alguna vulnerabilidad conocida para la versión que estemos usando. Por desgracia la configuración normal de Apache y PHP muestra mas información de la que debería estar disponible con lo que se está ayudando al enemigo.
Para evitar que Apache y PHP muestren esta información en un servidor Debian vamos a inhabilitar algunas variables y configuraciones para no dar información alguna sobre las versiones de Apache y PHP.
No mostrar la versión de Apache
La configuración predeterminada del servidor HTTP contiene en la cabecera información de Apache y de la versión de PHP y muestra algo como esto:
Server: Apache/2.2.15 (Debian) PHP/5.3.5
Es muy peligroso permitir que esta información esté visible y que sea utilizada por un atacante al saber la versión específica que estamos usando. Para evitar esto podemos cambiar a Off algunas variables de Apache.
Edita el siguiente archivo y busca las variables que te indico y pon los valores como te muestro.
/etc/apache2/conf.d/security
ServerSignature Off
ServerTokens Prod
TraceEnable off
No mostrar información de PHP
Para evitar que PHP muestre información que puede ser utilizada por un atacante edita este archivo y agrega las funciones que te muestro a la variable «disable_functions» es muy importante que solo las agregues al final las funciones que te indico.
/etc/php5/apache2/php.ini
disable_functions = ,system,show_source,phpinfo/pre>
Luego, en el mismo archivo php.ini busca las siguientes variables de configuración y ponlas a Off
allow_url_fopen=Off
display_errors=Off
expose_php = Off
Por último ve al archivo de configuración del host virtual de tu servidor apache y agrega las siguientes líneas, esto lo debes hacer por cada host virtual que exista en tu servidor y son todos los archivos en el directorio /etc/apache2/sites-available/. Te muestro el ejemplo del host virtual «default»
/etc/apache2/sites-available/default
ServerSignature OffFileETag None
IMPORTANTE: no soy experto en seguridad por lo que estos consejos son encaminados a aportar elementos para evitar un ataque a tu servidor web, en otras palabras hacerle la vida un poco mas difícil a los crackers o algún script kiddie que se tope con el servidor, sin embargo es posible que existan otras configuraciones necesarias para tener un servidor Apache/PHP totalmente seguro.
Espero que esta información sea útil y que ayuda a mantener tu servidor en línea.
Tu Servidor y Amigo
Luis Armando Medina
Sígueme en Twitter: @larmedina
Haz click en «Me Gusta» y deja un comentario: