next up previous contents
Siguiente: Seguridad en el servidor Subir: Seguridad en el servidor Anterior: Seguridad en el servidor   Índice General

Autenticación

Para poder utilizar la aplicación de administración hay que introducir un nombre se usuario y una clave previamente. Se ha utilizado el proceso de autenticación de HTTP básico. La autenticación HTTP básica es muy sencilla. Cuando un explorador Web solicita un URL que está protegido por una autenticación HTTP, el servidor Web le devuelve una cabecera de estado 401 y otra de respuesta para la autenticación (véase figura 3.24). La cabecera contiene el sistema de autenticación que se está utilizando y el nombre del dominio.
Figura 3.24: Proceso de autenticación HTTP básico
\includegraphics[height=10cm,width=14cm
]{autenticacion.ps}
A continuación el explorador Web muestra un cuadro de diálogo que le pide al usuario que introduzca su nombre y contraseña. Cuando el usuario facilita esta información, el explorador se la envía de vuelta al usuario junto con el URL solicitado. El servidor comprueba si los datos son válidos. En caso, afirmativo, mostrará la página solicitada. En caso negativo, responde con un estado 401 y vuelve a enviar la misma cabecera de autenticación. En la siguiente llamada al servidor, el explorador se limitará a enviar la información facilitada por el usuario, con lo que se evita que el servidor genere un estado 401. Por ejemplo, si el URL https://localhost/cgi-bin/admin/ requiere una autenticación HTTP básica, las siguientes llamadas a https://localhost/cgi-bin/admin/alta_usuario y https://localhost/cgi-bin/admin/activacion requerirán el par nombre/contraseña. Esta es la razón por la que el servidor envía el par antes de que se produzca ningún intercambio de autenticación (es decir, el envío de la cabecera de estado 401 y la respuesta de autenticación www) con el servidor. Este sistema es más rápido y práctico que generar una opción para cada petición recibida y hacer que el usuario introduzca una y otra vez su nombre y contraseña. Cuando el sistema del cliente envía la contraseña (el host en el que se ejecuta el explorador Web), ni lo hace en texto plano ni la encripta. En vez de eso utiliza la codificación uu y la transmite por la red. Este es el inconveniente de este método de autenticación, porque cualquiera que tenga un sniffer puede hacerse con el paquete IP que transporta la contraseña uu-codificada. La verdad es que este sistema de codificación está muy extendido en la actualidad y cualquiera puede descodificar la contraseña y abusar de su uso. Es cierto que el sniffer tiene que localizar el paquete correcto para poder proceder a la descodificación, pero técnicamente es posible. El módulo que se ha usado para proteger los scripts cgi de un usuario externo es mod_auth. Este módulo se compila por defecto en la distribución estándar de apache. Para confirmar la autenticación, utiliza los nombre de usuarios, los grupos y las contraseñas almacenadas en archivos de texto. Este sistema funciona muy bien cuando el número de usuarios con el que se trabaja es muy pequeño. En nuestro caso la aplicación sólo la utilizará el administrador del sistema. En nuestro caso vamos a crear un único usuario por lo que sólo necesitaremos la directivas AuthUserFile. La directiva AuthUserFile determina el nombre del archivo de texto en el que se guardan los nombres de los usuarios y las contraseñas que se utilizan en el proceso de autenticación HTTP básico. Se ha de suministrar un path completo. La configuración de Apache que tenemos tiene las siguientes directivas:
ScriptAlias /cgi-bin/ /usr/local/nocat/cgi-bin/
AccessFileName .htaccess
AllowOverride All
Nosotros queremos restringir el acceso al directorio /usr/local/nocat/cgi-bin/admin. Los pasos que se han seguido son:
  1. Crear un archivo para el usuario con htpasswd. Para esto se he utilizado un programa llamado htpasswd que incluye la distribución estándar de Apache. El programa crea el archivo del usuario que necesita la directriz AuthUserFile. El comando utilizado es:
    htpasswd -c /usr/local/nocat/usuarios/.htpasswd nocat
    
    ''nocat'' es el nombre de usuario que hemos introducido. Seguidamente la utilidad htpasswd solicita la contraseña de ''nocat''. Hay que destacar que:
  2. Creación del archivo .htaccess. Hemos creado el archivo /usr/local/nocat/cgi-bin/admin/.htaccess con los siguientes datos:
    AuthName "Sistema de Administración"
    AuthType Basic
    AuthUserFile /usr/local/nocat/usuarios/.htpasswd
    require user nocat
    
    La primera directriz, AuthName, determina la extensión de la autenticación. No es más que una etiqueta que se envía al explorador Web para que tenga alguna pista sobre a qué se quiere acceder. En este caso, ''Sistema de administración''. La segunda directriz, AuthType, especifica el tipo de autenticación utilizada. La siguiente directriz, AuthUserFile, especifica el nombre del archivo del usuario.
  3. Configurar el archivo de permisos. Hay que cambiar el propietario de los archivos .htaccess y .htpasswd para que sólo los pueda leer Apache.
  4. Cuando intentamos acceder a cualquier página dentro del directorio /cgi-bin/admin nos aparece un cuadro de diálogo similar al de la figura 3.25.
    Figura 3.25: El explorador Web solicita el nombre y la contraseña
    \includegraphics[height=4.5cm,width=7.5cm
]{cuadro_clave.ps}

next up previous contents
Siguiente: Seguridad en el servidor Subir: Seguridad en el servidor Anterior: Seguridad en el servidor   Índice General
Jesús Martín 2003-09-16
e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


SISTEMA DE CONTROL, TARIFICACIÓN Y ADMINISTRACIÓN DEL ACCESO A INTERNET DESDE REDES HETEROGÉNEAS

: Martín Ruiz, Jesús
: Ingeniería Telecomunicación
Contenido del proyecto: