sábado, 25 de julio de 2009


Diferencia entre Basic y Digest

La directiva AuthType de apache selecciona el método que se va a usar para autentificar al usuario.

Tiene 2 métodos:

Basic y Digest , la primera envía la contraseña desde el cliente hasta el navegador sin encriptar, mientras la segunda lo encripta:

Haremos la prueba capturando tramas con un Sniffer conocido como el wireshark (lo podeís decargar aquí) desde nuestro servidor web y veremos el usuario y contraseña bajo protocolo http:

Crearemos los usuarios siguiendo los siguientes pasos:

1ro.- Crearemos un txt donde estarán nuestros usuarios, lo llamaremos users.txt (lo podéis guardar por ejem. en la unidad C:\).

2do.- Ahora crearemos los usuarios ,con el siguiente comando, y así con todos los usuarios que querramos , muy importante la ruta de htpasswd en entorno ms-dos (usuario=sole, password=12345aA):

C:\Apache2\bin>htpasswd C:\users.txt sole

Automatically using MD5 format.

New password: *******

Re-type new password: *******

Adding password for user sole

Una vez ejecutado lo anterior, abrimos el archivo que creamos para los usarios "users.txt" y veremos como se codifica la contraseña que le hemos puesto a nuestros usuarios:

3er.- Ahora editaremos nuestras directivas(en este ejemplo trabajo con virtual host para cada IP, no es muy común, lo normal es que sea por nombre), nuestro código será el siguiente en httpd-vhosts.conf (c\apaceh2\conf):


ServerName 192.168.20.1

NameVirtualHost 192.168.20.10

NameVirtualHost 192.168.20.8

ServerName www.s2k07.com

ServerAlias 3ws.s2k07.com

DocumentRoot "C:\Apache2\sites\s2k07.com"

DirectoryIndex index.html index.htm default.html default.htm

########## Directivas www.s2k07.com ##########

AuthType Basic

AuthName "Acceco Restringido!!!!"

AuthBasicProvider file

AuthUserFile "C:\users.txt"

Require user sole


##############################################

ServerName www.ejemplo07.net

ServerAlias *.ejemplo07.net

DocumentRoot "c:/Apache2/sites/ejemplo07.net"

DirectoryIndex index.html index.htm

########## Directivas www.ejemplo07.net ##########

AuthType Basic

AuthName "Acceco Restringido!!!!"

AuthBasicProvider file

AuthUserFile "C:\users.txt"

Require user sole


Lo probamos nos conectamos a la url, en este caso es www.ejemplo07.com, y con el sniffer y veremos como podemos capturar el usuario y su contraseña:



Ahora lo haremos en modo AuthType Digest. Este método está implementado en mod_auth_digest y es mucho más seguro. Este tipo de atutentificación encripta las contraseñas y de esta manera no podremos capturarlas atra vez de un sniffer.

Configuración de la directiva Digest:

Tenemos que cargar el modulo Digest para funcione(por defecto viene comentada) para eso tenemos que descomentar en nuestro httpd.conf la siguiente línea:

LoadModule auth_digest_module modules/mod_auth_digest.so

Ahora reemplazamos lo siguiente por todo lo que esta en AuthType Basic del ejemplo anterior:

AuthName "Acceso privado"

AuthType Digest

AuthUserFile "C:\user_digest.txt"

Require valid-user

valid-user=Cualquier usuario que este dado de alta en modo digest , no funciona con nombres de usuarios.

Ahora para la creación de nuestro user digest a comparación del basic es distinto, no funciona con el htpass , utiliza htdigest (C:\Apache2\bin), desde cmd:

C:\Apache2\bin>htdigest -c C:\user_digest.txt "Acceso privado" arturo

Adding password for arturo in realm Acceso privado.

New password: *******

Re-type new password: *******


NO OLVIDEMOS REINICIAR O HACER UN RELOAD, UNA VEZ HECHO LOS CAMBIOS.

Ahora nos conectaremos a s2k07.com y con el sniffer en marcha veremos que la contraseña del usuario estara encriptada.



Es pero que os haya servido de algo mi experiencia con apache....saludos y cualquier consulta duda, comente..................

1 comentarios:

Anónimo dijo...

Perfecto, ahora lo entiendo!!!!!!!!!!!!!1 genial artículo..............

Publicar un comentario