Upload
moises-cid-deza
View
1.771
Download
0
Embed Size (px)
DESCRIPTION
Configurar apache e iis sobre ssl
Citation preview
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.)
InternetAbrir dirección “http://www.facebook.com/login.php”
Envíame el documentologin.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
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
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:
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.
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
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
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
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
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
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
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.
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).
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)
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?
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?
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)
Configurar SSL en ApacheIntroducción Apache Su archivo de configuración principal es:
/conf/httpd.conf. Las páginas web se suelen crear /htdocs.
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
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.
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.
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.
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?
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 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
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
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
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
1. 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 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
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
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
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
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?