> Manuales > Instalación y configuración de Apache

Aspectos importantes a tener en cuenta en la seguridad de Apache. Autentificación y autorización de usuarios con Apache.

Cuando un servidor apache recibe una petición de una página web, antes de devolver el resultado, lleva a cabo varias acciones para verificar que la petición esta autorizada.

Las distintas acciones que lleva a cabo para verificar la validez de la aplicación, se pueden agrupar en tres tipos: Autentificación, Autorización y Control de Acceso.

La autentificación es el proceso por el cual se verifica la identidad de una persona. De una forma simple, este proceso se puede llevar a cabo mediante un nombre de usuario y una contraseña, pero se pueden llegar a utilizar otros métodos para validar la identidad de una persona, como mediante el uso de certificados, tarjetas etc…

En apache la autentificación puede estar gestionada por distintos módulos, dependiendo de la forma de implementación. Si decide llevarla a cabo gestionando ficheros con listas de usuarios y contraseñas (encriptadas), deberá utilizar el módulo mod_auth. Sin embargo, si decide llevarla a cabo mediante base de datos, deberá utilizar los módulos mod_auth_dbm.

La autorización es el proceso por el cual se verifica que un usuario con una identidad conocida, tiene acceso al recurso solicitado. Para llevar a cabo esta acción, se suelen utilizar listas de permisos en las cuales se enumeran cada una de las acciones que puede realizar un usuario, o las que no puede hacer. Normalmente, para simplificar la gestión de estos ficheros, los usuarios se suelen unir en grupos proporcionando los permisos al grupo.

En apache la autorización a recursos es gestionada o bien mediante la directiva <directory> en el fichero principal de configuración, o bien mediante la configuración de la carpeta a través de ficheros .htaccess.

El control de acceso es el proceso por el cual se verifica que la máquina desde la que se ha hecho la petición, tiene acceso al recurso. Los controles de acceso se utilizan para limitar y controlar las máquinas que tienen acceso a un recurso independientemente del usuario que accede, ya que estos controles se llevan a cabo antes de que se realice el proceso de autentificación.

En apache, el control de acceso se puede llevar a cabo mediante las directivas <directory><files>y <location>, o a través del fichero de configuración .htaccess para controlar una carpeta especifica.

En todo caso y para poder llevar a cabo la configuración de las tres características aquí enumeradas, autentificación, autorización y control de acceso, es necesario tener la directiva AllowOverride con el valor AuthConfig, para así permitir el uso de las distintas directivas de autentificación.

Autentificación y autorización de usuarios en Apache. Mod_auth

Para configurar el servidor apache para que sea capaz de autentificar a los usuarios y verificar la autorización del mismo al recurso solicitado, es necesario realizar las siguientes acciones:

  1. Crear un fichero con usuarios
  2. Crear un fichero con grupos (si es necesario)
  3. Definir las directivas en el fichero de configuración o mediante un fichero .htaccess

En los ficheros de usuarios de apache, en cada línea se especifica un usuario, escribiendo el nombre de usuario separado de dos puntos, seguido de la contraseña encriptada con MD5.

En los ficheros de grupos de apache, en cada línea se especifica un grupo escribiendo el nombre del grupo seguido de dos puntos, y a continuación separado por espacios, los nombres de los usuarios.

Es recomendable que tanto los ficheros de usuarios como los de grupos, se encuentren almacenados fuera de los directorios publicados, para que de esta forma nadie pueda descargarlos. Asimismo, solo el usuario root debería estar autorizado a escribir en él, mientras que solo el usuario que ejecuta el servicio web, debería estar autorizado para leerlo.

El fichero de grupos se puede crear manualmente, pero el fichero con los usuarios es recomendable crearlo mediante la utilidad htpasswd, que se encuentra en la carpeta con los binarios de apache.

Para crear un fichero de usuario se utilizará la siguiente sintaxis:

htpasswd -c ruta/passwords usuario

El flag -c se utiliza para crear un fichero nuevo, por lo que sólo se deberá poner la primera vez que se crea el fichero, sino lo borrará.

Los módulos que intervienen en la autentificación y autorización son los de core y mod_auth.

Las directivas de mod_auth necesarias para configurar la autenticación y autorización son las siguientes:


Las directivas de core necesarias para complementar la configuración del módulo son:

Carlos Luis Cuenca

Carlos es ingeniero informático por la UPM (Politécnico de Madrid), especializad...

Manual