Enlace a portada del curso

Mantenimiento del espacio web

4. La seguridad en nuestro espacio web.1

El tema de la seguridad de un espacio web es realmente delicado y complejo, pero en estos momentos sólo nos podemos centrar en lo que podemos hacer, en primera instancia, para mantener nuestro espacio protegido en la red, y considerando que si tenemos nuestro sitio albergado en un servidor remoto, lo más probable es que no podamos modificar las configuraciones del servidor http ni de PHP.

Joomla! ya es en sí un sistema muy seguro, pero es preciso actuar con cierta diligencia si no queremos tener sorpresas desagradables. Esta colección de primeras recomendaciones debe servir de inicio de un proceso complejo, pero necesario.

  • Utiliza versiones de Joomla! descargadas de sitio fiables:
  • http://joomla.org,

    http://joomlacode.org/

    http://www.joomlaspanish.org.

  • No instales extensiones sospechosas, con poco soporte por parte de los desarrolladores. Hay que estar atento a las orientaciones que nos dan los espacios oficiales del proyecto Joomla! a este respecto, existe mucha documentación.
  • Realiza copias de seguridad del sistema con frecuencia.
  • Actualiza el sistema con la última versión. Cuando se descubre una vulnerabilidad, es muy corto el tiempo en el cual se desarrolla un parche o arreglo para la misma. Si tienes el sistema actualizado o parcheado con los últimos "patches" disminuyes notablemente la probabilidad de que te "hackeen" el sitio web.
  • Utiliza .htaccess para controlar los accesos, y para proteger con contraseña el directorio /administrator/ (HTTP Authentication2).

    .htaccess es un archivo de texto oculto que contiene una serie de directivas para el servidor Apache. Cuando un cliente solicita un archivo al servidor, éste busca desde el directorio raíz hasta el subdirectorio que contiene el archivo solicitado el archivo .htaccess y tiene en cuenta estas reglas antes de proceder con la petición, es decir, se aplican las normas especificadas al directorio en el que se encuentre .htaccess y los directorios por debajo de él.

    Ejemplos de usos para .htaccess pueden ser restringir el acceso a determinados archivos, impedir el listado de los archivos de un directorio, redireccionar, personalizar las páginas de error o impedir el acceso a determinadas IP's o rangos de IP. Por ejemplo, aunque son muchas más las posibilidades que permite .htaccess para proteger nuestro sistema:

  • Impedir el listado del contenido de un directorio.
  • Cuando se intenta acceder a un directorio, en ausencia de un archivo de índice, Apache muestra por defecto el contenido del directorio. Si queremos impedir al usuario ver el contenido de un directorio, bastaría con crear un archivo de índice, por ejemplo index.html, pero existe una solución más elegante mediante la directiva "Options". Basta crear un archivo .htaccess que contenga la línea:

    Options -Indexes

    También podríamos utilizar la directiva DirectoryIndex, que especifica qué archivos actúan como índice por defecto, y qué archivo mostrar en el caso de que éstos no se encuentren. Por ejemplo la línea:

    DirectoryIndex index.php index.html index.htm /prohibido.php

    indicaría al servidor que debe buscar los archivos index.php, index.html o index.htm, en ese orden, y en el caso de no encontrar ninguno de ellos, cargar el archivo prohibido.php.

  • Controlar el acceso a carpetas o archivos.
  • Podrías querer deshabilitar totalmente el acceso a una carpeta. En este caso sólo los archivos principales accederán a ellos mediante el sistema de archivos, pero no se podrán acceder vía web. Simplemente, crea un archivo .htaccess en esa carpeta que contenga:

     		#deny all access
    		deny from all

    Si se quiere permitir el acceso desde una IP específica,

     		#deny all access
    		deny from all
    		allow from 10.0.0.1

    o para un rango específico de IP's (forzado mediante la máscara de red).

    		allow from 192.168.0.0/24

    También se puede bloquear el acceso a un archivo específico,

     		<files privado.html>
    		Order allow,deny
    		Deny from all
    		</files>
  • Utiliza servicios online de detección y alertas contra hackers.
  • Investiga y conoce muy bien el funcionamiento de usuarios y permisos en sistemas Unix/Linux. No otorgues permisos innecesarios de escritura a cualquier archivo o directorio. Haz no escribible el archivo "configuration.php" después de hacer cambios.
  • Utiliza componentes SEFs avanzados para enmascarar las verdaderas URLs de Joomla!
  • Evita utilizar nombres o contraseñas "fáciles" de adivinar o de vulnerar mediante "fuerza bruta" (operaciones recursivas). Nunca utilices las mismas contraseñas y usuarios para FTP y para las bases de datos.
  • Contrata "hostings" profesionales, donde conocen a fondo y dan mucha importancia al tema de la seguridad. La configuración de PHP es vital aquí: registros globales desactivados, modo seguro, activación de comillas mágicas GPC, ejecución de shell deshabilitado para PHP, etc.
  • Deshabilita el reporte de errores de PHP, hasta el momento en que necesites identificar problemas.

1. Los contenidos de este apartado se corresponden con las recomendaciones de seguridad que ofrece http://www.joomlaos.net, propiedad de Gonzalo Reynoso, y se introducen en este texto con autorización expresa del autor.

2. Utilizar HTTP Authentication supone manipular código en varios archivos, y excede del propósito de este texto. Si quieres tener una buena referencia para dominar el control de seguridad que se puede realizar con ".htaccess", en "Joomlaos", puedes encontrar una buena referencia para completar esta información (http://www.Joomla!os.net/seguridad-en-Joomla!-utilizando-.htaccess-en-servidores-linux-apache.php).

Capítulo 11: Mantenimiento del espacio web