Académique Documents
Professionnel Documents
Culture Documents
16/11/2012
NDICE
1.-Conexin por SSL________________________________________3
1.1.-La necesidad de la seguridad__________________________________3 1.2.-Qu es SSL?_______________________________________________3 1.3.-Qu es el estndar X509?____________________________________ 3 1.4.-Cmo funciona el estndar x509?_____________________________ 3 1.5.-Cmo funciona el protocolo SSL?_____________________________ 4 1.6.-Ventajas y desventajas del uso de SSL.__________________________6 1.7.-SSL en MySQL_____________________________________________ 6
3.- Webgrafia______________________________________________ 16
Antes de que se establezca SSL, se debe hacer una solicitud. Tpicamente esto implica un cliente haciendo una solicitud de un URL a un servidor que soporte SSL. SSL acepta solicitudes por un puerto diferente al utilizado normalmente para ese servicio. Una vez se ha hecho la solicitud, el cliente y el servidor empiezan a negociar la conexin SSL, es decir, hacen el SSL Handshake. SSL Handshake: Durante el hanshake se cumplen varios propsitos. Se hace autenticacin del servidor y opcionalmente del cliente, se determina que algoritmos de criptografa sern utilizados y se genera una llave secreta para ser utilizada durante el intercambio de mensajes subsiguientes durante la comunicacin SSL. Una conexin SSL siempre es iniciada por el cliente. Al principio de una sesin SSL, se realiza un protocolo de enlace SSL. Este protocolo de enlace produce los parmetros criptogrficos de la sesin. En este ejemplo se supone que se est estableciendo la conexin SSL entre un navegador web y un servidor web. Protocolo de enlace SSL con autenticacin de servidor 1. El cliente enva el mensaje "hello" que lista las posibilidades criptogrficas del cliente (clasificadas por orden de preferencia del cliente), como la versin de SSL, los grupos de programas de cifrado soportados por el cliente y los mtodos de compresin de datos soportados por el cliente. El mensaje tambin contiene un nmero aleatorio de 28 bytes. 2. El servidor responde con el mensaje "hello" del servidor que contiene el mtodo criptogrfico (conjunto de programas de cifrado) y el mtodo de compresin de datos seleccionados por el servidor, el ID de sesin y otro nmero aleatorio. Nota: El cliente y el servidor deben dar soporte como mnimo a un conjunto de cifrado
comn; de lo contrario, el protocolo de enlace dar error. Generalmente, el servidor elige el conjunto de programas de cifrado comn ms potente. 3. El servidor enva su certificado digital. (El servidor utiliza certificados digitales X.509 V3 con SSL.) Si el servidor utiliza SSL V3 y si la aplicacin de servidor (por ejemplo, el servidor web) requiere un certificado digital para la autenticacin de cliente, el servidor enva el mensaje "digital certificate request". En el mensaje "digital certificate request", el servidor enva una lista de los tipos de certificados digitales soportados y los nombres distinguidos de autoridades de certificacin aceptables. 4. El servidor enva el mensaje "hello done" de servidor y aguarda una respuesta del cliente. 5. Al recibir el mensaje "hello done" del servidor, el cliente (el navegador web) verifica la validez del certificado digital del servidor y comprueba que los parmetros del mensaje "hello" del servidor son aceptables. Si el servidor ha solicitado un certificado digital del cliente, el cliente enva un certificado digital o, si no hay ningn certificado digital adecuado disponible, el cliente enva la alerta "no digital certificate". Esta alerta slo es un aviso, pero la aplicacin de servidor puede hacer que la sesin sea anmala si la autenticacin del cliente es obligatoria. 6. El cliente enva el mensaje "client key exchange". Este mensaje contiene el secreto pre-maestro, un nmero aleatorio de 46 bytes utilizado en la generacin de las claves de cifrado simtrico y las claves de cdigo de autenticacin de mensajes (MAC), cifradas con la clave pblica del servidor. Si el cliente ha enviado un certificado digital al servidor, el cliente enva un mensaje "digital certificate verify" firmado con la clave privada del cliente. Al verificar la firma de este mensaje, el servidor puede verificar explcitamente la propiedad del certificado digital del cliente. -A tener en cuenta: No es necesario un proceso adicional para verificar el certificado digital del servidor. Si el servidor no tiene la clave privada que pertenece al certificado digital, no podr descifrar el secreto pre-maestro y crear las claves correctas para el algoritmo de cifrado simtrico y el protocolo de enlace dar error. 7. El cliente utiliza una serie de operaciones criptogrficas para convertir el secreto premaestro en un secreto maestro, del que se deriva todo el material de clave necesario para el cifrado y la autenticacin de mensajes. A continuacin, el cliente enva el mensaje "change cipher spec" para que el servidor conmute al conjunto de programas de cifrado recin negociado. El siguiente mensaje enviado por el cliente (mensaje "finished") es el primer mensaje cifrado con este mtodo y estas claves de cifrado. 8. El servidor responde con mensajes propios "change cipher spec" y "finished". 9. El protocolo de enlace SSL finaliza y los datos de aplicacin cifrados se pueden enviar.
1.6.-Ventajas y desventajas del uso de SSL. Ventajas -Una de las ventajas del SSL es que es independiente del protocolo de aplicacin, ya que es posible ubicarlo por encima del mismo en forma transparente. -SSL encripta los datos por toda la ruta desde el cliente al servidor de destino. Desventajas -Incrementa notablemente la carga del Procesador tanto al encriptar como AL desencriptar, en relacin a una comunicacin no encriptada. -Cada conexin necesita una configuracin diferente. -Los certificados pueden expirar y son complicados de obtener para el usuario final. 1.7.-SSL en MySQL A partir de la versin 4.0 de MySQL, existe soporte nativo de SSL. Esto supone una alternativa viable al canal seguro con SSH, o usar tunneling para establecer una conexin encriptada entre un servidor y un cliente MySQL. El soporte para SSL fue agregado al sistema de privilegios estndar de MySQL, por lo que hay algunas opciones nuevas en el comando GRANT. Para obligar a un usuario a usar SSL para conectarse al servidor, simplemente se tiene que agregar la opcin REQUIRE SSL al comando GRANT que se usa normalmente. Por ejemplo: GRANT ALL PRIVILEGES ON *.* TO manuel@"%" IDENTIFIED BY '22root' REQUIRE SSL; El comando GRANT de arriba requiere que el usuario "manuel" con la contrasea "22root" tenga que conectarse va SSL. Si "manuel" intenta establecer una conexin sin encriptar al servidor, MySQL rechazar la conexin. MySQL permite ser ms riguroso. En el ejemplo anterior se permite que cualquiera que conozca la contrasea de "manuel" se conecte al servidor y pueda manipular los datos. El nico requisito es que la conexin se establezca a travs una conexin SSL. Si realmente la seguridad es un asunto sumamente importante, se puede forzar a que "manuel" tenga un certificado X509 para probar su identidad. GRANT ALL PRIVILEGES ON *.* TO manuel@"%" IDENTIFIED BY 'holahola' REQUIRE X509 Aunque es relativamente fcil generar un certificado con las herramientas que vienen con OpenSSL, es ms recomendable usar un certificado firmado por alguna organismo
o autoridad oficial. La sintaxis REQUIRE ISSUER permite hacer esto. Tambin se puede usar REQUIRE CIPHER para poner una lista de ciphers que sern permitidos.
El sniffer de la imagen representa a cualquier hacker o agente externo que quiera acceder a la informacin de la comunicacin.
2.3.-Caractersticas a grandes rasgos: Los datos que circulan entre el cliente y el servidor estn cifrados y esto garantiza su confidencialidad (nadie ms que el servidor y el cliente pueden leer la informacin que se enva a travs de la red). Como resultado, no es posible controlar la red con un rastreador. El cliente y el servidor se autentifican uno a otro para asegurarse que las dos mquinas que se comunican son, de hecho, aquellas que las partes creen que son. El hacker ya no puede adoptar la identidad del cliente o de su servidor (falsificacin). Existen 2 versiones de SSH, la versin 1 de SSH hace uso de muchos algoritmos de cifrado patentados (sin embargo, algunas de estas patentes han expirado) y es vulnerable a un agujero de seguridad que potencialmente permite a un intruso insertar datos en la corriente de comunicacin. La suite OpenSSH bajo Red Hat Enterprise Linux utiliza por defecto la versin 2 de SSH, la cual tiene un algoritmo de intercambio de llaves mejorado que no es vulnerable al agujero de seguridad de la versin 1. Sin embargo, la suite OpenSSH tambin soporta las conexiones de la versin 1. A tener cuenta: -Utiliza el puerto 22 (TCP y UDP) el protocolo SSH y sigue el modelo cliente-servidor -Permite la autenticacin de los usuarios mediante contrasea o un sistema de claves -Permite su integracin con otros sistemas de autenticacin como kerberos, PGP o PAM -Esta implementado para la mayora de sistemas operativos y plataformas 2.4.-Qu es un tnel SSH? Es una implementacin de SSH en la que se encapsula otra conexin que permita el manejo de otros servicios aparte de los destinados a comunicacin y transferencia de archivos como puedan ser: Conexiones a bases de datos MySQL o Conexin a servidores Web.
Puerto 3306
Puerto 5000 8
2.5.-Tneles SSH en MySQL Podemos usar SSH para generar tneles seguros. Estos tneles ssh establecen una conexin cifrada entre un puerto de nuestra mquina local y otro puerto accesible desde la mquina remota, generalmente un puerto local de la mquina remota, pero no necesariamente. Si queremos conectar con un servidor MySQL de una maquina remota servidor sin usar ssh conectaremos con nuestro cliente de base de datos al puerto 3306 del servidor. El problema es que toda la comunicacin es insegura y viaja en claro. Si servidor dispone de ssh podemos generar un tnel ssh para proteger la comunicacin. Lo que hacemos es conectar un puerto de nuestra mquina local, por ejemplo 5000 con el puerto 3306 de servidor. Despus conectamos nuestro cliente de base de datos al puerto local 5000 y ssh se encargar de comunicar con servidor de manera segura.
2.6.-Ventajas e inconvenientes de SSH Ventajas: -Despus de la primera conexin, el cliente sabe que se conectara al mismo servidor en futuras conexiones -El cliente transmite al servidor la informacin necesaria para su autenticacin en formato cifrado -Todos los datos que se envan y reciben durante la conexin se transfieren cifrados -El cliente puede ejecutar aplicaciones grficas desde el shell de forma segura -Evita la interpretacin de la comunicacin entre dos sistemas -Evita La suplantacion de un host o enmascaramiento Inconvenientes: -El principal inconveniente de SSH es que hay que tener acceso a un servidor que pueda ejecutar SSH en su extremo de la conexin necesariamente.
2.7.-Levantando nuestro propio Tnel SSH en Windows 7 para Mysql *Consideraciones previas* I.- Tanto IP pblica como privada deben de ser fijas. Si no es as, no podremos hacer que funcione correctamente. II.- En el cliente, podemos efectuar la conexin por MySQL query browser o MySQL Command Line del Server. En el caso segundo, al haber instalado el servicio MySQL es necesario pararlo por completo para que funcione en remoto exclusivamente y no en local. III.- Crearemos un usuario en el servidor desde MySQL con la sentencia GRANT ALL PRIVILEGES ON *.* TO nombre@% Identified by `password; para asegurarnos de que tiene todos los privilegios. En las siguiente pginas se detalla paso a paso el proceso de poner en marcha un servidor MySQL tunelado con SSH.
10
2.- Crearemos los usuarios pertinentes asignndoles contrasea y permiso de shell y Tunnel
11
4.- Introduciremos la direccin pblica de nuestro ordenador (Debe ser fija, o no funcionar). As como el puerto de conexin, el 5000.
5.- Por ltimo, seleccionamos en el men de la izquierda SSH y Tunnels en su interior. All escribiremos el puerto que redireccionar el tnel, el 3306 y la IP privada del servidor.
12
Hecho esto, establecemos la conexin: Con ello, tendremos operativa nuestra conexin cifrada SSH, pero no el tunel para MySQL, as que minimizamos la ventana.
6.-Abrimos un cmd en nuestro equipo y nos vamos al directorio bin de MySQL y nos conectamos con la siguiente sentencia: MySQL u nombreusuario h 127.0.0.1 p test
13
A continuacin muestro como podemos hacer exactamente lo mismo con Mysql query browser (Siendo tambin aplicable a MySQL Workbench)
14
Se introduce todo exactamente igual que cuando nos conectamos en local, pero la direccin de host, ser redirigida por el tnel.
15
3.- WEBGRAFA
-Oracle Corporation. (2012). Usar conexiones seguras. Recuperado 15 de Noviembre de 2012, desde http://dev.mysql.com/doc/refman/5.0/es/secure-connections.html -Hostsuar.com. (2011). Conexin remota y segura al servidor MySQL. Recuperado 15 de Noviembre de 2012 desde: http://docs.hostsuar.com/articulo/conexion-remota-ysegura-al-servidor-mysql -CdigoMaestro.com. (2008). Conexin cifrada usando SSH y OpenSSH. Recuperado 15 de Noviembre de 2012 desde: http://www.codigomaestro.com/general/conexioncifrada-usando-ssh-y-openssh-i/ -Waterlovinghead.com. (2008). Enable SSL for Mysql. Recuperado 15 de Noviembre de 2012 desde: http://www.waterlovinghead.com/MysqlSSL -SV Comunity El Salvador (2005). Instalar un Servidor con SSL. Recuperado 15 de Noviembre de 2012 desde: http://www.svcommunity.org/forum/tutoriales/instalar-unservidor-con-ssl/ -Jorge Ivn Meza Martnez (2010). Crear un tunel SSH para la conexin a un servidor MySQL detrs de un firewall con Linux Debian 5. Recuperado 15 de Noviembre de 2012 desde: http://blog.jorgeivanmeza.com/2010/03/crear-un-tunel-ssh-para-laconexion-a-un-servidor-mysql-detras-de-un-firewall-con-linux-debian-5/ -Sitepoint (2009). How to Administer a Remote MySQL Database using SSH Tunneling. Recuperado 15 de Noviembre de 2012 desde: http://www.sitepoint.com/how-toadminister-a-remote-mysql-database-using-ssh-tunneling/ -How to Geek (2008). Access Your MySQL Server Remotely Over SSH. Recuperado 15 de Noviembre de 2012 desde: http://www.howtogeek.com/howto/ubuntu/access-yourmysql-server-remotely-over-ssh/ -Verisign (2012). Centro de informacin sobre SSL y credibilidad en lnea. Recuperado 15 de Noviembre de 2012 desde: http://www.verisign.es/ssl/ssl-information-center/ -Mundo Informtico (2009). Centro OpenSSL La navaja suiza del cifrado.Recuperado 15 de Noviembre de 2012 desde:http://infow.wordpress.com/2009/01/11/openssl-lanavaja-suiza-del-cifrado/ -Red Hat Enterprise (2009). Captulo 20: Protocolo SSH. .Recuperado 15 de Noviembre de 2012 desde: http://www.gb.nrao.edu/pubcomputing/redhatELWS4/RHDOCS/rhel-rg-es-4/ch-ssh.html
16