49
Configuración de SSL en Servidores Web JORNADA 1 cid deza, moisés [email protected]

Seguridad j1v2

Embed Size (px)

DESCRIPTION

Configurar apache e iis sobre ssl

Citation preview

Page 1: Seguridad   j1v2

Configuración de SSL enServidores Web

JORNADA 1

cid deza, moisé[email protected]

Page 2: Seguridad   j1v2

La Web Qué es

En 1990 se desarrolló un sistema de relación documental basado en un formato de texto con etiquetas (tags) que permitía enlazar documentos entre sí, que recibió el nombre de World Wide Web o telaraña mundial.

Fue creado en el CERN (Consejo Europeo para la Investigación Nuclear) concebido y promovido por Tim Berners-Lee.

Page 3: Seguridad   j1v2

La Web Cómo se estructura

Los usuarios, mediante un navegador (cliente) solicitan recursos (normalmente páginas web) a otro ordenador (servidor web) el cliente envía una petición el servidor produce una respuesta (una página

HTML) La comunicación entre el cliente y el

servidor se realiza siguiendo el protocolo HTTP.

Page 4: Seguridad   j1v2

La Web Cómo se estructura

Servidor de nombres(DNS)

Servidor Web

Cliente Web(Internet Explorer,

Firefox, Opera, Chrome, etc.)

InternetAbrir dirección “http://www.facebook.com/login.php”

Envíame el documentologin.php

Page 5: Seguridad   j1v2

La Web Cómo se estructura

Cliente Web: Utiliza el protocolo HTTP para conectarse con los

servidores. Solicitan y muestran las páginas Web almacenadas en

los servidores. Clientes típicos: Explorer, Firefox, Chrome.

Servidor Web: Atiende, “escucha” las peticiones procedentes de los

clientes Web. Habitualmente escuchan en el puerto 80. Utilizan el protocolo HTTP para “conversar” con los

clientes. Almacenan y transmiten páginas web a los clientes. Actualmente interactúan con el usuario y generan

dinámicamente páginas web.

Page 6: Seguridad   j1v2

Servidores Web Transferencia de páginas web:

La petición se realiza escribiendo en el navegador su dirección URL (Uniform Resource Locator) o URI (Uniform Resource Identifier).

El formato general de un URL es: protocolo://máquina:puerto/directorio/fichero protocolo://usuario:contraseña@máquina:puerto/directorio/fichero

http://www.facebook.com:80/login.php El navegador asume valores por defecto: protocolo (http),

puerto (80)

Page 7: Seguridad   j1v2

Servidores Web Nivel de implantación de servidores a enero 2010

Vendedor

Producto

Sitios Web alojados %

Apache Apache 111 54

Microsoft IIS 50 24

Sysoev nginx 16 8

Google GWS 15 7

lighttpd lighttpd 1 0,46

Fuente: Netcraft

Page 8: Seguridad   j1v2

HTTP Qué es

HTTP (HyperText Transfer Protocol): Protocolo de Transferencia de Hipertexto, creado para compartir datos científicos a nivel internacional y de forma instantánea.

Es el método más común de intercambio de información en la web, pero ¿es seguro?

Page 9: Seguridad   j1v2

HTTP Actividad 1

Se trata de demostrar que HTTP no es un método seguro para el intercambio de la información.

Se deberá instalar un sniffer en cada PC y ver el tráfico que se genera cuando un usuario se conecta a una web en la que debe facilitar su nombre de usuario y contraseña.

Page 10: Seguridad   j1v2

HTTP Actividad 1

Pasos a seguir A.- Descargar e instalar un sniffer (p. ej: Wireshark) B.- Conectarse a una página que requiera autenticación

mediante login y password. P. ej: http://192.168.0.X/login/login.asp

C.- Comprobar con el sniffer si es posible averiguar el nombre de usuario y la contraseña.

Page 11: Seguridad   j1v2

SSL ¿Por qué?

HTTP NO es seguro y en algunas Webs puede existir la necesidad del envío de datos confidenciales o secretos.

Desarrollado inicialmente por Netscape (1994) Hasta su tercera versión, conocida como SSL v3.0

que alcanzó su madurez Ofrece:

Integridad de mensajes Confidencialidad mediante del cifrado de datos Autenticación (de servidores y usuarios)

Se basa en: Criptografía de claves simétricas y asimétricas Códigos de autentificación de mensajes (MACs) Certificados digitales x.509

Page 12: Seguridad   j1v2

SSL - Funcionamiento Clave de sesión: se utiliza para cifrar los datos de la

comunicación. Diferente para cada transacción. Pasos:

1. Solicitud del cliente: el cliente solicita una URL con soporte para SSL. A continuación se acuerda la conexión SSL (handshake).

2. Se establece la conexión SSL.3. Verificación del servidor desde el cliente y acuerdo del

algoritmo de criptografía.4. Respuesta del servidor, con envío de su identificador.5. El cliente verifica la validez del identificador digital del

servidor, desencriptándolo y utilizando su clave pública.6. El cliente genera una clave aleatoria y la encripta utilizando la

clave pública del servidor y el algoritmo concertado. A continuación la envía al servidor.

7. Ambos conocen sus claves, e intercambian información utilizando la clave secreta y el algoritmo de cifrado acordado.

Page 13: Seguridad   j1v2

SSL Funcionamiento

El usuario explora un servidor Web seguro mediante HTTPS

El explorador crea una clave de sesión única y la cifra mediante la clave pública del servidor Web, que se genera a partir del certificado raíz

El servidor Web recibe la clave de sesión y la descifra mediante su clave privada

Una vez establecida la conexión, toda la comunicación que tiene lugar entre el explorador y el servidor Web es segura

1

2

3

4

Certificado raíz delservidor Web

Mensaje

Servidor Web seguro

HTTPSHTTPS

Explorador seguro

1

2

34

Page 14: Seguridad   j1v2

SSL - Funcionamiento Durante este proceso, el explorador

web verifica que:• el nombre del dominio del certificado coincida con el dominio desde el quese lo envió• el certificado no esté vencido• el explorador de la Web considera que la CA que firmó el certificado esfiable

Page 15: Seguridad   j1v2

HTTPs Versión de HTTP que se basa en SSL Crea un canal seguro de intercambio de

información sobre una red insegura. Usado por las webs para su identificación

y para la confidencialidad de la información que envían los usuarios

El puerto por defecto para comunicaciones a través de HTTPs es el 443

Page 16: Seguridad   j1v2

HTTPs Cuándo utilizarlo

Se debe utilizar HTTPs: Web de e-commerce En la web se accede a información confidencial

(datos personales, económicos, etc) Se precisa cumplir con las normativas de

seguridad y confidencialidad

Page 17: Seguridad   j1v2

Configurar SSL en IISIntroducción IIS

IIS es el servidor Web de microsoft. Realmente ofrece un conjunto de servicios como HTTP, HTTPs, FTP, SMTP,…)

Se puede administrar a través de una consola de administración.

ScreenCast: Cómo crear un directorio virtual en IIS

Page 18: Seguridad   j1v2

Configurar SSL en IISQué se necesita

Tener instalado IIS Certificado digital de servidor emitido por una CA

para un sitio Web La CA garantiza que ese servidor Web es quien dice ser

Herramienta para configurar el servidor Consola de Administración de IIS

CA que firme los certificados de los servidores. Las más conocidas: Thwate, Verisign, Camerfirma, etc. Para nuestras pruebas, crearemos nuestra propia CA con

OpenSSL

Page 19: Seguridad   j1v2

Configurar SSL en IISActividad 2

Pasos a seguirA.- Creación de una solicitud de certificado

Para conseguir que nuestro servidor Web albergue un sitio seguro (HTTPS) se necesita obtener un certificado digital.

B.- Creación de una CA y emisión del certificado para el servidor Web

La CA debe firmar nuestra solicitud de certificado verificando los datos de la empresa y emitiendo el certificado final.

C.- Configurar IIS con SSL

NOTA: Crear un directorio llamado “c:\curso_seguridad\actividad2_ssl” para albergar todos los ficheros que se irán generando.

Page 20: Seguridad   j1v2

Configurar SSL en IISActividad 2

A.- Creación de una solicitud de certificado1. Sitio Web Propiedades2. Seguridad de Directorios Certificado de Servidor3. Crear un nuevo certificado4. Preparar la solicitud pero no enviarlo5. Indicar los siguientes datos:

1. Nombre: Certificado de Servidor de Prueba2. Longitud: 2048bits

6. Indicar los siguientes datos:1. Organización: academia2. Departamento: informatica

7. Indicar los siguientes datos:1. Nombre común: Aquí se debería indicar el dominio del sitio seguro, p. ej:

informatica.academia.org. IMPORTANTE: Un certificado sólo vale para un nombre de dominio válido. El nombre que se indicará es localhost.

8. Completar el resto de datos.9. Guardar el documento txt en la carpeta de trabajo. Utilizar el nombre

certreq.txt. Este documento es el que contiene la solicitud de generación de certificado.

NOTA: En un caso real, éste sería el fichero que habría que enviar a alguna de las CA que pueden emitir certificados (Thwate, Verisign, Camerfirma, etc).

Page 21: Seguridad   j1v2

Configurar SSL en IISActividad 2

B.- Creación de una CA y emisión del certificado1. Generar la clave privada de la CA: Con ella se firmará la

información enviada por el servidor Web (descripción y clave pública del Web). Cuando un cliente reciba la clave pública del Web, puede verificar que es correcto gracias a que esta firmado por la CA.

openssl genrsa -des3 -out cakey.pem 2048

2. Crear el certificado digital de la CA: openssl req -new -x509 -key cakey.pem -out cacert.pem -days 365

3. Crear el certificado para el servidor Webopenssl x509 -req -days 365 -in certreq.txt -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out iis.crt

NOTA: En un caso real, este paso NO sería necesario. Las CA ya existen, poseen su clave privada, su certificado. Se limitan a comprobar la identidad del solicitante y firmar solicitudes como las generadas en el PASO A.

Ejecutar el comando desde la carpeta de trabajo (incluir en PATH), o bien generar los archivos de salida en la carpeta de trabajo (c:\curso_seguridad\act3\cakey.pem)

Page 22: Seguridad   j1v2

Configurar SSL en IISActividad 2

C.- Configurar IIS con SSL1. Abrir la consola de administración del servidor y acceder a a

la ventana de certificados.2. Tras pulsar siguiente, el asistente nos permite procesar la

petición pendiente.3. Indicar la ruta en la que se ha generado el certificado para el

web.4. Comprobar que los datos son correctos y finalizar.5. Probar que funciona conectándose a https://localhost

PREGUNTAS: Aparece un mensaje de error, ¿por qué?. Actualmente funciona con HTTP y HTTPs, ¿se puede configurar sólo con HTTPs?

Page 23: Seguridad   j1v2

Configurar SSL en IISActividad 2

¿La información se envía encriptada? Repetir la actividad del sniffer en:

https://192.168.X.Y/login/login.asp http://192.168.X.Y/login/login.asp

PREGUNTAS: Actualmente funciona con HTTP y HTTPs, ¿se puede configurar sólo con HTTPs?

Page 24: Seguridad   j1v2

Configurar SSL en ApacheIntroducción Apache Apache es el servidor Web más extendido en el

mundo. Se administra a través de ficheros de

configuración. Se distribuye en paquetes como XAMPP que

incluyen: Apache MySQL PHP Perl y otros (Filezilla, OpenSSL, etc)

Page 25: Seguridad   j1v2

Configurar SSL en ApacheIntroducción Apache Su archivo de configuración principal es:

/conf/httpd.conf. Las páginas web se suelen crear /htdocs.

Page 26: Seguridad   j1v2

Configurar SSL en ApacheQué se necesita

XAMPP Configurar Apache para que sirva las páginas web

en un puerto diferente al servidor IIS, por ejemplo, en el 8080, o bien parar IIS.

Certificado digital de servidor emitido por una CA para un sitio Web La CA garantiza que ese servidor Web es quién dice ser

Configurar el servidor web Ficheros httpd.conf y httpd-ssl.conf

CA que firme los certificados de los servidores. Las más conocidas: Thwate, Verisign, Camerfirma, etc. Crear la CA con OpenSSL

Page 27: Seguridad   j1v2

Configurar SSL en ApacheActividad 3

Pasos a seguirA.- Creación de una solicitud de certificado

Para conseguir que nuestro servidor Web albergue un sitio seguro (HTTPS) se necesita obtener un certificado digital.

B.- Creación de una CA y emisión del certificado para el servidor Web

La CA debe firmar nuestra solicitud de certificado verificando los datos de la empresa y emitiendo el certificado final.

C.- Configurar Apache con SSL

NOTA: Crear un directorio llamado “c:\curso_seguridad\actividad3_ssl” para albergar todos los ficheros que se irán generando.

Page 28: Seguridad   j1v2

Configurar SSL en ApacheActividad 3A.- Creación de una solicitud de certificado

1. Generación de la clave privada del certificadoopenssl genrsa -des3 -out apachekey.pem 2048

2. Creación de la solicitud del certificado:openssl req -new -key apachekey.pem -out certreq_apache.txt

NOTA: En el proceso de creación de la solicitud se pedirán datos de identificación de la empresa u organización que utilizará el certificado digital. Recordar que es importante el Common Name, ya que en este dato se almacenará el nombre del sitio seguro.

Page 29: Seguridad   j1v2

Configurar SSL en ApacheActividad 3

B.- Creación de una CA y emisión del certificado1. Generar la clave privada de la CA: Con ella se firmará la

información enviada por el servidor Web (descripción y clave pública del Web). Cuando un cliente reciba la clave pública del servidor Web, puede verificar que es correcto gracias a que esta firmado por la CA

openssl genrsa -des3 -out cakey.pem 2048

2. Crear el certificado digital de la CA: openssl req -new -x509 -key cakey.pem -out cacert.pem -days 365

3. Crear el certificado para el servidor Web:openssl x509 -req -days 365 -in certreq_apache.txt -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out apache.crt

NOTA: Es posible crear una nueva CA, o bien hacer uso del certificado y clave privada de la creada en la actividad anterior. Es decir, sólo sería necesario el 3º paso.

Page 30: Seguridad   j1v2

Configurar SSL en ApacheActividad 3

C.- Configurar Apache con SSL1. Copiar el certificado digital y la clave privada a XAMPP\

Apache\conf2. Modificar el fichero ubicado en XAMMP\Apache\conf\extra\

httpd-ssl.conf del siguiente modo:Listen 4430...NameVirtualHost *:4430<VirtualHost *:4430>ServerAdmin webmaster@localhostDocumentRoot /xampp/htdocsServerName localhost...SSLCertificateFile conf/apache.crtSSLCertificateKeyFile conf/apachekey.pem...

3. Reiniciar Apache

OJO: El nº de puerto de Apache NO puede coincidir con el de IIS. Para probar, parar IIS o bien indicar el 4430, en lugar del 443

¿Funciona?

Page 31: Seguridad   j1v2

Autenticación en Servidores Web

Propósito Comprueba la identidad de un principal:

Aceptando credenciales Validando dichas credenciales

Protege las comunicaciones al asegurarse de que su aplicación sabe quién está llamando

No basta con cifrar los datos!!

Page 32: Seguridad   j1v2

Autenticación en IIS Métodos

Anónima Básica De texto implícita Certificados Digitales de Cliente Integrada

El protocolo Kerberos versión 5 NTLM

Microsoft Passport Biométrica

Page 33: Seguridad   j1v2

Autenticación en IIS Anónima

Proporciona a los usuarios acceso a las áreas públicas del sitio Web o FTP sin preguntar el nombre de usuario o la contraseña.

Durante la instalación, la cuenta IUSR_nombreDeEquipo se agrega al grupo Invitados en el equipo que ejecuta IIS. Los invitados tienen predeterminadamente el mismo acceso que los miembros del grupo Usuarios, excepto la cuenta Invitado que tiene más restricciones.

Page 34: Seguridad   j1v2

Autenticación en IIS Básica

Es simple pero efectiva La aceptan los principales

exploradores y servidores Es fácil de programar

y de configurar Administra las credenciales

de usuario

Page 35: Seguridad   j1v2

Autenticación en IIS Básica

La autenticación básica transmite nombres de usuario y contraseñas a través de la red de forma no cifrada.

Puede utilizar las características de cifrado del servidor Web (SSL), junto con la autenticación básica, para trasmitir de forma segura la información de la cuenta de usuario a través de la red.

Page 36: Seguridad   j1v2

Autenticación en IIS Certificados Digitales de

Cliente Se utilizan en aplicaciones Web

El servidor protege las comunicaciones utilizando SSL/TLS con un certificado de servidor X.509

El servidor autentica a los clientes utilizando datos contenidos en el certificado X.509 del cliente, si es necesario

La entidad emisora de certificados emite un certificado para el cual el servidor contiene un certificado raíz

Se utilizan en aplicaciones distribuidas La aplicación utiliza un canal de comunicaciones SSL/TLS Las aplicaciones del cliente y del servidor se autentican

mediante certificados.

Page 37: Seguridad   j1v2

Autenticación en IIS Certificados Digitales de

Cliente ¿Cuándo es útil?

En aplicaciones de una Intranet en la que la propia entidad se convierte en CA y genera y distribuye los certificados entre los usuarios.

Evita que un usuario que tenga acceso a la red pueda acceder a la aplicación.

Page 38: Seguridad   j1v2

Autenticación en IIS Actividad 4

Se trata de implementar autenticación en un servidor IIS mediante certificados digitales de cliente.

Se deberá generar y emitir un certificado para un usuario del servidor web y configurar éste para que sólo autorice acceso a la aplicación a aquellos usuarios que se hayan autenticado mediante el certificado digital que deberá estar instalado en su navegador el certificado.

Page 39: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en IIS

Actividad 4

Pasos a seguir:A.- Creación de una solicitud de certificado de usuarioB.- Emisión del certificado de usuario

La CA debe firmar nuestra solicitud de certificado verificando que ese usuario es quién dice ser.

C.- Configurar IIS para requerir certificados clienteD.- Configurar el navegador web con nuestro nuevo

certificado de usuario

Page 40: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en IIS

Actividad 4

A.- Creación de una solicitud de certificado de usuario

1. Generar la clave privada del certicado:openssl genrsa -des3 -out usuario1key.pem 2048

2. Crear la solicitud de certificado: openssl req -new -key usuario1key.pem -out certreq_usuario1.txt

Page 41: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en IIS

Actividad 4B.- Emisión del certificado de usuario

1. Crear el certificado para el usuario:

openssl x509 -req -days 365 -in certreq_usuario2.txt -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out usuario2cert.crt

2. Exportar el certificado de usuario a un paquete .pkcs12:

openssl pkcs12 -export -in usuario2cert.crt -inkey usuario2key.pem -certfile cacert.pem -out usuario2cert.p12

NOTA: En este caso, será la CA creada en la actividad 3 la que firmará el certificado solicitado por el usuario.

Para que los navegadores clientes puedan importar el certificado de cliente y puedan de este modo acceder al sitio seguro debemos de convertir el certificado a un formato pkcs12

Page 42: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en IIS

Actividad 4

C.- Configurar IIS para requerir certificados cliente

Page 43: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en IIS

Actividad 4

D.- Configurar el navegador web con nuestro nuevo certificado de usuario

1. Importar el certificado de usuario en el navegador.

¿Funciona?

Page 44: Seguridad   j1v2

Autenticación en Apache Métodos

Autenticación Básica Autenticación Digest Autenticación con bases de datos Autenticación con Certificados Digitales de

Cliente

Page 45: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en Apache

Actividad 5

Pasos a seguir:A.- Creación de una solicitud de certificado de usuarioB.- Emisión del certificado de usuario

La CA debe firmar nuestra solicitud de certificado verificando que ese usuario es quién dice ser.

C.- Configurar Apache para requerir certificados clienteD.- Configurar el navegador web con nuestro nuevo

certificado de usuario

Page 46: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en Apache

Actividad

A.- Creación de una solicitud de certificado de usuario

1. Generar la clave privada del certicado:openssl genrsa -des3 -out usuario1key.pem 2048

2. Crear la solicitud de certificado: openssl req -new -key usuario1key.pem -out certreq_usuario1.txt

Page 47: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en Apache

Actividad

B.- Emisión del certificado de usuario1. Crear el certificado para el usuario:

openssl x509 -req -days 365 -in certreq_usuario1.txt -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out usuario1cert.crt

2. Exportar el certificado de usuario a un paquete .pkcs12: openssl pkcs12 -export -in usuario1cert.crt -inkey usuario1key.pem -certfile cacert.pem -out usuario1cert.p12

NOTA: En este caso, será la CA creada en la actividad 3 la que firmará el certificado solicitado por el usuario.

Para que los navegadores clientes puedan importar el certificado de cliente y poderacceder al sitio seguro debemos de convertir el certificado a un formato pkcs12

Page 48: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en Apache

Actividad

C.- Configurar Apache para requerir certificados cliente

1. Copiar el certificado de la CA al directorio /XAMPP/Apache/conf

2. Añadir/Modificar las siguientes líneas al servidor virtual:SSLCACertificateFile conf/cacert.pem

SSLVerifyClient require

Page 49: Seguridad   j1v2

Autenticación con Cert. Dig. Cliente en Apache

Actividad

D.- Configurar el navegador web con nuestro nuevo certificado de usuario

1. Importar el certificado de usuario en el navegador.

¿Funciona?