[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Exim Authentificación



Gracias por la documentación, pero no hay una manera de que pille los
paswords de los usuarios del sistema? sin ldap,...


> Hola Jaume
>
> On Wednesday 16 October 2002 09:23, jaume wrote:
> > Alguien me puede decir algun documento sobre la autentificacion smtp en
> > exim?
> > Estoy un poco liado de conceptos y necesitaria aclaración por favor.
> > Lo único que quiero es que al enviar una red con outlooks express a
través
> > de exim en una Woody tengan que marcar por fuerza "mi servidor requiere
> > autentificacion", y que sea un usuario válido del sistema.(shadow
passwd).
> > Tengo el exim instalado a partir del apt-get  y configurado con las
> > opciones del eximconf, pero no se si tengo que bajarme los codigos
fuentes
> > y compilarlo con otro soporte, ...o ke.
> > Ayudadme por favor.
> >
> > Gracias.
>
> La documentación oficial la puedes encontrar en:
>
> http://www.exim.org/exim-html-3.30/doc/html/spec_toc.html#TOC763
>
> ( creo que incluso el spec viene en la distribución de exim )
> Tienes todo un capítulo dedicado a eso, por si acaso y de paso te pego un
> documentillo de cocina interna para incomporar smpt autentiticado a un
exim
> con LDAP en multidominio sólo para algunos dominios
>
> --------------------------------------------------------------------------
-------------------------
> -----------------------------------------
>
> Paso 1: Compilación de exim con soporte para smtp autenticado:
Local/Makefile
> AUTH_PLAINTEXT=yes
>
> Paso 2: Habilitar el uso de smtp autenticado por parte de los clientes:
>
> desde cualquier dirección:host_auth_accept_relay = *
> sólo desde las conexiones con relay permitido:
> #puedes utilizar los formatos habituales de exim, o incluso poner una sola
> #dirección de red con máscaras
> host_auth_accept_relay=/opt/exim/etc/relay.conf
>
> generar una macro LDAP de este tipo:
> LDAP_FILTER_SMTPAUTH=(&(mail=$2@dominio.com)(userpassword=$3))
>
> Suponiendo que el mail del usuario de dominio.com contiene la uid del
usuario
> y el
> dominio de no ser asi tendrías
> algo así:
>
> LDAP_FILTER_SMTPAUTH=(&(&(mail=*@dominio.com)(uid=$2))(userpassword=$3))
>
>
> suponiendo que el atributo userpassword contiene el password del usuario
en
> texto plano.
> en configuraciones más trabajadas se podría atacar un password cifrado con
> MD5,
> pero en principio
> el soporte de SHA en las comparaciones no se obtiene de forma nativa. si
> unimos
> esto a que el atributo userpassword
> suele estar protegido de las miradas curiosas, con lo que la búsqueda LDAP
> se debe hacer con un usario con permisos suficientes para retirar el valor
del
> atributo.
> lo puedes almacenar en otra Macro
> CREDENTIALS=user="cn=Directory Manager" pass=password
> Evidentemente no debería ser el directory manager quién haga la búsqueda,
lo
> mejor, como me comentaba
> ernesto sería algo así como utilizar al propio usuario para validar su
> password,
> te cuento:
>
> imagina que todos los usuarios de dominio.com siguen la misma norma para
> generar
> su DN, por ejemplo la
> uid que envían para autenticar en el correo seguido de su posición en el
> árbol:
>
> uid=$uid_de_autentificación,ou=dominio,o=bt
>
> Como autentico al usuario validando la password....
>
> pues creando esto en la macro credentias:
> CREDENTIALS_SECURE= user="uid=$2,ou=dominio,o=bt" pass=$3
>
> si utilizas este segundo método te ahorras poner el password en el filtro:
> LDAP_FILTER_SMTPAUTH=(mail=$2@dominio.com)
> o
> LDAP_FILTER_SMTPAUTH=(&(&(mail=*@dominio.com)(uid=$2))
>
> si la uid que utilizan para autententicar no es la misma, o no forma parte
del
> dn.....
> pues tendrías que ver la manera de hacerte con el dn del usuario, puede
que
> con
> una búsqueda ldap extra
>
> Evitas así configurar un usuario con privilegios sobre el LDAP en exim y
el
> sistema de cifrado de las passwords
> es totalmente transparente para exim.... ( ¿qué sistema de smtp
autenticado da
> más que esto? )
>
>
> smtp_auth_driver:
> #opciones especificas de autentificación mediante password en claro
> #usuario password_codificada_en_base64
> driver = plaintext
> public_name = PLAIN
> #parametros que el servidor solicita al cliente antes de expandir la
condicion
> #por defecto usuario y password, cuando las tiene...., parece que a
outlook
> #solo le gusta este formato concreto
> server_prompts = Username : Password
> #busqueda LDAP y validación
> server_condition = "${lookup ldap {CREDENTIALS_SECURE \
> ldap:///LDAP_BASE?LDAP_ATTRIBUTES?sub?LDAP_FILTER_SMTPAUTH}{true} fail}"
> #paso del parametro de identificacion en forma de variable al resto
> #de elementos de exim, por ejemplo para añadir un campo en las cabeceras
> server_set_id = $2
>
>
> tu server condition podría hacer usar la función crytpeq, aunque la
extracción
> de los passwords del archivo de shadow te supondrá darle lectura al
usuario
> que ejecuta exim, tendrías que obtener tu el texto cifrado, y bla bla bla,
> pero bueno, tampoco es :
>
> --------------------------------------------------------------------------
----------------------------
> crytpeq {<string1>}{<string2>}
>
> This condition is included in the Exim binary if it is built to support
any
> authentication mechanisms (see chapter 35). Otherwise, it is necessary to
> define SUPPORT_CRYPTEQ in `Local/Makefile' to get crypteq included in the
> binary.
>
> The crypteq condition has two arguments. The first is encrypted and
compared
> against the second, which is already encrypted. The second string may be
in
> the LDAP form for storing encrypted strings, which starts with the
encryption
> type in curly brackets, followed by the data. For example:
>
> {md5}CY9rzUYh03PK3k6DJie09g==
>
> If such a string appears directly in an expansion, the curly brackets have
to
> be quoted, because they are part of the expansion syntax. For example:
>
> ${if crypteq {test}{\{md5\}CY9rzUYh03PK3k6DJie09g==}{yes}{no}}
>
> Two encryption types are currently supported:
>
>     * md5 first computes the MD5 digest of the string, and then expresses
this
> as printable characters by means of base64 encoding.
> * crypt calls the crypt() function as used for encrypting login passwords.
>
> If the second string does not begin with `{' it is assumed to be encrypted
> with crypt(), since such strings cannot begin with `{'. Typically this
will
> be a field from a password file.
> --------------------------------------------------------------------------
------------------------
> PASSWORDCIFRADO="macro realizada con extract, utilizas $2 como patron de
> reconocimiento de línea y extraes con los : como separador de campo"
> #(recuerda que las macros las defines en main, pueden ir en la misma línea
> #pero se hacen imposibles de leer"
> server_condition = "${if crypteq {$3}{PASSWORDCIFRADA}{yes}{no}"
>
> La información de como trabajar con extract ,la tienes también en la
> documentación:
> http://www.exim.org/exim-html-3.30/doc/html/spec_toc.html#TOC179
>
> Puede que haya un sistema mejor para comparar passwords del sistema pero
lo
> desconozco, como consejo yo instalaría un openldap sin mucha floritura y
lo
> atacaría para comparar passwords, expones menos la seguridad del sistema y
al
> mismo tiempo te ahorras la "MACRO" de extracción de passwords cifrados (
> aunque le puedas exportar usuario:password a un archivo y extraer de ahí
que
> es bastante simple.... )
>
> Ante cualquier duda de todos modos ya sabes donde estamos
> Espero que algo de esto te sirva de ayuda, un saludo
> Victor
>
>
> --
> To UNSUBSCRIBE, email to debian-user-spanish-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact
listmaster@lists.debian.org
>
>
>




Reply to: