• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Seguridad   j1v2
 

Seguridad j1v2

on

  • 1,677 views

Configurar apache e iis sobre ssl

Configurar apache e iis sobre ssl

Statistics

Views

Total Views
1,677
Views on SlideShare
1,661
Embed Views
16

Actions

Likes
0
Downloads
29
Comments
0

1 Embed 16

http://www.slideshare.net 16

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Durante el protocolo SSL, el cliente y el servidor intercambian una serie de mensajes para negociar las mejoras de seguridad. Este protocolo sigue las siguientes fases (de manera muy resumida): La fase Hola , usada para ponerse de acuerdo sobre el conjunto de algoritmos para mantener la intimidad y para la autenticación. El navegador le informa al servidor de los algoritmos que posee disponibles. Normalmente se utilizarán los más fuertes que se puedan acordar entre las dos partes. En función de las posibilidades criptográficas del navegador, el servidor elegirá un conjunto u otro de algoritmos con una cierta longitud de claves. La fase de autenticación , en la que el servidor envía al navegador su certificado x.509v3 que contiene su clave pública y solicita a su vez al cliente su certificado X.509v3 (sólo si la aplicación exige la autenticación de cliente). La fase de creación de clave de sesión , en la que el cliente envía al servidor una clave maestra a partir de la cual se generará la clave de sesión para cifrar los datos intercambiados posteriormente haciendo uso del algoritmo de cifrado simétrico acordado en la fase 1. El navegador envía cifrada esta clave maestra usando la clave pública del servidor que extrajo de su certificado en la fase 2. Posteriormente, ambos generarán idénticas claves de sesión a partir de la clave maestra generada por el navegador. Por último, la fase Fin , en la que se verifica mutuamente la autenticidad de las partes implicadas y que el canal seguro ha sido correctamente establecido. Una vez finalizada esta fase, ya se puede comenzar la sesión segura. De ahí en adelante, durante la sesión segura abierta, SSL proporciona un canal de comunicaciones seguro entre los servidores Web y los clientes (los navegadores) a través del cual se intercambiará cifrada la información relevante, como el URL y los contenidos del documento solicitado, los contenidos de cualquier formulario enviado desde el navegador, las cookies enviadas desde el navegador al servidor y viceversa y los contenidos de las cabeceras HTTP.

Seguridad   j1v2 Seguridad j1v2 Presentation Transcript

  • Configuración de SSL en Servidores Web JORNADA 1 cid deza, moisés [email_address]
  • 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.
  • 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.
  • La Web  Cómo se estructura Servidor de nombres (DNS) Servidor Web Cliente Web (Internet Explorer, Firefox, Opera, Chrome, etc.) Internet Abrir dirección “http://www.facebook.com/login.php” Envíame el documento login.php
  • 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.
  • 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)
  • Servidores Web
    • Nivel de implantación de servidores a enero 2010
    Fuente: Netcraft 0,46 1 lighttpd lighttpd 7 15 GWS Google 8 16 nginx Sysoev 24 50 IIS Microsoft 54 111 Apache Apache % Sitios Web alojados Producto Vendedor
  • 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?
  • 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.
  • 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.
  • 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
  • SSL - Funcionamiento
    • Clave de sesión: se utiliza para cifrar los datos de la comunicación. Diferente para cada transacción.
    • Pasos:
      • Solicitud del cliente: el cliente solicita una URL con soporte para SSL. A continuación se acuerda la conexión SSL (handshake).
      • Se establece la conexión SSL.
      • Verificación del servidor desde el cliente y acuerdo del algoritmo de criptografía.
      • Respuesta del servidor, con envío de su identificador.
      • El cliente verifica la validez del identificador digital del servidor, desencriptándolo y utilizando su clave pública.
      • 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.
      • Ambos conocen sus claves, e intercambian información utilizando la clave secreta y el algoritmo de cifrado acordado.
  • 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 del servidor Web Mensaje Servidor Web seguro HTTPS Explorador seguro 1 2 3 4
  • SSL - Funcionamiento Durante este proceso, el explorador web verifica que: • el nombre del dominio del certificado coincida con el dominio desde el que se lo envió • el certificado no esté vencido • el explorador de la Web considera que la CA que firmó el certificado es fiable
  • HTTP s
    • 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
  • HTTP s  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
  • Configurar SSL en IIS  Introducció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
  • Configurar SSL en IIS  Qué 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
  • Configurar SSL en IIS  Actividad 2
    • Pasos a seguir
      • A.- 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_seguridadactividad 2 _ssl” para albergar todos los ficheros que se irán generando.
  • Configurar SSL en IIS  Actividad 2
    • A.- Creación de una solicitud de certificado
      • Sitio Web  Propiedades
      • Seguridad de Directorios  Certificado de Servidor
      • Crear un nuevo certificado
      • Preparar la solicitud pero no enviarlo
      • Indicar los siguientes datos:
        • Nombre : Certificado de Servidor de Prueba
        • Longitud : 2048bits
      • Indicar los siguientes datos:
        • Organización : academia
        • Departamento : informatica
      • Indicar los siguientes datos:
        • 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 .
      • Completar el resto de datos.
      • 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).
  • Configurar SSL en IIS  Actividad 2
    • B.- Creación de una CA y emisión del certificado
      • 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
      • Crear el certificado digital de la CA:
        • openssl req -new -x509 -key cakey.pem -out cacert.pem -days 365
      • Crear el certificado para el servidor Web
      • openssl 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_seguridadact3cakey.pem)
  • Configurar SSL en IIS  Actividad 2
    • C.- Configurar IIS con SSL
      • Abrir la consola de administración del servidor y acceder a a la ventana de certificados.
      • Tras pulsar siguiente, el asistente nos permite procesar la petición pendiente.
      • Indicar la ruta en la que se ha generado el certificado para el web.
      • Comprobar que los datos son correctos y finalizar.
      • 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?
  • Configurar SSL en IIS  Actividad 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?
  • Configurar SSL en Apache  Introducció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)
  • Configurar SSL en Apache  Introducción Apache
    • Su archivo de configuración principal es: /conf/httpd.conf .
    • Las páginas web se suelen crear /htdocs .
  • Configurar SSL en Apache  Qué 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
  • Configurar SSL en Apache  Actividad 3
    • Pasos a seguir
      • A.- 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_seguridadactividad 3 _ssl” para albergar todos los ficheros que se irán generando.
  • Configurar SSL en Apache  Actividad 3
    • A.- Creación de una solicitud de certificado
      • Generación de la clave privada del certificado
      • openssl genrsa -des3 -out apachekey.pem 2048
      • 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.
  • Configurar SSL en Apache  Actividad 3
    • B.- Creación de una CA y emisión del certificado
      • 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
      • Crear el certificado digital de la CA:
        • openssl req -new -x509 -key cakey.pem -out cacert.pem -days 365
      • 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.
  • Configurar SSL en Apache  Actividad 3
    • C.- Configurar Apache con SSL
      • Copiar el certificado digital y la clave privada a XAMPPApacheconf
      • Modificar el fichero ubicado en XAMMPApacheconfextrahttpd-ssl.conf del siguiente modo:
          • Listen 4430
          • ...
          • NameVirtualHost *: 4430
          • <VirtualHost *: 4430 >
          • ServerAdmin webmaster@localhost
          • DocumentRoot /xampp/htdocs
          • ServerName localhost
          • ...
          • SSLCertificateFile conf/apache.crt
          • SSLCertificateKeyFile c onf/apachekey.pem
          • ...
      • 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?
  • 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!!
  • 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
  • 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.
  • 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
  • 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.
  • 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.
  • 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.
  • 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.
  • Autenticación con Cert. Dig. Cliente en IIS  Actividad 4
    • Pasos a seguir:
      • A.- Creación de una solicitud de certificado de usuario
      • B.- 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 cliente
      • D.- Configurar el navegador web con nuestro nuevo certificado de usuario
  • Autenticación con Cert. Dig. Cliente en IIS  Actividad 4
    • A.- Creación de una solicitud de certificado de usuario
      • Generar la clave privada del certicado:
        • openssl genrsa -des3 -out usuario1key.pem 2048
      • Crear la solicitud de certificado:
        • openssl req -new -key usuario1key.pem -out certreq_usuario1.txt
  • Autenticación con Cert. Dig. Cliente en IIS  Actividad 4
    • B.- Emisión del certificado de usuario
      • 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
      • 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
  • Autenticación con Cert. Dig. Cliente en IIS  Actividad 4
    • C.- Configurar IIS para requerir certificados cliente
  • Autenticación con Cert. Dig. Cliente en IIS  Actividad 4
    • D.- Configurar el navegador web con nuestro nuevo certificado de usuario
      • Importar el certificado de usuario en el navegador.
    ¿Funciona?
  • 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
  • Autenticación con Cert. Dig. Cliente en Apache  Actividad 5
    • Pasos a seguir:
      • A.- Creación de una solicitud de certificado de usuario
      • B.- 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 cliente
      • D.- Configurar el navegador web con nuestro nuevo certificado de usuario
  • Autenticación con Cert. Dig. Cliente en Apache  Actividad
    • A.- Creación de una solicitud de certificado de usuario
      • Generar la clave privada del certicado :
        • openssl genrsa -des3 -out usuario1key.pem 2048
      • Crear la solicitud de certificado :
        • openssl req -new -key usuario1key.pem -out certreq_usuario1.txt
  • Autenticación con Cert. Dig. Cliente en Apache  Actividad
    • B.- Emisión del certificado de usuario
      • 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
      • 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
  • Autenticación con Cert. Dig. Cliente en Apache  Actividad
    • C.- Configurar Apache para requerir certificados cliente
      • Copiar el certificado de la CA al directorio /XAMPP/Apache/conf
      • Añadir/Modificar las siguientes líneas al servidor virtual:
        • SSLCACertificateFile conf/cacert.pem
        • SSLVerifyClient require
  • Autenticación con Cert. Dig. Cliente en Apache  Actividad
    • D.- Configurar el navegador web con nuestro nuevo certificado de usuario
      • Importar el certificado de usuario en el navegador.
    ¿Funciona?