Autenticación Basic en Apache

publicado en: Apache, Linux, Seguridad, Servicios de Red | 0
 
 

Índice General

  1. Introducción
  2. Configuración del servidor

 

  1. Introducción (Volver al índice General)
    Apache nos ofrece la posibilidad de limitar el acceso a determinadas páginas mediante la autenticación del usuario al intentar acceder a ellas.

    En este artículo vamos a explicar el método de autenticación: Basic. Es un método simple que utiliza codificación Base64 y por lo tanto es menos seguro.
     
    Podemos hacer aún más seguro el acceso a nuestras páginas sensibles haciendo uso conjunto de HTTPS y autenticación Basic, es decir, que en primer lugar nuestro servidor web utilice SSL o TLS en las conexiones y sobre la conexión encriptada, usar Basic como método de autenticación.

  2.  

  3. Configuración del servidor (Volver al índice General)

    • Habilitar el módulo auth_basic (Volver al índice General)
      En primer lugar tendremos que habilitar el módulo auth_basic para que nuestro Servidor Apache pueda realizar la autenticación mediante el método Basic.

      Una opción sería realizar un link simbólico del .load de la carpeta /etc/apache2/mods-available/ a /etc/apache2/mods-enabled/.

      $ sudo ln -s /etc/apache2/mods-available/auth_basic.load /etc/apache2/mods-enabled/auth_basic.load

      Otra opción, y más rápida, sería mediante la ejecución del comando a2enmod.

      $ sudo a2enmod auth_basic

      En ambos casos habrá que reiniciar Apache.
      Si nuestro sistema utiliza System V como sistema de inicio, utilizaremos el comando:

      $ sudo /etc/init.d/apache2 restart

      Si utilizamos systemd como sistema de inicio, utilizaremos el siguiente comando:

      $ sudo systemctl restart apache2
    •  

    • Crear un fichero de usuarios y passwords para el acceso al sitio (Volver al índice General)
      Debido a la sensibilidad de la información del fichero de passwords, este deberá ubicarse fuera del sitio web aunque las passwords estén encriptadas.
       
      Creación del archivo
      En este ejemplo lo crearemos en el directorio:  /etc/apache2.
      El nombre y extensión del archivo son elegidos por su descripción, aunque podríamos elegir cualquier otro nombre con o sin extensión.

      La sintaxis para la creación del archivo será la siguiente:

      $ sudo htpasswd -c /etc/apache2/passwords.basic nombreusuario

      A lo que el programa solicitará una password para el usuario y que volvamos a repetir de nuevo la password para comprobar que no ha habido errores al introducirla.

      New password: clave
      Re-type new password: clave

      El programa termina indicándonos que se ha asignado una password para dicho usuario.

      Adding password for user nombreusuario

      El proceso se repetirá para cada uno de los usuarios que queramos añadir al fichero de passwords, pero quitando el parámetro -c ya que este parámetro sólo se utilizará para la creación del archivo.

      Para anexar nuevos usuarios al fichero de passwords ejecutaremos el siguiente comando::

      $ sudo htpasswd /etc/apache2/passwords.basic nombreusuario2
      New password: clave
      Re-type new password: clave
      Adding password for user nombreusuario2

      Permisos, propietario y grupos
      El archivo deberá tener los siguientes propietarios y permisos: Si el servidor está configurado para correr como usuario www-data y como grupo www-data, el usuario root podrá leerlo y escribirlo, el grupo www-data sólo leerlo y prohibido para el resto

      Para conocer el usuario y grupo asignados a Apache, podremos comprobarlo en el archivo: /etc/apache2/envvars en el que aparecerá algo como sigue.

      export APACHE_RUN_USER=www-data
      export APACHE_RUN_GROUP=www-data

      Para asignar los permisos, ejecutaremos el siguiente comando:

      $ sudo chmod 640 /etc/apache2/passwords.basic

      Para asignar propietario y grupo utilizaremos el siguiente comando:

      $ sudo chown root.www-data /etc/apache2/passwords.basic
    •  

    • Establecer la configuración para el uso de este fichero (Volver al índice General)
      Una vez creado el fichero de passwords, hay que decirle a Apache donde se encuentra y de que manera usarlo. Esta configuración se consigue con las siguientes directivas:

      • AuthType: Tipo de autenticación que se usará, en este caso será Basic.
      • AuthName: Nombre identificativo que se le dará a la autenticación.
      • AuthUserFile: Ruta donde se encuentra el fichero de passwords.
      • AuthGroupFile: Ruta donde se encuentra el fichero, si existe.
      • Require: El/los requerimiento/s que deben ser satisfechos en orden para garantizar el acceso.

      Estas directrices serán indicadas en el fichero .htaccess dentro del directorio que en particular se pretende proteger o pueden ir en el fichero principal de configuración del servidor, en una sección <Directory> o ámbito de aplicación de contenedores.

      El ejemplo presentado más abajo define una autenticación llamada «Acceso a Viajes». El fichero de passwords está ubicado en /etc/apache2/passwords.basic y será usado para verificar la identidad de los usuario. Sólo los usuarios llamados usuario1 y usuario2 tendrán garantizado el acceso y aún así, la password introducida deberá coincidir con la password almacenada en el fichero de passwords para cada usuario.

      <Directory "/var/www/http/viajes">
       AuthType Basic
       AuthName "Acceso a Viajes"
       AuthUserFile /etc/apache2/passwords.basic
       Require user usuario1 usuario2
      </Directory>

      La frase «Acceso a Viajes» será presentada en la ventana de autenticación donde el usuario tiene que escribir sus credenciales.

      auth_basic_ventana

      Si las directivas han sido puestas en el fichero principal de configuración del servidor, deberás reiniciar el Servidor para que la nueva configuración surta efecto. Si las directivas han sido puestas en un fichero .htaccess surtirán efecto inmediatamente, cada vez que el fichero .htaccess es analizado por el servidor.

      La próxima vez que accedas a un fichero de ese directorio, aparecerá un cuadro de dialogo usuario/password, requiriendo que escribas el nombre de usuario y la password antes de acceder a dicho fichero.

    •  

    • Opcionalmente crear un fichero de grupo (Volver al índice General)
      También se puede definir un fichero de grupos de usuarios que tendrán acceso a los recursos protegidos.

      La ventaja de utilizar un fichero de grupo es que no hay que modificar el fichero de configuración del sitio web o el archivo .htaccess ubicado en el directorio protegido, ni reiniciar el servidor cada vez que hay que eliminar o añadir usuarios.

      Esto se hace usando autenticación de grupos. Una autenticación de grupo es un nombre de grupo asociado a una lista de nombres de usuarios. Esta lista se guarda en un archivo de grupo que podría estar guardado en la misma localización que el fichero de passwords.
       
      Creación del archivo
      El formato del archivo de grupo es muy fácil. Cada línea constará de un nombre de grupo seguido de dos puntos (:) y a continuación, seguido de una lista de miembros del grupo separados por espacios. Por ejemplo, crearemos un archivo llamado groups.basic ubicado en /etc/apache2.
      Crearemos el archivo de grupo con el siguiente comando:

      $ sudo nano /etc/apache2/groups.basic

      A continuación, añadimos la siguiente línea al archivo.

      aurotizados: usuario1 usuario2

      Una vez este archivo ha sido creado, podemos requerir que los usuarios autorizados pertenezcan a un grupo en concreto para acceder al recurso. Esto se hace con el fichero de directivas AuthGroupFile, como se muestra en el siguiente ejemplo.

      <Directory "/var/www/http/admin">
       AuthType Basic
       AuthName "Administradores de Apache"
       AuthUserFile /etc/apache2/passwords.basic
       AuthGroupFile /etc/apache2/groups.basic
       Require group autorizados
      </Directory>

      Cuando una petición es recibida y la petición de nombre de usuario y password es suministrada, primero, el servidor comprueba en el archivo de grupo si el nombre de usuario está incluido en el grupo requerido. Si es así, será leído el fichero de passwords para comprobar si coinciden el password suministrado por el usuario con el guardado en el archivo de passwords, correspondiente a dicho usuario.

    •  

    • Ejemplo de directorio protegido usando SSL y Autentificáción Básica (Volver al índice General)
      En el fichero de configuración del sitio seguro (Apache + OpenSSL) añadir, siempre entre las etiquetas <VirtualHost *:443> y </VirtualHost> la directriz de directorio abajo indicada:

      <Directory "/var/www/https/dirseguro">
        AuthType Basic
        AuthName "Acceso a Directorio Seguro"
        Require group autorizados
        AuthUserFile /etc/apache2/passwords.basic
        AuthGroupFile /etc/apache2/groups.basic
      </Directory>

      El Directorio se llama dirseguro, se encuentra en la parte segura del servidor /var/www/https, el tipo de autenticación es Basic, el nombre identificativo del directorio que aparecerá en la autenticación es «Directorio Seguro», los usuarios autorizados serán los que estén incluidos en el grupo «autorizados» y los ficheros de passwords y groups se encuentran en /etc/apache2.

 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
  Configuración de privacidad y de cookies.
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Últimas publicaciones de

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.