14.12.2012 Views

BizTalk 2004 Server - Tecnología, Tips y Programación por Sergio ...

BizTalk 2004 Server - Tecnología, Tips y Programación por Sergio ...

BizTalk 2004 Server - Tecnología, Tips y Programación por Sergio ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

cifra el desafío usando este hash como<br />

clave para el proceso de encriptación,<br />

con lo que se obtiene otro hash único<br />

para ese valor de desafío y ese usuario.<br />

Este nuevo hash generado se envía<br />

al servidor junto con el nombre de<br />

usuario <strong>por</strong> la misma conexión <strong>por</strong><br />

donde se recibió (ésta se mantiene en<br />

estado keep alive), lo cual asegura la<br />

autenticidad del servidor.<br />

6. El servidor envía el hash recibido, el<br />

nombre de usuario y el valor de desafío<br />

al controlador primario de dominio<br />

(de haberlo). El PDC cifra el<br />

desafío con el hash del usuario que se<br />

guarda en la base de datos SAM del<br />

sistema o en el Directorio Activo.<br />

7. Si el hash generado en el PDC coincide<br />

con el que envió el cliente quiere<br />

decir que la autenticación ha tenido<br />

éxito y se envía la página solicitada<br />

en caso de que el usuario tenga<br />

permisos suficientes.<br />

Algún lector en este punto podría<br />

preguntar: si lo único que se conoce del<br />

usuario es su hash que <strong>por</strong> definición no<br />

se puede descifrar, ¿<strong>por</strong> qué no enviarlo<br />

directamente en lugar de obtener uno<br />

nuevo a partir de éste y del desafío? Si<br />

se hiciese de este modo cualquiera<br />

podría interceptar el hash del usuario y<br />

luego utilizarlo para hacerse pasar <strong>por</strong><br />

él, tal y como pasaba en el método anterior.<br />

Con el método descrito sólo puede<br />

autenticarse aquel que tenga el hash<br />

y el desafío enviado <strong>por</strong> el servidor, que<br />

cambia en cada ocasión, con lo que las<br />

cosas se complican. Para entenderlo<br />

mejor se podría asimilar en cierto modo<br />

a un algoritmo de clave pública en el<br />

que la contraseña del usuario sería una<br />

clave privada y el desafío enviado <strong>por</strong> el<br />

servidor una clave pública que va cambiando<br />

aleatoriamente.<br />

Internet Explorer efectúa todo el<br />

proceso de modo transparente usando<br />

el nombre y la contraseña que el usuario<br />

utilizó para entrar en la máquina<br />

cliente, y sólo si falla en este primer<br />

intento muestra un cuadro de diálogo<br />

para pedir otros datos diferentes. Este<br />

hecho puede hacer que parezca que a<br />

veces un acceso a IIS ha sido anónimo<br />

cuando no es así en realidad.<br />

La autenticación integrada de<br />

Windows posee la limitación adicional<br />

de no funcionar a través de conexiones<br />

proxy, <strong>por</strong> lo que habrá que tenerlo en<br />

cuenta en caso de que nuestros usuarios<br />

las utilicen.<br />

En definitiva, siempre que podamos<br />

deberemos usar la autenticación integrada.<br />

Sin embargo esto sólo será posible<br />

si se accede directamente al servidor<br />

(sin usar un Proxy o un cortafuegos)<br />

y en sistemas con Windows 2000<br />

o superior. Debido a estas restricciones<br />

en la práctica este método se usa sólo en<br />

Intranets, dejando para Internet normalmente<br />

la autenticación básica.<br />

SSL y Certificados digitales<br />

Una buena opción para habilitar la<br />

autenticación de usuarios segura e independiente<br />

del navegador consiste en<br />

combinar el método de autenticación<br />

básica descrito anteriormente con un<br />

certificado digital de servidor. De este<br />

modo el usuario se asegura de que se<br />

está comunicando con el servidor adecuado,<br />

y <strong>por</strong> otro lado se consigue que<br />

la información en claro que circula normalmente<br />

codificada como base64 se<br />

transmita ahora cifrada gracias al uso<br />

del algoritmo de clave pública que conlleva<br />

el uso de este tipo de certificados.<br />

Del mismo modo, en entornos que<br />

requieran una alta seguridad se puede<br />

exigir a los usuarios el empleo de certificados<br />

digitales en el lado del cliente.<br />

Puede obtener información detallada<br />

sobre este proceso consultando el<br />

artículo “Configuración de sitio Web<br />

seguro con Certificado de clientes” de<br />

Pedro Gómez en el número 4 de mayo<br />

de <strong>2004</strong> de dotNetManía.<br />

Suplantación de usuarios<br />

IIS no es más que otra aplicación<br />

que se ejecuta sobre el sistema operativo,<br />

<strong>por</strong> lo que es éste en última instancia<br />

el que se ocupa del nivel más bajo de<br />

la cadena de la seguridad. En el caso que<br />

nos ocupa dicho nivel lo constituye el<br />

sistema de archivos.<br />

En Windows, cada proceso se ejecuta<br />

dentro de su propio contexto de<br />

seguridad. Cuando un proceso accede<br />

al sistema de archivos NTFS los permisos<br />

se le otorgan en función del contexto<br />

en el que se ejecute. Normalmente<br />

si un proceso lanza otro subproceso éste<br />

se ejecutará bajo el mismo contexto de<br />

seguridad. Existen casos sin embargo en<br />

los que, <strong>por</strong> razones de seguridad, un<br />

proceso puede producir otros procesos<br />

que trabajen bajo condiciones de seguridad<br />

diferentes. Esto es lo que ocurre<br />

con IIS. Éste trabaja bajo el contexto de<br />

seguridad del sistema, esto es, como si<br />

se tratase del usuario System. Sin embargo<br />

cuando IIS ejecuta una aplicación<br />

ASP/ASP.NET, inicia un nuevo proceso<br />

bajo un contexto de seguridad diferente,<br />

efectuando lo que se denomina<br />

una suplantación de usuario. De este<br />

modo si el código de servidor de una<br />

página (o alguno de los componentes<br />

que ésta emplee) intenta acceder al disco<br />

duro u otro recurso del sistema, lo<br />

hará con los permisos del usuario al que<br />

está suplantando el proceso bajo el que<br />

se ejecuta, es decir, bajo el contexto de<br />

seguridad de dicho usuario. Este párrafo,<br />

aunque algo enrevesado, es fundamental<br />

para entender las implicaciones<br />

de seguridad en el sistema de archivos.<br />

Suplantación de usuarios en ASP<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!