¿Por qué es tan importante navegar bajo una conexión segura?

Aunque la navegación con SSL (https://en.wikipedia.org/wiki/Transport_Layer_Security) lleva ya mucho tiempo entre nosotros da la sensación que últimamente está más de moda que nunca.
La noticia más impactante ha sido que Google penalizará en la búsqueda a los sitios que no tengan un certificado de seguridad. Así mismo, en el navegador, toda url que tenga un simple http será marcada como un “Sitio no seguro”.
Si intentas enviar un formulario con una contraseña en una página sin cifrado, ten en cuenta que alguien podría ver esa clave. Pero ¿Quién? Esa persona tiene un nombre y en inglés es “The man in the middle”.
Veamos un ejemplo para ver como funciona esto.
Vamos a usar nuestros propios certificados “self signed” para crear un servidor web https. Lo podemos hacer con este comando:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/pr

Lo primero que vamos a hacer es configurar un servidor web, en este ejemplo vamos a usar Nginx (http://nginx.org/), con una conexión insegura por el puerto 80 y otra segura por el443.
Ejemplo de configuración:

server {
listen 80;
server_name 192.168.1.118;
root html;
index index.html;
}
server {
listen 443;
server_name 192.168.1.118;
ssl on;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
root html;
index index.html;
}

Dentro de la carpeta root de Nginx cargamos un archivo básico html con un formulario.

<form action=”404″ method=”POST”>
<div class=”container”>

</form>

Al entrar con Firefox en la página sin cifrar nos aparece esta pantalla ¡Para qué despues digamos que no nos avisan!
mozilla_user_pass

Ahora para ser el “Hombre en el medio” vamos a usar un programa “snniffer”. Hay muchas opciones, pero para este ejemplo elegimos ettercap (https://ettercap.github.io/ettercap/).
Lo podemos instalar fácilmente en un sistema Linux con Debian/Ubuntu:

sudo apt-get install ettercap

Una vez instalado lo ejecutamos:

ettercap -C

En la pantalla inicial elegimos la opción “Sniff > Unified sniffing”:
ettercap_00_first_step

Elegiremos la red:
ettercap_01_choose_network
Para poder ver los equipos que están en la red hacemos un escaneo con “Hosts > Scan for hosts”. Y al terminar iremos a “Hosts > Hosts List”. Aquí se nos mostrará los equipos de la red:
ettercap_02_hosts_list
Ahora es el momento de elegir que comunicación queremos interceptar. En este caso particular queremos ver lo que se transmite entre el ordenador 192.168.0.10 y el servidor web 192.168.0.22, por lo tanto desde el menú “Targets > Select targets” y añadiré las IPs anteriores.
ettercap_03_select_targets

Si elegimos la opción “View >> Connections”, en directo, se muestran todas las conexiones.
Vamos a entrar ahora en nuestro servidor sin SSL y enviar un usuario y una contraseña: por ejemplo usuario “linus” y contraseña “12345”.

mozilla_user_pass

En la pantalla de “Live Conecctions” se muestra esta última conexión. La seleccionamos y le damos a intro:
ettercap_04_live_connections
Y esta es la información que obtenemos.
ettercap_05_no_ssl
Ampliemos la imagen para verlo mejor:
ettercap_06_no_ssl_zoom

Efectivamente al no enviarse los datos cifrados el “Hombre en el medio” puede ver nuestro usuario y contraseña. Imaginemos esto mismo en una página donde enviamos datos bancarios como un número de tarjeta.
Ahora hagamos lo mismo pero bajo SSL.
ettercap_07_live_connections_2

Y aquí el resultado.
ettercap_08_ssl_connection_data_ssl

En este caso la información se transmite cifrada por lo que no podemos ver el usuario ni la contraseña.
Conclusión: si no queremos que un tercero pueda ver los datos que envíamos a una web, esta debería estar cifrada. Si quieres publicar tu e-commerce o cualquier otra web, y necesitas un certificado contacta con Amodo (http://www.amodosoluciones.com/) y seguro que te vamos a ayudar.

Autor/a: Moncho Pena.