ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ......impaciencia por saber si me quedaría....
Transcript of ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ......impaciencia por saber si me quedaría....
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELECTRICA
UNIDADAD CULHUACAN
TESINA
Seminario de Titulación:
“Las tecnologías aplicadas en redes de computadoras”
DES/ ESME-CU 5092005/11/2012
PROPUESTA DE IMPLEMENTACION DE UNA VPN
Que como prueba escrita de su examen profesional
para obtener el título de:
Ingeniero en comunicaciones y electrónica
Presentan:
México D.F a 10 de Noviembre de 2012.
ANDRES MONTES DE LOS SANTOS
JOCELYN CAROLINA CORONA CARRION
JORGE GONZÁLEZ BELTRÁN
I
II
Agradecimientos
A mi madre y amiga, una gran mujer que nunca ha estado detrás de mí, si no a mi lado
apoyándome en todo momento, gracias mama por tus consejos, por tu motivación
constante, tus valores y tu incomparable amor. A ti mami te dedico este trabajo de todo
corazón, porque no tengo palabras para agradecerte que eres la mejor mama del mundo.
A mi padre y amigo por creer en mí, por su apoyo incondicional, por sus sabios consejos,
por tu esfuerzo día a día para darme una de las mejores herencias. ¡Gracias!
A mi hermana por su apoyo y cariño incondicional. ¡Te Quiero hermana!
Amor gracias por tu paciencia, por tu apoyo, tus detalles, por todas las desveladas y
palabras de ánimo. ¡Te amo!
Debo agradecer de manera especial y sincera a la Maestra Diana por todo su apoyo y
consejos durante la carrera y por la dirección de esta tesis.
A mis compañeros Jorge y Andrés. Gracias por dejarme entrar en sus vidas
Finalmente, agradezco a toda mi familia y amigos, ya que de cada uno de ellos directa o
indirectamente he aprendido valiosas lecciones que forman parte de este logro.
¡Gracias a todos!
Ing. Jocelyn C. Corona Carrión
III
A mis Padres, Andrés y Reyna, les gradezco su apoyo, su guía y su confianza en la
realización de mi carrera profesional. Soy afortunado por contar siempre con su amor y
comprensión. En todo momento los llevo conmigo, su esfuerzo no ha sido en vano, este
trabajo es suyo.
A mis Hermanas gracias por la compañía y el apoyo que me brindaron. Sé que
siempre cuento con ustedes en todo momento. Por sacrificar lujos que fueron para poder
desarrollarme como profesionista.
A mis compañeros de este proyecto, Jocelyn y Jorge, les agradezco por dejarme
trabajar con ustedes, aun que juntos pasamos momentos de tención y de alegría siempre
nos mantuvimos unidos en la realización de este trabajo.
Ing. Andrés Montes de los Santos
IV
Recuerdo cuando tenía 14 años, estaba a punto de terminar la secundaria y todos
entusiasmados por elegir el siguiente camino. Al llenar las hojas para elegir mi siguiente
escuela, por mi inseguridad y tal vez dudar de mi propia capacidad, elegí como primera
opción el CETIS 1. Mi idea era terminar una carrera técnica y empezar a trabajar; quitarles
el peso de seguir manteniéndome a mis padres. Al estar a punto de entregar mis papeles,
aun recuerdo que había algo que me hacia estar inseguro en ese momento, dudaba de mis
propias decisiones. Fue ahí donde me arrepentí y pensé en las palabras de mi profesor
Eduardo, “si en verdad te gustan las matemáticas, deberías aspirar a algo mas, como el
Politécnico. Tu eres capaz de eso y más…”. Gracias a esto, tome mis papeles y en el
registro al examen del CENEVAL, cambie mi primera opción por el Politécnico. Fueron
varios días de angustia, pensando que sería una mala decisión, y al mismo tiempo
impaciencia por saber si me quedaría. Afortunadamente entre a la VOCA 7. Desde
entonces mi camino estuvo lleno de éxito, y claro, sus debidos tropiezos. Las cosas no son
fáciles en la escalera de la vida. Me di cuenta que a base de sacrificios y de una decisión
firme se puede cumplir con tus objetivos. Le agradezco a la institución que confió en mí y
por darme la oportunidad de demostrarme a mí mismo mis capacidades, mis fortalezas, mis
habilidades y mis debilidades; a sus docentes que marcaron mi carácter y la forma que
concibo el mundo hoy en día, gracias POLITECNICO. Sin duda alguna el ser una persona
de éxito, es un reto que aun me persigue, y es por eso que hoy decidí concluir este ciclo y
poder lograr la titulación. Recuerdo todas esas peleas, gritos y miradas de desconfianza, que
me hicieron creer que realmente no podría concluir la carrera. Mi indecisión, apatía y
conformismo casi me alientan la escuela superior. Gracias a dos personas que nunca se han
alejado de mí, es que este sueño se ha hecho realidad. Esas personas que me han apoyado
en las buenas y en las malas y me han sabido dar ese pequeño empujón para continuar en el
camino. No me alcanzan las palabras para expresar el agradecimiento que siento y la
confianza que les tengo, pero hoy que este sueño llego a su manifiesto, debo abrir los
brazos y acogerlos fuertemente, sin antes decirles: “muchas gracias por todo, María y
Feliciano”. Gracias por aguantar a este hombre terco y testarudo. Siempre están conmigo en
cuerpo y alma. Gracias por ser mis padres, mis amigos y confidentes. Los amo de todo
corazón.
Ing. Jorge González Beltrán.
V
Índice
Agradecimientos II
Índice de Imágenes VIII
Índice de Tablas IX
Introducción 1
Capítulo I. Introduccion a las Redes 5
1.1 Antecedentes 6
1.2 Historia de las redes 8
1.2.1 Organizaciones de estandarización 8
1.2.2 Red de Área Local. LAN 10
1.2.3 Redes de Área Amplia. WAN 10
1.3 Modelo OSI 10
1.4 Historia del internet 12
1.5 Implementaciones 15
Capítulo II. Redes Privadas Virtuales 16
2.1 Definición VPN 17
2.2 Ventajas de una VPN 18
2.3 Función de una VPN 19
2.4 Requerimiento básico de una VPN 20
2.5 Aplicaciones 21
2.6 Tunneling 21
2.7 Tipos de VPN’s 22
2.7.1 Sistemas basados en hardware 22
2.7.2 Sistemas basados en Firewall 23
2.7.3 Sistemas basados en Software 23
2.8 Arquitecturas y tipos más comunes de VPN 24
2.8.1 VPN de acceso remoto 24
2.8.2 VPN Interna 25
2.8.3 VPN sitio a sitio 26
VI
2.8.3.1 Tipo Intranet 27
2.8.3.2 Tipo Extranet 27
2.9 Tecnologías para armar VPN’s 28
2.9.1 IPSEC 29
2.9.2 PPTP 29
2.10 Diagramas 30
2.10.1 Diagrama de cliente a servidor. 30
2.10.2 De cliente a red interna LAN 31
2.10.3 De red interna a red interna (LAN a LAN). 32
Capítulo III. Implementación 33
3.1 Construcción de componentes 34
3.1.1 Sistema Operativo Microsoft Windows 34
3.1.2 Sistema Operativo Mac OS X 36
3.1.3 Sistema Operativo LINUX 37
3.1.4 Comparación de sistemas operativos 38
3.1.5. ¿Por qué utilizar Linux? 39
3.2 Selección de requerimientos para el sistema Linux 40
3.2.1 Utilerías del sistema Ubuntu 41
3.2.2 Configuración inicial de Ubuntu 42
3.2.3 Instalación de Ubuntu 43
3.3 Configuración de la VPN 45
3.3.1 Requisitos para la implementación de una VPN 46
3.3.2 Comandos básicos de Linux 46
3.3.3 Configuración de dirección IP fija 48
3.3.4 Instalación y configuración de OpenVPN para Ubuntu 51
3.3.4.1 Instalación de OpenVPN 51
3.3.4.2 Configuración de openvpn.conf 52
3.3.4.3 Inicio del Servidor VPN 56
3.3.4.4 Crear los certificados y llaves de cada usuario 58
VII
3.3.4.5 Inicio del Cliente VPN 62
3.4 Ensamble de OpenVPN 64
3.4.1 Conexión LAN Cliente-Cliente 64
3.4.1.1 Generación de clave de encriptación Cliente-Cliente 65
3.4.2 Conexión WAN RoadWarrior (Servidor-Cliente) 67
3.4.2.1 Generación de llaves Conexión WAN RoadWarrior 67
3.4.2.2 Generación del certificado y de la clave de encriptación para el servidor 69
3.4.2.3 Generación de parámetros de Diffie-Hellman 72
3.4.2.4 Archivos necesarios para iniciar la VPN 73
Capítulo IV. Open VPN 75
4.1 Licencia GPL 76
4.2 Cifrado Pen SSL/TLS 77
4.3 ¿Por qué Open VPN? 80
4.4 Características de Open VPN 80
4.5 Ventajas de Open VPN 81
4.5.1 Comparación entre Open VPN e IPSec VPN 82
4.6 Seguridad en Open VPN 83
4.6.1 Encriptación simétrica y claves pre-compartidas 83
4.6.2 Cifrado asimétrico con SSL/TLS 84
4.7 Cómo implementar una política de seguridad 85
4.7.1 Las causas de inseguridad 86
Conclusiones 87
Bibliografía 89
Glosario 90
Anexos 96
A. Otros Comandos para Linux 96
B. NAT 104
C. Controladores virtuales TUN/TAP y VTUN. 105
D. Diffie Hellman. 107
VIII
E. SSL/TLS 109
E.1. Introducción 109
E.2 Protocolos. 109
E.3 Descripción 110
E.3.1 Negociación 111
E.3.2 Autenticación y claves 111
E.3.3 Transmisión segura 111
E.4. Objetivo del protocolo TLS. 111
E.5 Funcionamiento del protocolo TLS 112
E.6. Ejemplos 114
E.6.1 Aplicaciones 114
E.6.2 Estándares 114
E.6.3 TLS 1.1. 115
Índice de Imágenes
Figura 1.1. Capas del Modelo OSI 11
Figura 1.2. Modelo OSI 12
Figura 1.3 Internet 14
Figura 1.4 Características Fundamentales 15
Figura 2.1. Diagrama de una VPN en una organización 17
Figura 2.2. Diagrama de VPN por acceso remoto 24
Figura 2.3. Arquitectura VPN Interna 26
Figura 2.4. Diagrama Intranet VPN 27
Figura 2.5. Diagrama Extranet VPN 28
Figura 2.6. Diagrama de cliente / servidor 31
Figura.2.7. Diagrama de cliente a red interna 31
Figura 2.8. De red interna a red interna (LAN a LAN) 32
Figura 3.1. Logotipo característico de sistemas operativos Microsoft Windows 35
IX
Figura 3.2. Ventana de propiedades de Mac OS X 36
Figura 3.3. Logotipo de Linux 39
Figura 3.4. Imagen en el CD de la instalación del sistema Ubuntu 41
Figura 3.5. Pantallas de selección de idioma 42
Figura 3.6. Pantalla de configuración regional 42
Figura 3.7. Ventanas para seleccionar la distribución de teclado 42
Figura 3.8. Ventana para capturar datos de inicio de sesión 42
Figura 3.9. Ventana de preparación del disco duro 43
Figura 3.10. Ventana donde muestra el progreso de instalación de Ubuntu 44
Figura 3.11. Ventana final de instalación completa 45
Figura 3.12. Ventana de inicio del sistema Ubuntu 12.04 45
Figura 3.13. Configuración de llave del servidor 65
Figura 3.14. Ping desde el servidor en 10.1.1.2 66
Figura 3.15. Copia de easy-rsa en el directorio /etc/openvpn 67
Figura 3.16. Generar e iniciar certificados 68
Figura 3.17. Información necesaria para la generación de certificados 69
Figura 3.18 Generación del certificado de autoridad 69
Figura 3.19. Certificado del servidor 70
Figura 3.20. Creación del certificado y claves privadas para el servidor 71
Figura 3.21 Generación del protocolo Diffie-Hellman 72
Figura 4.1. Cifrado SSL 77
Figura 4.2. Situación de SSL/TLS en la pila de protocolos OSI 79
Figura 4.3 Logotipos de Open VPN e IPSec VPN 81
Figura 4.4. Encriptación Simétrica 83
Figura 4.5. Criptografía Asimétrica 84
Figura E.1. Intercambio de datos utilizando TLS/SSL 113
Índice de Tablas
Tabla 3.1. Comandos básicos para Linux 47
1
Introducción
La siguiente tesis tiene como fin, documentar los requisitos necesarios para proponer una
metodología sobre la implementación de una red privada virtual, o VPN, conocida por sus
siglas en inglés (Virtual Private Network).
Conforme al desarrollo de la tesis se presentará de manera formal la documentación y los
temas que se requieren para el desarrollo de una red VPN; por tal motivo, se involucran
desde el análisis de posibles aplicaciones que podrían ser útiles para el desarrollo del
trabajo, así como un breve marco teórico para el desarrollo del proyecto.
Las redes de computadoras crecen exponencialmente. Hace algunas décadas, eran pocos los
que tenían acceso a una computadora; sin embargo, la comunicación por computadora se ha
vuelto parte esencial de la vida cotidiana, más para el desempeño de la mayoría de las
empresas, independientemente de su giro. Esto tiene impacto en cuanto a la necesidad de
compartir información. Esta fue la base del desarrollo de lo que hoy se conoce como una
red privada virtual (VPN).
Actualmente, las redes de computadora son comunes, desde una sencilla conexión de
computadora a computadora, como una red compuesta por cientos o incluso miles de
computadoras al mismo tiempo. El avance de estas y la complejidad de las mismas han
obligado a compartir información, desde una red casera hasta una gran empresa. Es ahí que
se origina lo que hoy se conoce como internet, que no es nada más que millones de
computadoras interconectadas entre sí de manera descentralizada.
2
El internet es una herramienta, fuente de información, y medio de comunicación entre
computadoras, más potente y usadas que existe, pues permite superar la distancia física
como factor limitante.
Además de crear un medio de enlace entre terminales, las redes de computadora, también se
diseñaron con el propósito de tener alta seguridad entre los dispositivos en comunicación
que se conecten a ellas.
La tendencia a nivel mundial en las empresas y organizaciones, tiene la necesidad
comercial de establecer oficinas y centrales de operaciones en diversas partes del país para
así, de manera estratégica, poder comercializar sus productos. La comunicación dentro de
estas, es un elemento indispensable para su adecuada administración y evidentemente, que
gran parte de la información que se maneja se encuentra en constante flujo. Es por ello que
para su manejo se almacena dicha información en archivos, a su vez, en bases de datos y
por último, se utilizan tecnologías informáticas para su fácil manejo.
Para el caso de empresarios que requieran de tener comunicadas varias sucursales, es
necesario contar con un método seguro para tener compartida la información de forma
rápida y casi instantánea. Históricamente se han implementado diversos medios de
comunicación para poder resolver dicho problema, desde el compartir información por
medio de correo tradicional hasta el compartir archivos por medio de servidores
especializados para este fin. Cabe destacar que los métodos para compartir archivos no
están del todo obsoletos ya que estos se implementan de acuerdo a las necesidades e
impacto económico que genera al propietario de la red. Gracias a la tecnología dichos
problemas se han ido resolviendo paulatinamente, sin duda, la creación del correo
electrónico como medio de compartir información mejoro la forma de poder comunicarse.
La desventaja de este medio, es tener que solicitar que se te envíe la información requerida,
teniendo como consecuencia, no disponer de ella al instante. El usar un servidor
especializado, permite tener los archivos disponibles en la medida que se van guardando en
él, con la ventaja de no tener que solicitar que alguien que te envié la información.
3
Ambos métodos resultan bastante seguros y rápidos, ya que en poco tiempo, se puede
disponer de los datos requeridos de un lugar a otro sin mayor contratiempo.
Esto es una gran ventaja; sin embargo, surge la necesidad del factor humano debido a que
se necesita alguien que administre y comparta la información antes que sea enviada o
compartida. Por ejemplo, la matriz de una empresa requiere la información a determinada
hora del día esta es generada en una sucursal de dicha empresa ubicada geográficamente en
otra parte. Se da por hecho que la información existe y la matriz está en espera de recibirla.
Si no existiera recurso humano y el archivo requerido no estuviera compartido de ninguna
manera, se estaría en espera indefinida hasta que se tenga interacción con la información de
la matriz; esta interacción la tendría el factor humano. De aquí la desventaja del correo
electrónico.
Los problemas surgidos anteriormente han requerido de nuevas propuestas y tecnologías
para resolver las desventajas presentes en las redes. Es donde nacen las Redes privadas
Virtuales (VPN), como tecnología que permite comunicar y compartir recursos entre varias
computadoras y/o servidores ubicados en regiones geográficas distintas; así como estar en
contacto de manera virtual como si estuviéramos en nuestra estación de trabajo, utilizando
un medio de acceso público como es el internet.
Es donde surge la idea de esta tesis, el propósito principal es entender cómo se opera una
red privada virtual, se tratará de mostrar la arquitectura y posible implementación,
considerando su topología y configuración en base a las normas ya establecidas por los
organismos que regulan la implementación de las mismas, los procesos que hacen posible
el intercambio de información entre sus elementos optimizando recursos de enlace con el
sustento de estudio realizados a los medios de comunicación y transmisión de datos. Por
otro lado conocer la seguridad de la red y así mantener la información protegida de tal
manera que solo los usuarios definidos en la misma puedan acceder a la ella.
Es un hecho que al montar una red de este tipo, el diseño y todos los aspectos que se
mencionen en la tesis, son en su mayoría, decisión de la persona o grupo de trabajo que
4
decidan llevar a cabo su desarrollo y gestión. Es por ello, que en este proyecto se tratara de
mostrar la optimización de los recursos involucrados en la posible instalación de una VPN,
haciendo hincapié en la formulación de cómo lograrlo, teniendo como propósito
fundamental la máxima eficiencia posible.
5
Capítulo I
INTRODUCCIÓN A LAS REDES
6
1.1 Antecedentes
Una de las necesidades vitales para el desarrollo y crecimiento de las empresas, es la
posibilidad de compartir información, particularmente para aquellas que se encuentran
divididas, con sedes en diferentes zonas geográficas y secciones de la empresa que no se
encuentran en el mismo entorno físico.
Hace unos años no era tan importante el conectar usuarios a internet para cuestiones de
trabajo, pero a medida que ha pasado el tiempo las compañías han querido que las redes
Red de Área Local (Local Area Network (LAN)) trasciendan más allá del ámbito de la
oficina e incluyeran a los trabajadores y centros de información de otros edificios, ciudades,
estados o incluso otros países, y tenían que invertir en hardware y servicios de
telecomunicaciones costosos para crear redes amplias de servicio, Red de Área
Metropolitana (Wide Area Network). Sin embargo ya con internet, las compañías tienen la
posibilidad de crear una red privada virtual que demanda una inversión relativamente
pequeña de hardware y utiliza internet global para la conexión entre los puntos de la red.
Durante un tiempo, las grandes empresas habían solucionado el problema mediante
sistemas de comunicación como líneas punto a punto y sofisticadas instalaciones de
interconexión. Aunque efectivas, estas soluciones quedaban fuera del alcance de
organizaciones de menor tamaño y con recursos económicos y técnicos más escasos.
Las redes tipo LAN permiten conectar entre sí varios ordenadores en una misma oficina.
Con la aparición de las nuevas tecnologías hoy en día es posible conectar este tipo de redes
a internet. Esta conexión puede ser de varias maneras:
7
Unidireccional: Conexión a internet desde la red LAN para consulta de información.
Bidireccional: El acceso es en ambas direcciones, desde la LAN hacia internet o
bien desde internet hacia la LAN.
Las LAN tradicionales son esencialmente restringidas, por lo cual se puede intercambiar
información entre las computadoras sin pensar en la seguridad de la información; pero se
considera que internet no es seguro, por lo tanto las VPN usan protocolos especiales que
permiten encriptar información y permitir únicamente a la persona autorizada desencriptar
esa información con un identificador que comprueba que la transmisión se ha hecho desde
una fuente confiable.
Encriptar es simplemente un algoritmo matemático aplicado a los datos que hace que estos
sean ilegibles para todos excepto a aquellos que tienen la habilidad de desencriptarlos. Por
lo tanto las VPN’s permiten interconectar sitios remotos sin arrendar a nuestro Proveedor
de servicios de internet ISP1 costosos enlaces WAN.
Las últimas alternativas de comunicación, como La tecnología de Línea de Suscripción
Asimétrica Digital (Asymmetric Digital Subscriber Line (ADSL)), han hecho que la
desventaja operativa disminuya, permitiendo a pequeñas y medianas empresas disponer de
su propia red de comunicación privada. Ahora, las centrales y sucursales disponen de su
propia red de comunicación privada, para intercomunicarse y compartir información de
forma sencilla y segura, con inversiones muy inferiores a las de hace tiempo.
Seguridad del Protocolo de Internet (IPSec) fue el primer esfuerzo para desarrollar un
estándar para hacer seguras las redes. Es un conjunto de protocolos cuya función es
asegurar las comunicaciones sobre el Protocolo de Internet (IP) autenticando y/o cifrando
cada paquete IP en un flujo de datos. También incluye protocolos para el establecimiento
de claves de cifrado2.
1 ISP. Proveedor de Servicios de Internet 2 Cifrado. Ver glosario
8
1.2 Historia de las redes
Una red de computadoras es un grupo de computadoras conectadas entre sí para
comunicarse y compartir recursos tales como archivos, impresoras, correo electrónico, etc.
Las redes deben incluir medios de comunicación de red, para transmitir los datos entre el
equipo y los medios de comunicación, un sistema operativo (SO)3 para permitir el
reconocimiento y trabajo en la red y un protocolo para controlar las comunicaciones
1.2.1 Organizaciones de estandarización
Los estándares son una serie de lineamientos técnicos detallados, un estándar proporciona
un modelo de desarrollo que hace posible que un producto funcione adecuadamente con
otros sin tener en cuenta quien lo fabrica.
Las siguientes organizaciones se dedican a la definición y establecimiento de estándares
para datos y comunicaciones:
Organización Internacional para la Estandarización (ISO, International Standards
Organization). Es una organización internacional no gubernamental, compuesta por
representantes de los organismos de normalización de estándares de varios
gobiernos a lo largo del mundo, el cual produce normas internacionales, industriales
y comerciales.
Instituto Nacional Estadounidense de Estándares (ANSI, American National
Standards Institute). Es una organización no lucrativa que supervisa el desarrollo de
estándares para productos, servicios, procesos y sistemas en los Estados Unidos.
ANSI es miembro de la ISO. Tiene como objetivos servir como una institución de
coordinación para la estandarización. Los miembros de ANSI son sociedades
profesionales, asociaciones de la industria, agencias gubernamentales, etc.
3 Sistema Operativo. Ver glosario
9
Alianza de Industrias Electrónicas (EIA, Electronic Industries Alliance). Esta
organización fue creada sin ánimo de lucro con el fin de promocionar aspectos de la
fabricación electrónica. Se centra en las áreas de la innovación y competitividad
global, comercio internacional y acceso al mercado; ha hecho contribuciones
significativas mediante la definición de interfaces de conexión física y
especificaciones de señalización para la comunicación de datos.
Instituto de Ingenieros Eléctricos y Electrónicos (IEEE, Institute of Electrical and
Electronics Engineers). Su trabajo es promover la creatividad, el desarrollo y la
integración; compartir y aplicar los avances en las tecnologías de la información,
electrónica y ciencias en general. Es la mayor sociedad profesional de ingeniería del
mundo y como uno de sus objetivos, prevé el desarrollo y adopción de estándares
internacionales para la computación y las comunicaciones.
Agencias reguladoras. Todas las comunicaciones están reguladas por las agencias
del gobierno tales como la Comisión Federal de Comunicaciones (FCC, Federal
Communications Commission) en los Estados Unidos o como la Comisión Federal
de Telecomunicaciones (COFETEL) en México. El objetivo de estas organizaciones
es proteger el interés público mediante la regulación de las comunicaciones y
telecomunicaciones.
En el caso de México la COFETEL tiene como función que el país se encuentre a la
vanguardia de las telecomunicaciones y de las tecnologías de la información, y que
exista acceso, diversidad, calidad, mejores precios y cobertura, de todos los
servicios en un ambiente competitivo y convergente, que garantice plenamente el
beneficio social.
10
1.2.2 Red de Área Local. LAN
Por sus siglas en ingles (Local Area Network) se considera la interconexión de varios
ordenadores y periféricos para el cambio de información entre ellos, su área de cobertura es
pequeña, generalmente un edificio. En épocas anteriores una empresa podía tener
solamente un ordenador central, accediendo los usuarios a éste mediante terminales con un
cable simple de baja velocidad. Las redes como Arquitectura de Red de Sistemas de IBM
fueron diseñadas para unir terminales u computadoras centrales a sitios remotos con líneas
alquiladas. Las primeras LAN fueron creadas a finales de los años 1970 y se solían crear
líneas de alta velocidad para conectar grandes ordenadores centrales a un lugar.
1.2.3 Redes de Área Amplia. WAN
A medida que el uso de las computadoras en las empresas aumentaba, pronto resulto obvio
que incluso las LAN no eran suficientes. Se necesitaba una forma de transferir información
de manera eficiente y rápida de una red a otra.
La solución surgió con la creación de las (Wide Área Network (WAN)) que conectan redes
de usuarios dentro de un área geográfica extensa, permitiendo que las empresas se
comuniquen entre sí, compartiendo información, recursos y acceso a internet.
1.3 Modelo OSI
A principios de la década de 1980 se produjo un enorme crecimiento en la cantidad y el
tamaño de las redes.
ISO proporcionó a los fabricantes un conjunto de estándares que aseguraron una
compatibilidad e interoperabilidad entre los distintos tipos de tecnología de red producidos
por las empresas a nivel mundial conocido como el modelo de referencia de Interconexión
de Sistemas Abiertos (OSI, Open System Interconnection).
11
El Modelo OSI cuenta con 7 capas o niveles:
Aplicación
Presentación
Sesión
Transporte
Red
Enlace de datos
Física
Figura. 1.1. Capas del Modelo OSI
Capa de aplicación. Permite acceso a los recursos de la red tales como correo
electrónico, transferencia de archivos y emulación de terminales.
Capa de presentación. Traduce y encrípta datos.
Capa de sesión. Establece, administra y termina sesiones.
Capa de transporte. Proporciona confiabilidad del envío de datos, detección de fallas
y control de flujo.
Capa de red. Determina el direccionamiento de red y establece la mejor ruta para el
envío de paquetes del origen al destino.
Capa de enlace de datos. Organiza los bits en tramas y proporciona entrega
confiable de datos de un nodo a otro
Capa física. Se ocupa de la transmisión binaria sobre el medio y proporciona
especificaciones mecánicas y eléctricas para la transmisión de datos.
12
Para que los datos puedan viajar desde el origen hasta su destino, cada capa del modelo
OSI, en el origen debe comunicarse con su capa par en el destino. Esta forma de
comunicación se conoce como de punto a punto.
Figura 1.2. Modelo OSI
Las redes inalámbricas se diferencian de las redes cableadas convencionales principalmente
en la capa física y la capa de enlace de datos, según el modelo de referencia OSI.
1.4 Historia del internet
Podría definirse como una red de redes. (inter= entrelazadas, net=red) con esto que no sólo
se encarga de conectar computadoras, sino que interconecta redes de computadoras entre sí
se considera que una red de computadoras se define como un conjunto de máquinas que
establecen una comunicación recíproca a través de algún medio físico de comunicación.
13
La historia involucra computadoras porque este medio se basa pura y exclusivamente en
esta área; por lo cual sirve de enlaces entre redes pequeñas y permite ampliar su cobertura
al hacerlas formar parte de una red global.
Para saber cómo empieza la historia tendremos que remontarnos a los años 60, cuando en
los Estados Unidos se estaban buscando alternativas de mantener una forma de
comunicación en el posible caso de una guerra nuclear. Este hecho marcó la historia del
internet, en primer lugar, este proyecto contemplaba eliminar cualquier tipo de autoridad
central, debido a que sería el primer blanco en caso de algún ataque, es por esto que se
pensó una red descentralizada y que esté diseñada para poder llevar a cabo operaciones en
situaciones difíciles. Cada terminal conectada debía constar del mismo estatus y la misma
capacidad para recibir información y a la vez enviarla.
El envío de datos tenía que descansar en un mecanismo que pudiera tener manejo sobre la
destrucción parcial de la Red; entonces se decidió que los mensajes tenían que ser divididos
en pequeñas porciones de información o paquetes, éstos contendrían la dirección de destino
sin especificar la ruta de arribo, cada paquete debía buscar la manera de llegar al
destinatario según las rutas disponibles. El destinatario sería el encargado de reensamblar
los paquetes individuales para construir el mensaje original.
La historia del internet apunta también a Inglaterra en donde se experimentó al principio,
con estos conceptos, y así durante 1968, el Laboratorio Nacional de Física de Gran Bretaña
llevó a cabo la primera red experimental; al siguiente año, el Pentágono de los Estados
Unidos, decidió que era hora de financiar su propio proyecto, y es allí en 1969, en que se
establece la primera red en la Universidad de California. Un tiempo después nacen tres
redes adicionales, nacía de esta forma Proyectos de Investigación avanzada (ARPANET).
La historia demuestra que gracias a esta agencia, científicos e investigadores pudieron
compartir e intercambiar recursos informáticos en forma remota. Esto era de gran ayuda ya
que debemos recordar que en los años 70 el tiempo que poseían las computadoras para
procesar datos era un recurso escaso; para 1972 ARPANET acumulaba 37 redes.
14
Lo curioso aquí, es que se empezó a notar que la mayor parte del tráfico informático era
constituido por mensajes personales y noticias, y no por procesos informáticos como se
pensaba.
En 1972 el investigador del Instituto de Massachusetts Lawrence G. Roberts expandió su
valor añadido escribiendo el primer programa de utilidad de correo electrónico para
relacionar, leer selectivamente, almacenar, reenviar y responder a mensajes. Desde
entonces, la aplicación de correo electrónico se convirtió en la mayor aplicación durante
más de una década. Fue precursora del tipo de actividad que observamos hoy día en el
enorme crecimiento de todas las formas de tráfico persona a persona.
Internet ha supuesto una revolución sin precedentes en el mundo de la informática y de las
comunicaciones. Los inventos del telégrafo, teléfono, radio y computadora sentaron las
bases para esta integración de capacidades nunca antes vivida. Esto es a la vez una
oportunidad de difusión mundial, un mecanismo de propagación de la información y un
medio de colaboración e interacción entre los individuos y sus ordenadores
independientemente de su localización geográfica.
Figura. 1.3 Internet
15
1.5 Implementaciones
Todas las distintas opciones disponibles en la actualidad caen en tres categorías básicas:
soluciones de hardware, soluciones basadas en firewall4 y aplicaciones VPN por software.
Cada tipo de implementación utiliza diversas combinaciones de protocolos para garantizar
las tres características fundamentales: autenticación, integridad y confidencialidad.
Autenticación y Autorización: ¿Quién está del otro lado? Usuario/equipo y qué
nivel de acceso debe tener.
Integridad: La garantía de que los datos enviados no han sido alterados.
Confidencialidad: Dado que los datos viajan a través de un medio hostil como
internet, los mismos son susceptibles de interceptación: por eso es fundamental el
cifrado de los datos. De este modo, la información no debe poder ser interpretada
por nadie más que los destinatarios de la misma.
Figura. 1.4 Características Fundamentales
4 Firewall. Ver glosario
16
Capítulo II
REDES PRIVADAS VIRTUALES
17
2.1 Definición VPN
La Red Privada Virtual (Virtual Private Network (VPN)), es un grupo de dos o más
sistemas de ordenadores, generalmente conectados a una red privada, que se comunican con
mayor seguridad sobre una red pública.
Figura 2.1. Diagrama de una VPN en una organización.
En una red pública generalmente no se cuenta con grandes métodos de seguridad, por lo
que resulta ser insegura. Para transmitir información a través de esta, en la VPN se aplican
métodos de seguridad para garantizar la privacidad de los datos que se intercambian entre
ambas, particularmente, protocolos de túneles.
18
A las VPN, se les considera privadas, porque se establecen exclusivamente entre el emisor
y el receptor de la información; y virtuales, porque no se necesita un cable o cualquier otro
medio físico directo entre los comunicantes.
Las redes privadas, extienden la red de una oficina a oficinas distantes. Usando una VPN,
se crea una conexión privada segura a través de una red pública como internet.
2.2 Ventajas de una VPN
A través de las VPN se crea una conexión segura a redes corporativas, por medio de
dispositivos móviles como pueden ser una laptop, un teléfono celular o un PDA5 , dentro de
ellos se debe considerar la tasa de transferencia y la capacidad de procesamiento, la mayor
ventaja de las VPN’s es la conectividad y la movilidad para los usuarios.
Al implementa una VPN, existen cuatro aspectos fundamentales que deben ser
considerados: costo, desempeño, confianza y seguridad. La seguridad es el elemento
fundamental ya que sin ésta los otros elementos pueden ser inútiles; no importa qué tan
barata, rápida y confiable sea una red, sin la seguridad adecuada, los riesgos pesarán más
que los beneficios. Una compañía puede usar la internet para enviar archivos a otras
corporaciones; sin embargo, sin medidas y políticas de seguridad adecuadas, la información
queda expuesta a ataques. Por ello se provee de encriptación y encapsulación de datos de
manera que hace que estos viajen codificados y a través de un túnel.
La calidad en el servicio se refiere al acuerdo de servicio ofrecido por un proveedor de
internet a un cliente, que garantiza cierto nivel de desempeño.
Costos: Ahorran grandes sumas de dinero en líneas dedicadas o enlaces físicos, reduce
el costo del servicio de comunicación o del ancho de banda de transporte, y también el
de la infraestructura y operación de las comunicaciones
5 PDA. Ver glosario
19
Flexibilidad: Se puede optar por múltiples tecnologías o proveedores de servicio. Esa
independencia posibilita que la red se adapte a los requerimientos de los negocios, y se
puede elegir el medio de acceso más adecuado.
Mejor administración: Cada usuario que se conecta puede tener un numero de IP fijo
asignado por el administrador, lo que facilita algunas tareas como por ejemplo mandar
impresiones remotamente, aunque también es posible asignar las direcciones IP
dinámicamente si así se requiere.
Facilidad para los usuarios con poca experiencia para conectarse a grandes redes
corporativas transfiriendo sus datos de forma segura.
Implementación rápida: La flexibilidad de esta arquitectura permite implementar
nuevos servicios de manera muy rápida, que concuerdan con los tiempos del negocio
de las empresas.
Escalabilidad: El desarrollo masivo de redes como internet permite que la empresa
tenga puntos de presencia en todo tipo de lugares. Por otro lado, la independencia con
respecto a la tecnología de acceso posibilita escalar el ancho de banda de la red.
2.3 Función de una VPN
La VPN crea un túnel entre los dos puntos a conectar utilizando infraestructura pública; usa
una técnica llamada tunel o tunneling, los paquetes de datos son enrutados por la red
pública a través de internet o alguna otra red comercial, en un túnel privado que simula una
conexión punto a punto. Este recurso hace que por la misma red puedan crearse muchos
enlaces por diferentes túneles virtuales a través de la misma infraestructura.
20
También hace universales para su transporte los diferentes protocolos LAN, de allí la
característica de multiprotocolo que hace sumamente universal la tecnología de las redes
virtuales privadas.
Básicamente, y haciendo referencia al modelo OSI, se puede crear una VPN usando
tecnologías de Tunneling de capa 2 (enlace de datos) y de capa 3 (red).
2.4 Requerimiento básico de una VPN
Al implementar una solución de red remota, debe garantizar la privacidad y la integridad de
los datos al viajar a través de internet público, lo mismo se aplica en el caso de datos
sensibles que viajan a través de una red corporativa, por lo tanto una Red Privada Virtual
ha de proveer de los siguientes mecanismos básicos, aunque en ocasiones y depende la
situación, pueden omitirse algunos.
Autentificaciones de usuarios. Sirve para verificar la identidad y poder restringir el
acceso solo a los usuarios autorizados.
Administración de direcciones. Debe asignar una dirección del cliente sobre la red
privada, a su vez asegurar que las direcciones se mantienen privadas.
Encriptación de datos. Los datos que viajan por la red pública, deben ser
transformados para que sean ilegibles para los usuarios no autorizados.
Administración de claves o llaves. Se deberán generar y renovar las claves de
encriptación para los clientes y los servidores.
Soporte de protocolo múltiple. Convendrá manejar protocolos comunes utilizados
en las redes públicas, estos incluyen protocolo de internet. Una solución VPN de
internet basada en un Protocolo de Tunel de Punto a Punto (PPTP) o un protocolo
de nivel 2 (L2TP) que cumple con todos los requerimientos básicos, y aprovecha la
amplia disponibilidad de internet a nivel mundial.
21
2.5 Aplicaciones
Las posibilidades de aplicación de una VPN son muchas y permiten establecer el uso de
IPSec de todo el tráfico IP entre ambas redes de este modo, todas aplicaciones basadas en
IP es posible acceder a través de un túnel VPN.
Como es el caso de acceso a servidores de correo electrónico, bases de datos, sistemas de
Planificación de Recursos Materiales ERP ó archivos compartidos, así como la
administración remota de sistemas externos.
2.6 Tunneling
Internet se construyó desde un principio como un medio inseguro. Muchos de los
protocolos utilizados hoy en día para transferir datos de una máquina a otra a través de la
red carecen de algún tipo de cifrado o medio de seguridad que evite que nuestras
comunicaciones puedan ser interceptadas o espiadas. Esto supone un grave problema, en
todas aquellas situaciones en las que queremos transferir información sensible como la
nomina de una empresa o una cuenta de usuario (nombre de usuario y contraseña), y no
tengamos un control absoluto sobre la red.
El problema de los protocolos que envían sus datos en claro, es decir, sin cifrarlos, por lo
que cualquier persona que tenga acceso físico a la red en la que se sitúan nuestras máquinas
puede ver dichos datos. Es tan simple como utilizar un sniffer6, que básicamente, es una
herramienta que pone nuestra tarjeta de red en modo promiscuo (modo en el que las tarjetas
de red operan aceptando todos los paquetes que circulan por la red a la que se conectan,
sean o no para esa tarjeta). De este modo, alguien que conecte su máquina a una red y
arranque un sniffer recibirá y podrá analizar por tanto todos los paquetes que circulen por
dicha red. Si alguno de esos paquetes pertenece a un protocolo que envía sus
comunicaciones en claro, y contiene información sensible, dicha información se verá
6 Sniffer. Programa informático que registra la actividad que realiza un ordenador con el fin de plagiar información sensible.
22
comprometida. Si por el contrario, ciframos nuestras comunicaciones con un sistema que
permita entenderse sólo a las dos máquinas que queremos sean partícipes de la
comunicación, cualquiera que intercepte desde una tercera máquina nuestros paquetes, no
podrá hacer nada con ellos, al no poder descifrar los datos.
Una forma de evitar el problema que nos atañe, sin dejar por ello de utilizar todos aquellos
protocolos que carezcan de medios de cifrado, es usar una útil técnica llamada tunneling.
Básicamente, esta técnica consiste en abrir conexiones entre dos máquinas por medio de un
protocolo seguro, como puede ser un Interprete de Ordenes Seguras (Secure Shell (SSH)), a
través de las cuales realizaremos las transferencias inseguras, que pasarán de este modo a
ser seguras. De esta analogía viene el nombre de la técnica, siendo la conexión segura (en
este caso de SSH) el túnel por el cual enviamos nuestros datos para que nadie más aparte de
los interlocutores que se sitúan a cada extremo del túnel, pueda ver dichos datos.
2.7 Tipos de VPN’s
Existen diferentes tipos de VPN, algunos basados en distintos métodos de seguridad y otros
por su composición en hardware y software. Todos representan ventajas y desventajas a la
hora de su aplicación, de tal manera, que se debe elegir la manera más adecuada y sobre
todo, de menor riesgo y costo para la empresa, lo más importante es el protocolo que se
utilice para la implementación.
2.7.1 Sistemas basados en hardware
Estos sistemas están basados en routers que encriptan la información. Son seguros y fáciles
de usar, pero requieren de una configuración correcta y definida. Ofrecen un gran
rendimiento ya que no malgastan ciclos de proceso, haciendo funcionar un Sistema
Operativo. Es un hardware dedicado, muy rápido de fácil instalación. Provee la capacidad
de asegurar un paquete en una parte de la red a través del tunneling de paquetes.
23
Las principales ventajas conseguidas con la implementación sobre routers son:
Capacidad de asegurar el flujo de paquetes entre dos redes, a través de una red
pública como internet.
Capacidad de autentificar y autorizar a usurarios el acceso sobre redes privadas.
2.7.2 Sistemas basados en Firewall
Estos se implementan con software de paredes de fuego (firewall). Tienen las ventajas de
los mecanismos de seguridad que utilizan incluyendo el acceso restringido a la red interna.
También realizan la traducción de direcciones de red (Network Address Translation (NAT)
explicadas en el anexo B. Estos satisfacen los requerimientos de autentificación fuerte.
Muchas de las paredes de fuegos comerciales, aumentan la protección, quitando al núcleo
del Sistema Operativo algunos servicios peligrosos que llevan estos por default, y les
provee de medidas de seguridad adicionales, que son mucho más útiles para los servicios de
VPN.
El rendimiento en este tipo decrece, ya que no se tiene hardware especializado de
encriptación.
2.7.3 Sistemas basados en Software
Estos sistemas son ideales para las situaciones donde los dos puntos de conexión de la VPN
no están controlados por la misma organización, o cuando los diferentes cortafuegos o
routers no son implementados por la misma organización. Este tipo de red ofrece el método
más flexible en cuanto al manejo de tráfico. Puede ser enviado a través de un túnel, en
24
función de las direcciones o protocolos, en cambio en los VPN por hardware, todo el tráfico
será enrutado por el túnel. Podemos hacer un enrutamiento inteligente de una manera
mucho más fácil.
2.8 Arquitecturas y tipos más comunes de VPN
Dentro de las posibles arquitecturas que encontramos dentro de las VPN se pueden
mencionar características muy particulares, dependiendo de su implementación. Para
comprender esta situación, se explicara las características más relevantes de las VPN más
usadas en la actualidad.
2.8.1 VPN de acceso remoto
Figura 2.2. Diagrama de VPN por acceso remoto
También denominadas Red Privada Virtual de Marcación (Virtual Private Dial-up Network
(VPDN)). Es quizás el modelo más usado actualmente y consiste en usuarios o proveedores
que se conectan con la empresa desde sitios remotos (oficinas comerciales, domicilios,
hoteles, aviones, etc.), utilizando internet como vínculo de acceso. Una vez autenticados
tienen un nivel de acceso muy similar al que tienen en la red local de la empresa.
25
Muchas empresas han reemplazado con esta tecnología su infraestructura "dial-up". Con el
acceso remoto VPN un trabajador que se haya desplazado a otro país y que quiere acceder a
la base de datos de su compañía, correo interno o cualquier otro recurso de su red
corporativa, solo tiene que conectarse a internet y ejecutar su cliente de marcación VPN.
2.8.2 VPN Interna
Este esquema es el menos difundido pero uno de los más poderosos para utilizar dentro de
la empresa. Es una variante del tipo "acceso remoto" pero, en vez de utilizar internet como
medio de conexión, emplea la misma red LAN de la empresa. Sirve para aislar zonas y
servicios de la red LAN interna.
Esta capacidad lo hace muy conveniente para mejorar las prestaciones de seguridad de las
redes inalámbricas (Wi-Fi7).
La mayoría de incidentes de seguridad está relacionada con abusos dentro de la red de la
compañía, por lo tanto a más de los ataques externos no hay que perder de vista los ataques
internos. Dependiendo del tipo de negocio o por asuntos legales, cierta información puede
ser privada y confidencial a un nivel de departamento.
Una VPN entre departamentos puede ayudar a encontrar esos requerimientos de
confidencialidad.
Un ejemplo clásico es un servidor con información sensible, como las nóminas de sueldos,
ubicado detrás de un equipo VPN, el cual provee autenticación adicional más el agregado
del cifrado, haciendo posible que sólo el personal de Recursos Humanos habilitado pueda
acceder a la información.
7 Wi-Fi. Fidelidad inalámbrica (Wireless Fidelity). Mecanismo de conexión de dispositivos electrónicos de forma inalámbrica
26
Figura 2.3. Arquitectura VPN Interna
2.8.3 VPN sitio a sitio
Este esquema se utiliza para conectar oficinas remotas con la sede central de organización.
El equipo central VPN, que posee un vínculo a internet permanente, acepta las conexiones
vía internet provenientes de los sitios y establece el túnel VPN. Los servidores de las
sucursales se conectan a internet utilizando los servicios de su proveedor local de internet,
típicamente mediante conexiones de banda ancha. Esto permite eliminar los costosos
vínculos punto a punto, sobre todo en las comunicaciones internacionales.
Esta configuración puede ser de dos tipos:
Tipo Intranet.
Tipo Extranet.
27
2.8.3.1 Tipo Intranet
La forma más simple de esta red, se define cuando una empresa tiene una o más sucursales
remotas y se quiere unir en una única red privada. Esto se logra al creando una VPN para
conectar ambas redes locales.
Figura 2.4. Diagrama intranet VPN
2.8.3.2 Tipo Extranet
Cuando la empresa tiene una relación cercana con otra compañía, como podría ser una
empresa asociada, un proveedor o cliente, se pueden desarrollar una VPN que conecte sus
redes y permita a estas empresas trabajar en un ambiente compartido. Con esta arquitectura
cada empresa tiene que controlar muy meticulosamente el acceso a los recursos de su red
corporativa y a los datos que van a intercambiar con sus socios de negocios. Implementar
esta topología, implica incrementar la complejidad de los sistemas de control de acceso y
de autenticación.
28
Figura 2.5. Diagrama Extranet VPN
2.9 Tecnologías para armar VPN’s
Los más utilizados y con mejor rendimientos son IPSEC y PPTP.
DLSW: Data Link Switching (SNA over IP).
IPX for Novell Netware over IP.
GRE: Generic Routing Encapsulation.
ATMP: Ascend Tunnel Management Protocol.
IPSEC: Internet Protocol Security Tunnel Mode.
PPTP: Point to Point Tunneling Protocol.
L2TP: Layer To Tunneling Protocol.
29
2.9.1 IPSEC
Protocolo de Internet Seguro (Internet Protocol Secure (IPSEC)). Es un protocolo creado
para establecer comunicaciones que proporcionen confidencialidad e integridad de los
paquetes que se trasmiten vía internet. Autentifica los equipos y cifra los datos para su
transmisión entre hosts en una red, intranet o extranet8, incluidas las comunicaciones entre
estaciones de trabajo y servidores. El objetivo principal de IPSEC es proporcionar
protección a los paquetes IP.
Está basado en dos tipos de funcionamiento, el primero es el modo transporte de seguridad
de extremo a extremo, lo que significa que los únicos hosts que tienen que conocer la
protección de IPSEC son el que envía y el que recibe; cada equipo controla la seguridad por
sí mismo en su extremo, bajo la hipótesis de que el medio por el que se establece la
comunicación no es seguro. El segundo es el modo túnel, en el cual la encriptación se
produce solo entre los routers de cada red.
Puede utilizar dos métodos para brindar seguridad, ESP (Encapsulating Security Payload)
o AH (Authentication Header), la diferencia entre ESP y AH es que el primero cifra los
paquetes con algoritmos de cifrado definidos y los autentica, en tanto que AH solo los
autentica, firma digitalmente los paquetes asegurándose la identidad del emisor y del
receptor.
2.9.2 PPTP
(Point to Point Tunneling Protocol (PPTP)). Es un protocolo que permite el intercambio
seguro de datos de un cliente a un servidor formando así una red privada virtual basada en
el Protocolo de Control de Transmision/ Portocolo de Internet (Transmission Control
Protocol/Internet Protocol (TCP/IP9)). PPTP soporta múltiples protocolos de red (IP, IPX y
NetBEUI) y puede ser utilizado para establecer dichas redes virtuales a través de otras redes
8 Extranet y/o Intranet. Ver glosario
9 TCP/IP. Ver glosario
30
públicas o privadas como líneas telefónicas, redes de área local o extensa (LAN's y WAN's)
e internet u otras redes públicas basadas en TCP/IP.
El escenario más común para el funcionamiento de una VPN sobre protocolo PPTP es el
siguiente: Una máquina cliente (Windows 9x, XP o Windows 2000) se conecta a un
Proveedor de Servicios de Internet (ISP) utilizando una conexión de acceso telefónico a
redes o bien usando una típica conexión ADSL o cable-modem.
En otro punto de Internet existe una máquina (por ejemplo, un servidor Linux) ofreciendo
servicio de conexión PPTP. El cliente puede en ese momento lanzar una conexión de
acceso remoto usando su adaptador de red privada virtual a dicho servidor, creándose un
túnel privado sobre internet que conecta ambas máquinas como si estuvieran en la misma
red local, pudiendo así tener acceso a recursos compartidos tales como carpetas o
impresoras.
2.10 Diagramas
Existen varios tipos de conexiones VPN, esto será definido según los requerimientos de la
organización, por ejemplo si lo que se desea enlazar son dos o más redes, o si solo se
conectaran usuarios remotos.
2.10.1 Diagrama de cliente a servidor.
Un usuario remoto que solo necesita servicios o aplicaciones que corren en el mismo
servidor VPN.
31
Figura 2.6 Diagrama de cliente / servidor
2.10.2 De cliente a red interna LAN
Un usuario remoto que utilizara servicios o aplicaciones que se encuentran en uno o más
equipos dentro de la red interna.
Figura.2.7.Diagrama de cliente a red interna
32
2.10.3 De red interna a red interna (LAN a LAN).
Esta forma supone la posibilidad de unir dos intranets a través de dos enrutadores, el
servidor VPN en una de las intranets y el cliente VPN en la otra.
Aquí entran en juego el mantenimiento de tablas de ruteo y enmascaramiento.
Figura 2.8 De red interna a red interna (LAN a LAN).
33
Capítulo III
IMPLEMENTACIÓN
34
3.1 Construcción de componentes
En la actualidad existen tres sistemas operativos que dominan al mundo de la computación:
Microsoft Windows, Mac OS X y Linux. Ningún sistema resulta ser mejor que otro, ya que
cada uno cuenta con características propias que hacen la diferencia al elegir cual se
utilizara. De ahí que resulte importante mencionar el porqué de la selección de alguno,
antes de empezar la implementación de cualquier proyecto informático.
3.1.1 Sistema Operativo Microsoft Windows
Microsoft Windows es el nombre de una familia de sistemas operativos desarrollados y
vendidos por Microsoft. Desde sus orígenes, en noviembre de 1985, ha sido el sistema de
mayor crecimiento en las últimas décadas. En respuesta al creciente interés por la interfaz
gráfica, llego a convertirse en el sistema que predominó el mundo a finales de la década de
los noventa. Este sistema evolucionó de manera latente y acorde a las necesidades de
usuarios de nivel básico y avanzado. Es un sistema enfocado a resolver problemas para la
creación y edición de archivos de manera más simple para usuario de cualquier nivel.
Cuenta con un sistema de permisos de archivos denominado AGDLP (cuentas, global,
dominio local, permisos (account, global, domain local, permission)), donde se aplican los
permisos de archivo, una carpeta en forma de un grupo local, que a su vez, permite
compartir permisos de acceso a otros grupos globales como miembros de la misma
organización.
35
Figura 3.1. Logotipo característico de sistemas operativos Microsoft Windows
Una de las principales críticas que con frecuencia reciben los sistemas operativos Windows,
es la debilidad del sistema en lo que a seguridad se refiere y el alto índice de
vulnerabilidades críticas (virus, spyware, spam, etc.)10
Por otro lado, Windows al ser uno de los sistema pioneros en equipos personales, es un
sistema que abarca todo aquello que en la actualidad existe; programas de diseño, edición
de video, videojuegos, fotos, audio, software para ingeniería como suites CAD (Diseño
asistido por ordenador (Computer-aided design)), cálculos matemáticos, etc.
Es un sistema muy bueno en cuanto a interfaz gráfica, ha evolucionado para ser un sistema
accesible para todos los usuarios. Muchas empresas desarrolladoras de software, se han
enfocado a invertir tiempo en diseño de programas compatibles con este sistema,
induciendo a los usuarios en su utilización y fácil manejo, siendo un sistema favorito para
el trabajo en la empresa y entretenimiento en casa.
10 Ver glosario
36
3.1.2 Sistema Operativo Mac OS X
Mac OS X es un sistema operativo desarrollado y comercializado por Apple Inc. que ha
sido incluido en su gama de computadoras Macintosh11
desde 2002. Este sistema, al igual
que Microsoft, se desarrolla en un entorno grafico, elegante y de fácil uso para usuarios
intermedios. Introduce soporte seguro para aplicaciones y procesos firmados digitalmente
por el sistema para verificar la autenticidad y la integridad del software y sus recursos.
Figura 3.2. Ventana de propiedades de Mac OS X
El catalogo de programas disponible para Mac OS X es menor si se le compara con
Microsoft Windows. Aplicaciones importantes para la edición de documentos y hojas de
cálculo, como Microsoft Office o Photoshop tienen versión nativa para Mac OS X; sin
embargo, la mayor parte del software desarrollado para este sistema, ha sido orientado al
diseñado y manipulación de imágenes. Esto no quiere decir, que no sea un buen equipo
para el uso diario en casa u oficina.
11
Macintosh. Es el nombre con el que actualmente nos referimos a cualquier ordenador personal diseñado, desarrollado, construido,
comercializado y vendido por la compañía Apple Inc.
37
Mac OS X distingue entre los usuarios, el administrador de sistema y el superusuario, que
es quien tiene todos los privilegios en el sistema. Incluyen de fábrica utilidades de
seguridad muy similares a Microsoft, como paredes de fuego y antispyware. Pese a la
reducida cantidad de malware destinada para este sistema (en comparación a Windows), se
siguen encontrando vulnerabilidades que obligan al fabricante a mejorar su seguridad.
Siendo el sistema de mayor coste en el mercado y que teniendo menor número de
aplicaciones, comparado contra Windows, nos permite hacer un análisis de las necesidades
que se tienen en la oficina o en el hogar para la selección del mismo. Es muy importante
recalcar que las investigaciones de mercado indican que la base de clientes para este
sistema, en mayor parte proviene de personas con altos ingresos.
3.1.3 Sistema Operativo LINUX
Linux es un núcleo libre de sistema operativo. Es un sistema operativo completo con
multitarea y multiusuario como cualquier otro sistema comercial. Maneja sistemas de
seguridad muy similares a su competencia de mercado. Es un sistema que no tiene aun gran
penetración en el uso de computadoras personales debido a su desconocimiento por el
público en general. Al ser un sistema libre, tiene las bondades que estar casi libre de virus
informáticos en comparativa con Windows y Mac.
Su principal característica radica en que soporta diversos sistemas de ficheros para guardar
los datos y otros sistemas de ficheros que te permite utilizar la consola de comandos para
acceder desde Linux a los disquetes y particiones en discos duros formateados con MS-
DOS12
(en el caso de Windows). Además, como los otros sistemas operativos más
comerciales, también soporta el ISO-966013
.Por otro lado implementa todo lo necesario
para trabajar en red con TCP/IP. También se implementan PLIP (Linea IP paralela (Parallel
12
MS-DOS. Ver glosario 13
ISO-9660. Es el estándar seguido en el formato de los CD-ROMs
38
Line Internet Protocol)), para comunicarse por el puerto de la impresora y NFS (Sistema de
archivos de red (Network File System)), para acceso remoto a ficheros.
Los beneficios derivados del uso del sistema operativo Linux, provienen de su potencia y
flexibilidad. Estos son resultado de numerosas características integradas al sistema, las que
están disponibles tan pronto como se inicia. Comparte muchos de los mismos beneficios de
la independencia de dispositivos.
La diferencia de Linux sobre otros sistemas operativos, destaca en sus utilerías para
comunicaciones y red. Se maneja el envío de mensajes internos y la transferencia de
archivos mediante algunos comandos muy sencillos. El intercambio de información entre
usuarios del mismo sistema se lleva a cabo por medio de comunicación terminal a terminal,
correo electrónico, un calendario automático que sirve como administrador y un
programador de información. Linux guarda archivos en una estructura de árbol llamada
directorio. Se puede especificar un archivo por medio de una ruta de acceso desde el
directorio raíz especificando y no impone limitaciones al asignar nombres a los archivos
como en Windows
3.1.4 Comparación de sistemas operativos
Mac OS X, Microsoft Windows y Linux, incluyen de fábrica utilidades de seguridad muy
similares, como firewall y antispyware14
. Si bien ningún sistema operativo está exento de
ser atacado o infectado por un virus, Windows al ser el sistema más popular, encabeza la
lista de los más atacados en comparación con Mac OS X o Linux
Linux en comparación a Windows y Mac, sobresale al ser utilizado como sistema operativo
libre con la ventaja de compartir archivos de forma segura, además de ser rentable ya que
no se requiere de la compra de alguna licencia para su uso; es un software gratuito. Por otro
14
Antispyware. Es un programa desarrollado para el ámbito de la seguridad informática, el cual protege a los usuarios de programas
maliciosos.
39
lado, en sus últimas versiones ha evolucionado al ambiente gráfico, que lo hace más
entendible y amigable con el usuario.
3.1.5. ¿Por qué utilizar Linux?
Analizando los sistemas y al llegar a la conclusión de que para el propósito de esta tesis, se
pretende compartir información de la manera segura, se decide utilizar el sistema operativo
Linux de código abierto, ya que al ser software libre, se establece que la gente puede usarlo
de todas las formas que considere socialmente útiles y se puede conseguir sin costo alguno;
se tiene libertad de usar el trabajo de otros desarrolladores y construir a partir de éste,
componentes y programas que se incorporan al uso sistema operativo Linux. Es posible
modificar los componentes para desarrollar un programa nuevo, a partir de uno ya existente
o simplemente, partir de cero. Por esta razón, el desarrollo de software libre es rápido y
eficiente para los fines que se proponen en este proyecto.
Figura 3.3. Logotipo de Linux
40
3.2 Selección de requerimientos para el sistema Linux
Una vez que ya se tiene el análisis del sistema operativo a utilizar, se realiza una
investigación de los sistemas existentes. Actualmente Linux ofrece un sistema muy
amigable visualmente, al estar en entorno grafico; así mismo, es un sistema muy estable y
con una amplia comunicación con el desarrollador para adquirir soporte en caso necesario.
Dicho sistema se llama Ubuntu siendo la versión más reciente 12.04, la cual se encuentra
disponible para su descarga gratuita en la página:
http://www.ubuntu.com/download.
Para la instalación de este sistema, se requiere que el equipo cuente con las siguientes
especificaciones mínimas para un buen funcionamiento:
Procesador x86 a 1 GHz.
Memoria RAM de 512 MB.
Disco Duro de 6 GB (recomendable 15 GB)
Tarjeta gráfica y monitor capaz de soportar una resolución de 800x600.
Lector de CD-ROM, puerto USB o tarjeta de red.
La instalación del sistema se llevara a cabo en dos computadoras como mínimo, pudiendo
ser equipos de escritorio o laptop15
. Cabe mencionar que la marca de los equipos a usar no
influye en la operación del sistema, se usaran debido a la disponibilidad que se tiene de los
mismos.
15
Laptop. Computadora portátil.
41
El sistema a usar será Ubuntu 12.04, ya que es fácil de manejar para cualquier usuario, por
su similitud con otros sistemas a base de ventanas, que nos permitirá explorar menús y
probar las aplicaciones precargadas, para familiarizarse con él. Es importante destacar que
el sistema se instalara físicamente en los dos equipos para así poder guardar la
configuración personalizada que le vamos a dar, ya que si se ejecutara de forma virtual,
podríamos caer en la necesidad de tener que realizar la configuración nuevamente.
3.2.1 Utilerías del sistema Ubuntu
Ubuntu se distribuye por internet. Para llevar a cabo la instalación del mismo, se descarga
una imagen en ISO16
. Una vez que se ha descargado el archivo ISO, se graba en un disco
CD o DVD sin formato, utilizando una grabadora de CD/DVD17
.
Figura 3.4. Imagen del CD de la instalación del sistema Ubuntu
Ya que se tiene el disco de instalación, se inserta en el lector de CD y se reinicia equipo de
cómputo. Al iniciar el equipo, aparecerá una pantalla de bienvenida muy amigable que
muestra opciones claras y entendibles. Se procede a instalar Ubuntu y dependiendo del
equipo, tomara unos 30 minutos en completar la tarea de instalación.
16
Imagen ISO. Es un archivo que permite grabar el sistema en un disco CD o DVD. 17
CD. DVD. Son discos ópticos para el almacenamiento de datos digitales, la diferencia entre cada uno radica en la capacidad y
compresión de los datos
42
3.2.2 Configuración inicial de Ubuntu
Algo muy importante y que se debe realizar antes de usar cualquier sistema operativo, es la
configuración del sistema. Durante la instalación del mismo de deberán elegir el idioma del
sistema, la zona horaria, tipo de teclado y se deberá personalizar una sesión de usuario.
Figura 3.5. Pantallas de selección de
idioma
Figura 3.6. Pantalla de configuración
regional
Lo recomendable en estos casos, será señalar el uso cualquier teclado estándar en español.
La personalización de sesión de usuario, nos pedirá registrar algunos datos, como su
nombre real, nombre para iniciar sesión o apodo, contraseña y nombre de nuestro equipo de
cómputo. Por ejemplo, el nombre real podría ser “Jesús López” y el nombre de usuario
“flopez”.
Figura 3.7. Ventanas para seleccionar Figura 3.8. Ventana para capturar
la distribución de teclado datos de inicio de sesión
43
3.2.3 Instalación de Ubuntu
Una vez concluida la configuración inicial, se procede a seleccionar donde instalaremos el
sistema. Este paso resulta ser el más delicado ya que se trata de indicar dónde se debe
instalar Ubuntu. Se debe escoger la partición correcta donde se instalara el sistema de lo
contrario se podría perder información valiosa, si es que se comparte el disco duro con
otros sistemas operativos.
Figura 3.9. Ventana de preparación del disco duro
Existen tres posibles opciones para realizar la instalación:
1. Formatear todo el disco duro. Esta opción se elije solo si se desea borrar todo lo que
se tiene en el disco duro y usarlo por defecto como único para Ubuntu. Es la opción
más fácil y menos problemática si no se comparte el disco duro con otros sistemas
operativos.
2. Espacio libre contiguo. Ubuntu usará solo una parte del disco duro para instalarse.
Esta sería la más recomendable si desea conservar su antiguo sistema operativo o
alguna partición con sus datos. Es una opción muy habitual para aquéllos que
desean seguir también con un primer o segundo sistema operativo como Windows o
Mac OS.
44
3. Particionamiento manual. Con esta opción, podrá especificar cómo serán las
particiones de forma más específica. Ésta no es la mejor opción si nunca se ha
hecho una partición o se ha instalado Linux.
Una vez elegida la opción que mejor convenga, el sistema cuenta con los requerimientos
mínimos para iniciar la instalación, por lo que solo resta que se confirmen los datos
seleccionados. El sistema asegura que todo está en orden para así continuar y se comenzara
a copiar los archivos de Ubuntu al disco duro.
Figura 3.10. Ventana donde muestra el progreso de instalación de Ubuntu
Todos los sistemas operativos cuentan con anuncios y recomendaciones de uso que se ven
por medio de pantallas durante su proceso de instalación. Ubuntu no es la excepción,
algunas ventanas que posiblemente se visualizaran durante la instalación serán
recomendaciones para personalizar su Ubuntu y noticias sobre los cambios comprados con
versiones anteriores.
45
Figura 3.11. Ventana final de instalación completa
Al terminar la instalación, el sistema pedirá que se reinicie el equipo para cargar la nueva
configuración del sistema operativo. Una vez que ha terminado el reinicio del equipo,
podemos observar en nuestro Sistema Operativo instalado y listo para usarse.
Figura 3.12. Ventana de inicio del sistema Ubuntu 12.04
3.3 Configuración de la VPN
Como bien sabemos, en una VPN, es importante definir un servidor, quien se encargara de
compartir la información y/o los clientes que se conectaran a él. Una vez que definimos esta
información podemos iniciar la configuración de nuestros equipos de cómputo.
46
Para este ejercicio, se disponen de 2 equipos de cómputo, uno de los cuales servirá como
servidor de archivos y el otro será el cliente. Cabe destacar que los equipos que se proponen
por este medio, son similares, por lo que no hay una preferencia de cual se usara como
servidor y cual como cliente.
3.3.1 Requisitos para la implementación de una VPN
Una vez instalado nuestro nuevo sistema operativo, se deben realizar adecuaciones del
sistema operativo. Un requisito fundamental, es configurar una dirección fija a nuestro
equipo de cómputo y, por otro lado, es necesaria la instalación de un software que realizara
nuestro túnel VPN.
Este software que se utilizara para crear el túnel VPN se llama OpenVPN. Este se puede
instalar siguiendo una sencilla serie de comandos. Es muy sencillo de configurar ya que
desde que se instala ya lleva certificados preinstalados que se pueden usar como base para
partir de la configuración de una nueva VPN personal. La instalación y configuración se
explicara más adelante.
3.3.2 Comandos básicos de Linux
Antes comenzar el estudio de Linux, resulta importante tener noción de los comandos que
se utilizan para descargar programas, el cómo configurarlos y definir instrucciones
especificas, dicho comandos se muestran en la siguiente tabla 3.1. Es por ello que en esta
sección se hace mención de los programas más utilizados en este proyecto.
47
Tabla 3.1. Comandos básicos para Linux
Comandos Descripción, ejemplos y comentarios
cd nom_directorio Cambia de directorio cd sólo, va a tu home
cd .. Sube un nivel de directorios Si estabas en /home/usuario/
pasas a /home/
cd - Vas a la ubicación dónde
estabas antes
si desde /home/usuario haces cd
/etc/X11 y luego cd - vuelves a
/home/usuario
cp archivo1 archivo2 Copia archivo1 como archivo2 (nuevo nombre) manteniendo el
original
cp archivo /directorio Copia archivo en directorio manteniendo nombre y el original
echo cadena echo nos muestra en pantalla el texto que le diga
apt-cache search texto
a buscar
Muestra una lista de todos los
paquetes y una breve descripción
relacionado con el texto que hemos
buscado.
apt-cache search Gnome
apt-get dist-upgrade Función adicional de la opción anterior que modifica las
dependencias por la de las nuevas versiones de los paquetes.
apt-get install
nombre_paquete
Instala paquetes. apt-get install Gnome
apt-get remove
nombre_paquete
Borra paquetes. apt-get remove Gnome
Con la opción –purge
borramos tambien la
configuración de los
paquetes instalados.
apt-get update Actualiza la lista de paquetes disponibles para instalar.
apt-get upgrade Instala las nuevas versiones de los diferentes paquetes
disponibles.
ifconfig Obtener información de la configuración de red. || Sintaxis:
ifconfig.
48
mkdir Crea un nuevo directorio. || Sintaxis: mkdir nom_directorio.
ping El comando ping se utiliza generalmente para testear aspectos de
la red, como comprobar que un sistema está encendido y
conectado; esto se consigue enviando a dicha máquina paquetes
ICMP. El ping es útil para verificar instalaciones TCP/IP. Este
programa nos indica el tiempo exacto que tardan los paquetes de
datos en ir y volver a través de la red desde nuestro PC a un
determinado servidor remoto. Sintaxis: ping (maquina).
route El comando route se utiliza para visualizar y modificar la tabla
de enrutamiento. Sintaxis: route (muestra información del
comando route). S
startx Inicia el entorno gráfico(servidor X). Sintaxis: startx.
su o sudo Con este comando accedemos al sistema como root. En Ubuntu
se puede utilizar gksudo mientras en Kubuntu: kdesudo.
Sintaxis: su. T
su root o su passwd
root
Creación del Password de Usuario root (administrador)
Linux es un sistema muy robusto, que usa varios códigos y combinación de los mismos,
para realizar ciertas tareas. En esta tabla únicamente se mencionan los comandos que se
usaron para la instalación y configuración de la VPN. Si se desea conocer otros comandos
se podrá consultar en el anexo A, donde se especifican otros comandos para Linux.
3.3.3 Configuración de dirección IP fija
Para establecer nuestra VPN, se necesita configurar algunos requisitos previos, uno de estos
es que se debe tener configurada una IP estática ó fija.
49
Para llevar a cabo las configuraciones se utilizara el terminal de Linux18
, nos conectamos
con el usuario root o como usuario que tenga permisos de administración (sudo).
Al abrir el terminal, escribimos un comando para saber que IP tenemos actualmente, de esta
forma sabremos los datos que habremos de poner más adelante. Dicho comando es:
Ifconfig
Nos arrojara una pantalla donde aparecen dos interfaces, Eth0 y to. Eth0. Estos datos
muestran la interfaz de la tarjeta de red que vamos a configurar y vemos que se encuentra
configurada como en el siguiente ejemplo:
Todos los sistemas operativos manejan la dirección IP de forma dinámica, es decir, que esta
cambia cada vez que el equipo ingresa a la red, y lo que se pretende es que esta dirección
no cambie. Para lograrlo debemos editar un archivo llamado interfaces ejecutando el
siguiente comando.
nano /etc/network/interfaces
En la pantalla que nos aparece escribimos las direcciones que se piden. Es importante
mencionar que para llevar a cabo esta configuración, se debe ingresar la dirección del
equipo address, esta debe mantenerse utilizando el dato anterior mostrado en la ventana de
ifconfig, es decir, se debe mantener la misma dirección IP pero con la excepción del último
número como se muestra a continuación:
18
Terminal Linux. Ver glosario
inet addr: 192.168.0.10 →Dirección IP que tiene actualmente nuestro pc
bcast: 192.168.0.255 →Dirección de broadcast (sirve para enviar 1 señal a todos los
pcs de nuestra red)
mask: 255.255.255.0 →Mascara de dirección que define en que red o subred estamos.
50
Donde:
Address →Direccion IP que queremos que tenga nuestro ordenador
Netmask →Mascara de subred a la que pertenece, por lo general suele ser 255.255.255.0
Network →Red o subred a la que pertenece, es la misma que la dirección IP pero el último
digito es 0
Gateway →Puerta de enlace, es la dirección IP del router con que nos conectamos a
internet, suele ser la misma que la dirección IP pero el último digito es 1
Una vez que se han ingresado los datos se graba la información presionando
F2+Y+ENTER.
Por último, en algunos casos, es necesario activar la tarjeta de red, por lo que usamos la
siguiente instrucción:
/etc/init.d/networking restart ifup eth0
address 192.168.0.x
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.1
51
3.3.4 Instalación y configuración de OpenVPN para Ubuntu
Como se viene manejando será necesaria la instalación de OpenVPN. Este programa es una
herramienta que ha evolucionado desde su generación incluyendo varias técnicas de
seguridad; es una solución de conectividad basada en software SSL (Capa de Conexión
Segura (Secure Sockets Layer)) para VPN, este protocolo se explicara con más detalle en el
capítulo 4. OpenVPN ofrece conectividad punto-a-punto con validación jerárquica de
usuarios y host conectados remotamente. Resulta ser una muy buena opción en tecnologías
Wi-Fi y soporta una amplia configuración de balanceo de cargas entre otras. Está
publicado bajo la licencia pública general (General Public License (GPL)), de software
libre.
3.3.4.1 Instalación de OpenVPN
Es necesario instalar openVPN en todos los equipos que serán usados en la VPN. Un
equipo se debe configurar como servidor y los demás equipos fungirán como clientes.
Para instalar OpenVPN es necesario ejecutar el siguiente comando:
sudo apt-get -y install openvpn
Por otro lado también se debe instalar OpenSSL, ya que la seguridad se basa en SSL
(Capitulo 4.2). Se debe ejecutar la siguiente instrucción:
sudo apt-get -y install openssl
Una vez que se ejecutan estas instrucciones desde el terminal, se iniciara la descarga de los
programas OpenVPN y OpenSSL. Se mostrara el porcentaje de descarga y posteriormente
se instalaran con sus valores predeterminados.
52
Se necesita que OpenVPN no auto inicie con el sistema, debido que aun no se ha
configurado los valores personalizados, a lo cual ejecutamos la siguiente instrucción para
así tener nuestra aplicación OpenVPN a valores predeterminados y así detener cualquier
proceso que hubiese quedado activo durante la instalación:
sudo nano /etc/default/openvpn
Cuando se instala OpenVPN, este por default ya viene configurado para que se inicie al
encender el equipo de cómputo, esto impide que se puedan modificar valores de
configuración para una nueva VPN, por lo cual será necesario también eliminar el script19
de inicio openvpn, para evitar que openVPN inicie sin configurar; para esto se usa el
siguiente comando:
sudo update-rc.d -f /etc/init.d/openvpn remove
Posteriormente se debe crear el archivo openvpn.conf, el cual llevara toda la configuración
de la VPN.
3.3.4.2 Configuración de openvpn.conf
En Linux, la mayoría de las configuraciones que se dan a las aplicaciones, requieren de una
configuración adicional para su funcionamiento. Dichas configuraciones se realizan en un
archivo.conf, que es un editor de instrucciones específicas, propias de cada aplicación; es
decir, cada programa maneja configuraciones únicas para ejecutar determinadas tareas
especificadas por el usuario.
Para tener una mejor idea de por qué usar ese directorio, se aclara que la mayoría de los
programas que se descargan, son instalados en el directorio:
/etc/(nombre de la aplicación)
19
Script. (Archivo de órdenes o archivo de procesamiento por lotes). Son un conjunto de instrucciones generalmente almacenadas en un
archivo de texto que deben ser interpretados línea a línea en tiempo real para su ejecución
53
De ahí que todas nuestras configuraciones se deben guardar en el directorio donde se
instalo OpenVPN:
/etc/openvpn/
Para crear el archivo.conf, se utilizara el comando siguiente, especificando la ruta donde se
guardara:
sudo nano /etc/openvpn/server.conf
Como se puede observar, nuestro archivo se llamara server.conf y se guardara en la carpeta
openvpn.
Una vez que se ejecuta esta instrucción el sistema nos pide editar el contenido de nuestra
configuración, por lo cual se ingresa la configuración de la nueva VPN:
dev tun
proto tcp
port 1194
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/servidor.crt
key /etc/openvpn/keys/servidor.key
dh /etc/openvpn/keys/dh2048.pem
user nobody
group nogroup
server 10.6.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/clients.txt
status /etc/openvpn/status.txt
persist-key
persist-tun
push "redirect-gateway def1"
push "route 192.168.0.0 255.255.255.0"
keepalive 10 120
verb 3
comp-lzo
max-clients 3
54
Este código permite personalizar algunos parámetros de la VPN, por mencionar algunos
tenemos, permisos para el puerto de acceso, tipo de protocolo, ubicación de los certificados
y la cantidad de equipos que pueden iniciar sesión al mismos tiempo.
En particular, si no se quiere usar la vpn para internet seguro, es decir, navegar de forma
libre, se puede omitir y quitar la línea “redirect-gateway”.
Otros datos que pueden ser modificados son la entidad (ca), el certificado (cert), la llave
(key) y la Diffie Hellman del servidor (dh), los cuales son necesarios para el
funcionamiento de nuestra VPN, es por ello que estos se crearan más adelante.
Analizando el código, encontramos también el rango de ip que usara la VPN. Es necesario
que se use una dirección ip distinta a la dirección ip del mismo equipo dentro de la red real
(dirección ip fija). Esto se puede observar en la siguiente línea de código, establecemos la
dirección 10.6.0.0 del servidor con una mascara 255.255.255.0:
server 10.6.0.0 255.255.255.0
También tenemos que guardar las direcciones asignadas de cada equipo dentro de la red; es
por ello que se debe usar el siguiente comando que se encarga de guardar a quien se le
asigno cada IP en la VPN:
ifconfig-pool-persist ipp.txt
Las asignaciones proto y port (protocolo y puerto), permiten usar protocolo tcp y utp,
siendo más estable tcp, y el puerto puede ser el que mejor convenga para el que lo esté
aplicando, es decir, este se puede cambiar.
Por otro lado, para permitir que se use el mismo certificado y llave en varios clientes al
mismo tiempo, se puede usar la siguiente instrucción para activarlo, de lo contrario, no es
recomendable activarlo:
duplicate-cn
Para nuestro caso se generaran certificados manualmente, por lo que no se activara esta
última instrucción.
55
Como sabemos, es importante que nuestro servidor este siempre disponible, es decir que si
se reinicia, este vuelva a levantar la conexión VPN; es por ello que, cargamos un script que
se encarga de cargar openVPN al iniciar el equipo, se usa para el routing y forwarding20
:
up /etc/openvpn/openvpn.up
Ahora bien, para evitar que los usuarios de la VPN se vean entre si, podemos especificar si
existirá conexión punto a punto de la siguiente manera:
client-to-client
Otra cosa que ayuda a la transmisión de información es la compresión de los datos, esto
ayuda a comprimir todo el tráfico de la vpn:
comp-lzo
Cualquier red presenta errores en la transmisión, en ocasiones es importante saber más
detalle de estos errores, por lo que usamos la siguiente línea para aumentar o disminuir los
detalles de error en el server:
verb 3
Dependiendo cuantos equipos se usen en la organización, podemos especificar la cantidad
máxima de usuarios conectados simultáneamente al servidor, esta se puede aumentar o
disminuir:
max-clients 30
Cuando se trabaja con la VPN, tenemos que obligar a que los clientes a usen la vpn como
Gateway21
, es decir estar en la red detrás del VPN server para poder usar sus datos, sin
embargo, como el servidor será en que comparta la información, se debe tener exclusividad
entre cliente y el servidor, es por esto que se debe tener desactivada client-to-client, esto
se lleva a cabo con los comandos:
20 Routing / Forwarding. Ver glosario 21 Gateway. Ver glosario
56
push route
push "redirect-gateway def1"
3.3.4.3 Inicio del Servidor VPN
Se necesita crear un script para que configure e inicie el servidor de VPN. Ejecutamos la
siguiente línea de comando para crear la configuración:
sudo nano /etc/init.d/vpnserver
Escribimos el código siguiente para cambiar el rango de ip según la configuración de paso
anterior, así como programar que inicie de forma automática; también se prevé que si hay
algún inconveniente y VPN se desconecta, nos permita que este se ejecute nuevamente y
des esta manera que la VPN se mantenga activa:
#!/bin/sh
#
vpnserver_start()
{
echo "VPN Server [OK]"
echo 1 > /proc/sys/net/ipv4/ip_forward
/etc/init.d/networking restart > /dev/null
/sbin/iptables -t nat -A POSTROUTING -s
10.6.0.0/24 -o eth0 -j MASQUERADE
/usr/sbin/openvpn --config
/etc/openvpn/server.conf 2>>
/etc/openvpn/error.txt 1>>
/etc/openvpn/normal.txt &
}
vpnserver_stop()
{
echo "VPN Server [NO]"
/usr/bin/killall "openvpn"
iptables -F
iptables -X
57
Después de crear el inicio del servidor, procedemos a asignarle permisos de ejecutable:
sudo chmod +x /etc/init.d/vpnserver
Ahora bien, se configura para que auto inicie con el sistema al encender:
sudo update-rc.d vpnserver defaults
Después de realizar todo lo anterior, ya tenemos configurado OpenVPN. Ahora tenemos
que activar el modulo TUN22
en el kernel23
, para que todas estas configuraciones sean
22
TUN. Esta interfaz simula que es un dispositivo Ethernet que trabaja sobre la capa 3 del modelo OSI, esta interfaz es ocupada
cuando hacemos un Ruteo dentro de la red de la VPN. Más información en el anexo C. 23
Kernel. Se refiere al núcleo de un sistema operativo
/etc/init.d/networking restart > /dev/null
}
vpnserver_restart()
{
vpnserver_stop
sleep 1
vpnserver_start
}
#
case "$1" in
'start')
vpnserver_start
;;
'stop')
vpnserver_stop
;;
'restart')
vpnserver_restart
;;
*)
vpnserver_start
;;
esac
58
manejadas como predeterminadas para este servidor; se ejecutan estas líneas para que
carguemos las últimas configuraciones como parte del arranque del sistema:
sudo modprobe tun
sudo echo "tun" >> /etc/modules
3.3.4.4 Crear los certificados y llaves de cada usuario
Una información muy importante para trabajar con una VPN de forma segura, es crear los
certificados y llaves de cada usuario, para esto se creara lo siguiente:
Crear Diffie Hellman de 2048bits
Crear la Entidad emisora de certificados.
Crear los Certificados y llaves del servidor.
Crear los certificados y llaves de cada usuario.
Cuando se instala OpenVPN, ya se tiene una entidad creada por default. Para crean nuestra
entidad, copiaremos los ejemplos de easy-rsa que está guardados en la carpeta de openvpn,
esto incluye los certificados, llaves y encriptación, que usara OpenVPN:
sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/
Ahora se debe entrar a la carpeta donde están las utilidades que copiamos y crear la carpeta
keys:
sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/
cd /etc/openvpn/easy-rsa/2.0
sudo mkdir keys
59
Por último nos queda editar el archivo vars que está en /etc/openvpn/easy-rsa/2.0. Para esto
usamos la instrucción:
sudo nano /etc/openvpn/easy-rsa/2.0/vars
Para modificar los valores de este archivo, ejecutamos lo siguiente:
export KEY_DIR="$EASY_RSA/keys"
Se abrirá una ventana donde se permitirá editar la información. Se tiene que cambiar los
datos existentes por lo siguiente, para que así se generara nuestra llave y esta se guarde si o
si, en la siguiente ruta:
export KEY_DIR="/etc/openvpn/easy-rsa/2.0/keys"
Para continuar, se deben modificar los parámetros para Diffie Hellman de 2048bits, para
esto se usara la siguiente instrucción:
export KEY_SIZE=1024
Cuando se abre el editor, se debe cambiar los datos por lo siguiente:
export KEY_SIZE=2048
Solo nos faltan los datos para la entidad emisora, los cuales se irán pidiendo uno por uno.
Los datos se modificaran dependiendo el valor que se pida por los de tu país, provincia,
ciudad, empresa y correo. Por ejemplo, para nuestro caso se usara lo siguiente:
export KEY_COUNTRY="MX"
export KEY_PROVINCE="DF"
export KEY_CITY="MEXICO"
export KEY_ORG="ESIME-VPN"
export [email protected]
60
Como ven MX = México, DF = Distrito Federal; el resto, son la ciudad, organización y
correo.
Después de guardar esta información, necesario especificar los certificados y la entidad que
acabamos de editar para nuestro archivo.vars. Comenzamos con la ejecución del siguiente
comando:
source ./vars
Se nos pedirá que limpiemos todas las entidades previamente guardadas, si es que las
hubiera, así como los certificados y llaves. Para llevar a cabo esto se ejecuta el comando:
./clean-all
En seguida se genera la seguridad Diffie Hellman de 2048bits:
./build-dh
Se continua con la generación de la entidad emisora de certificados, esta pedirá los mismos
datos que cuando se creó el archivos vars (país, ciudad, organización, correo), basta con
volver a capturar los mismos datos o dejar en blanco, ya que no son requisitos
indispensables para continuar. Es recomendable completar cada uno:
./build-ca
Una vez que ya se hizo todo lo anterior, podemos generar lo certificados y llaves. En primer
lugar se genera el servidor, para este ejercicio se usara el nombre de servidor, pero se puede
cambiar por el nombre que gusten que se llame su servidor. Cada certificado pedirá los
mismos datos que los archivos vars, se recomienda completar cada uno. Para crear la llave
del servidor usamos la siguiente instrucción:
./build-key-server servidor
61
Con esto se tiene ya los certificados y llaves de servidor. Lo siguiente es crear los
certificados para el cliente, en nuestro caso usaremos el nombre cliente, pero este se puede
cambiar el nombre que gusten que se llamara el equipo que se conectara al servidor. De
igual manera se pedirá los mismos datos que en el archivo vars. Para crear la llave del
cliente usaremos:
./build-key cliente
En caso de tener varios equipos que tomaran el papel de cliente, este paso se debe repetir
para cada cliente o usuario que quiere conectar a la VPN. Con esto se tiene todo listo para
establecer nuestra conexión VPN.
Ahora para que nuestro servidor tome estos certificados, es necesario copiar los archivos
que generados al lugar que configuramos nuestro openvpn.conf, se debe copiar dentro de la
carpeta:
keys a /etc/openvpn/
para llevar a cabo esta acción, se ejecuta la siguiente instrucción:
sudo cp -R /etc/openvpn/easy-rsa/2.0/keys /etc/openvpn/
Por ultimo, confirmamos que todos los archivos estén en su lugar, accesando al directorio
de openVPN, al ingresar, no taremos que se encuentran todos nuestros certificados:
cd /etc/openvpn/keys
Si los archivos están en su lugar se procede a generar el ejecutable de la llave dentro de
openvpn:
sudo openvpn --genkey --secret ta.key
Una vez que ya se concluyo toda la configuración iniciamos la conexión VPN para probar
que todo esta correcto:
62
sudo /etc/init.d/vpnserver start
Si no hay errores, ya tenemos nuestra VPN funcionando. El paso siguiente seria, configurar
el cliente.
3.3.4.5 Inicio del Cliente VPN
Lo primero que se debe hacer es tomar los certificados que ya se habían creado en el
servidor. Para evitar crearlos de nuevo en el cliente, se pueden copiar en un CD, DVD o
memoria extraíble. Los archivos a copiar serian el ca.crt, cliente.crt, cliente.key. En caso de
haber creado más clientes, se tendría que hacer copia de los crt y key de cada uno y
copiarlos en sus respectivos equipos.
Para configurar un cliente en Ubuntu, al igual que en el servidor, se debe de instalar
OpenVPN y también OpenSSL. Adicionalmente tendremos que instalar la Network
Manager de Ubuntu, esta aplicación nos permitirá simplificar las conexiones de la red ya
sea por medio alámbrico o inalámbrico. Es por ello que usaremos las instrucciones:
sudo apt-get -y install openvpn
sudo apt-get -y install openssl
sudo aptitude -y install network-manager-openvpn
Ahora utilizando un editor de texto (puede ser un block de notas24
), ingresamos el siguiente
código para iniciar la configuración:
24
Block de notas. Es un editor de texto simple incluido en los sistemas operativos de Microsoft desde 1985
63
Para este caso se puede modifican los datos según se lleve a cabo la configuración personal.
En el caso de la IP del servidor, es asignada por nuestro proveedor de internet, es decir, es
una dirección pública o de internet del servidor. El puerto que se tomara, es el mismo que
maneja nuestro servidor, el cual está también asignado en los archivos ca.crt, cliente.crt y
cliente.key, que previamente tenemos copiados en cada uno de los clientes.
Una vez terminada la configuración, se guardan el código con el nombre que se desee, solo
que debe quedar con la extensión .conf en la carpeta openvpn, de la misma forma
procedemos a copiar en la misma carpeta de los archivos ca.crt, cliente.crt y cliente.key en
cada cliente que hayamos configurado.
Ya que tenemos la copia de los certificados y el archivo.conf, abrimos nuestro Network
Manager de Ubuntu y realizamos los siguientes pasos:
1. Ingresamos a la pestaña VPN
2. Utilizando el botón Importar, buscan el archivo.conf que guardamos en la ruta de
openvpn
3. Damos en aceptar y los datos de nuestra VPN se cargaran automáticamente.
client
dev tun
proto tcp
remote IP-DEL-SERVIDOR PUERTO
resolv-retry infinite
nobind
#user nobody
#group nobody
persist-key
persist-tun
ca ca.crt
cert cliente.crt
key cliente.key
comp-lzo
tun-mtu 1500
keepalive 10 120
verb 4
64
Una vez que concluida toda la configuración, iniciamos la conexión VPN y en ese
momento ya tenemos lista la conexión:
sudo /etc/init.d/vpnserver start
3.4 Ensamble de OpenVPN
Para poner en práctica la instalación de openVPN, enlistamos las pruebas que se pretende
realizar durante el procedimiento de configuración, así como la explicación sintetizada de
la misma. Dichas pruebas pueden dividirse en 2 tipos:
1.- Conexión LAN Cliente-Cliente (Host-Host)
2.- Conexión WAN RoadWarrior (Servidor-Cliente (Red-Cliente))
3.4.1 Conexión LAN Cliente-Cliente
Es el método más simple, nos permite encriptar la comunicación entre dos PC’s las cuales
deberán solamente tener conexión; es decir, ambas PC deben poderse enviar paquetes
directamente ya sea porque estén conectadas en la misma red local, o porque ambas estén
conectadas al internet y sean alcanzables entre sí.
En la configuración cliente a cliente (host a host), lo que lograremos es que el intercambio
de paquetes entre dos máquinas se realice de forma encriptada.
Para esto, crearemos una interfaz virtual con una IP privada en cada extremo:
Para el Host A: 172.1.1.1
Para el Host B: 172.1.1.2
65
Estas IP’s tienen que colocarse en el archivo.conf, de configuración del túnel y de esta
manera, cualquier paquete que circule entre el cliente y el servidor vía esas direcciones IP,
viajará encriptado.
3.4.1.1 Generación de clave de encriptación Cliente-Cliente
En el caso de una conexión host a host, podemos sencillamente generar una clave
compartida en el servidor, y copiarla hacia el cliente. Con esta clave se encriptarían los
datos sin mayor problema o inconveniente:
openvpn --genkey --secret secret.key
Este archivo "secret.key" tiene que ser copiado hacia el directorio donde se instalo
openvpn, tanto en el cliente como en el servidor:
/etc/openvpn
cp secret.key /etc/openvpn
scp secret.key 172.1.1.1: /etc/openvpn/
Por lo que el archivo de configuración quedara de la siguiente manera:
Figura 3.13. Configuración de llave del servidor
66
A continuación se menciona la nomenclatura del archivo ilustrado:
local y remote: dirección del dispositivo de túnel
dev tun: se utiliza para este tipo de túnel, pues lo estamos implementando con el protocolo
TCP/IP
ifconfig (ip): Refiere la dirección del server ip del cliente
secret /etc/openvpn/server.key: Es la clave del servidor (llave)
port 5000: Puerto para la conexión
user nobody: Es el usuario bajo el cual ejecutaremos la instrucción
comp-lzo: Opciones para comprimir el tráfico de datos con lzo
Una vez levantemos los dominios en ambos lados, podemos hacer ping hacia la interfaz tun
(10.1.1.1 en el servidor ó 10.1.1.2 en el cliente):
Desde el servidor: ping 10.1.1.2
Desde el cliente: ping 10.1.1.1
Si el ping responde, quiere decir que todo está bien (Fig. 3.14)
Figura 3.14. Ping desde el servidor en 10.1.1.2
67
3.4.2 Conexión WAN RoadWarrior (Servidor-Cliente)
Uno de los métodos más usados. Mediante ésta forma dos redes separadas en el espacio
pueden comunicarse como si estuvieran unidas por un cable virtual. La comunicación entre
ambas redes viajará encriptada una vez salgan de los servidores de openvpn y hasta que
lleguen a su otro extremo al cliente.
Es una de las formas más utilizadas y solicitadas. Es el permitir que una máquina de un
cliente esté fuera de nuestra red (de forma temporal o permanente) y pueda comunicarse
con el servidor openvpn; una vez autenticado, pueda entrar a y acceder los recursos de
nuestra red local.
Esta forma de conexión es la que se configura preferentemente en el servidor openvpn y
previamente se explico en los puntos anteriores. Para el caso práctico necesitamos crear una
serie de claves y certificados iníciales, para poder autenticar y encriptar la información que
transitará desde el servidor hacia los clientes y viceversa.
3.4.2.1 Generación de llaves Conexión WAN RoadWarrior
Contamos con una serie de scripts en el directorio etc/openvpn/easy-rsa, los cuales nos
ayudarán mucho a ejecutar ésta tarea inicial.
Como primer paso, sugerimos copiar ese directorio: easy-rsa
Después lo insertaremos al directorio: /etc/openvpn
Figura 3.15. Copia de easy-rsa en el directorio /etc/openvpn
68
Una vez dentro de éste directorio procedemos a ejecutar los siguientes pasos:
. vars
sh clean-all
sh build-ca
Con ellos lo que haremos es:
1. Inicializar variables de ambiente para poder trabajar con los siguientes scripts de
shell para generar las variables.
2. Inicializamos el directorio de las claves (borrando potenciales archivos viejos).
3. Con build-ca, procedemos a generar el certificado ca.
Figura 3.16. Generar e iniciar certificados
69
En el siguiente, paso se nos pedirá una serie de información sobre nuestra red/empresa que
debemos llenar lo más fielmente posible, como observamos en la figura 3.17:
Figura 3.17. Información necesaria para la generación de certificados
3.4.2.2 Generación del certificado y de la clave de encriptación para el servidor
En esta sección se realizara la generación del certificado de autoridad. Se procederá a crear
el certificado del servidor y de su clave de encriptación: sh build-key-server server
Figura 3.18 Generación del certificado de autoridad
70
En éste paso, también se nos pedirá nuevamente información sobre el certificado propio del
servidor. En éste caso, se pueden usar los mismos datos que se habían ingresado para la
llave de servidor, aunque debemos ingresar un Common Name o un nombre diferente al
anteriormente escogido para mayor seguridad, para nuestro caso usaremos el nombre de
“server”.
Figura 3.19. Certificado del servidor
Ahora bien, al terminar la captura, se crearan dos archivos en el directorio:
/etc/openvpn/easy-rsa/keys/
Dichos archives se copiarán dentro del mismo servidor hacia /etc/openvpn:
server.crt
server.key
71
Estos archivos son nuestros certificados y claves privadas para los clientes. Cada cliente
debe tener su propio certificado y clave de seguridad, para cada cliente que tengamos, por
lo cual, si tenemos más clientes, deberemos repetir este paso.
Una vez que ya obtenidos los certificados, debemos copiarlos hacia el directorio de los
clientes:
/etc/openvpn/
Para generar el certificado y claves privadas ejecutamos en nuestro servidor, dentro del
directorio:
/etc/openvpn/easy-rsa/
Figura 3.20. Creación del certificado y claves privadas para el servidor
Debemos hacer notar que al ejecutar el programa sh build-key, pasamos como parámetro el
nombre del cliente (client1 en el ejemplo anterior), el cual debe ser diferente para cada
cliente. En el common name ponemos el nombre del cliente (client1, en éste ejemplo), si
hubiera más clientes se tendría que tener nombres distintos.
72
Se pueden generar tantas claves como sean necesarias, por ejemplo:
sh build-key client2
sh build-key client3
3.4.2.3 Generación de parámetros de Diffie-Hellman
El protocolo Diffie-Hellman (explicado en el anexo D), permite el intercambio secreto de
claves entre dos partes que no han tenido contacto previo, utilizando un canal inseguro
(como lo es internet), y de manera anónima. Debemos generarlo ejecutando el comado:
sh build-dh
Figura 3.21 Generación del protocolo Diffie-Hellman
73
3.4.2.4 Archivos necesarios para iniciar la VPN
Es necesario copiar algunos archivos al sevidor y otroa al cliente, estos son loque nos
ayudaran a realizar la autenticación para entrar a nuestra VPN, dichos archivos se
mencionan a continuación.
1. Archivos a copiar al servidor:
Hacia el directorio /home/beni/openvpn, del servidor copiamos los siguientes
archivos:
* ca.crt
* ca.key
* server.key
* server.crt
* dh1024.pem
2. Archivos a copiar al cliente:
Hacia el directorio /etc/openvpn, de cada cliente copiamos los siguientes archivos:
* ca.crt
* clientX.crt
* clientX.key
X es un número que se corresponde con el cliente (para el cliente 2 sería: client2.crt y
client2.key por ejemplo).
Estos 3 archivos deben copiarse de forma segura hacia el cliente, mediante algún medio
magnético seguro como un CD o DVD, también podría utilizarse una memoria flash25
. No
deben enviarse por mail puesto que contienen la clave (.key) de encriptación del cliente.
25
Memoria flash. Es un tipo de dispositivo de almacenamiento no volátil y reescribible.
74
Estos archivos están presentes en: /home/beni/openvpn/easy-rsa/keys del servidor.
Una vez que ya se tiene los archivos copiados en sus respectivas carpetas, se procede a
iniciar nuestra VPN utilizando la instrucción:
sudo /etc/init.d/vpnserver start
al igual que la conexión LAN cliente a cliente, al mandar un ping del servidor al cliente y
viceversa, estos estarán comunicándose, permitiendo que se comparta información de
manera segura.
75
Capítulo IV
Open VPN
76
4.1 Licencia GPL
Los programas de ordenador suelen distribuirse con licencias propietarias o cerradas. Estas
licencias son intransferibles y no exclusivas, es decir, no eres propietario del programa, sólo
tienes derecho a usarlo en un ordenador o tantos como permita la licencia y no puedes
modificar el programa ni distribuirlo.
La licencia (General Public License (GPL)), desarrollada por la (Free Software Foundation
(FSF)), es completamente diferente. Puedes instalar y usar un programa GPL en un
ordenador o en tantos como te apetezca, sin limitación. También puedes modificar el
programa para adaptarlo a lo que tú quieras que haga. Además, podrás distribuir el
programa GPL tal cual o después de haberlo modificado, regalando el programa o
vendiéndolo, tu única obligación, es facilitar el código fuente con el programa binario, es
decir, que pueda ser leído por un programador.
Los programas propietarios o cerrados, solo se distribuyen en binario, listos para ejecutarse
en el ordenador.
Un programa GPL es libre, es decir, no es \Cmpartir "shareware\" o \Libre "freeware\",
éstos también puedes conseguirlos en un cd-rom al comprar un revista o descargarlos de
internet, pero no incluyen el código fuente y no tienes permiso para modificarlos, es decir,
no son libres.
77
Los programas distribuidos con licencia GPL tampoco son piratas, no obstante, ofrecen más
derechos a sus usuarios y su sistema abierto hace que los defectos sean detectados y
depurados a gran velocidad con la ayuda de cientos de programadores a través de internet.
4.2 Cifrado Pen SSL/TLS
El protocolo de capa de conexión segura (Secure Sockets Layer (SSL)) y su sucesor
seguridad de la capa de transporte (Transport Layer Security (TLS)) son protocolos
criptográficos que proporcionan comunicaciones seguras por una red, comúnmente internet.
SSL proporciona autenticación y privacidad de la información entre extremos sobre internet
mediante el uso de criptografía. Habitualmente, sólo el servidor es autenticado (es decir, se
garantiza su identidad) mientras que el cliente se mantiene sin autenticar.
Figura 4.1. Cifrado SSL
78
El protocolo SSL/TSL se basa en tres fases básicas:
1. Negociación: los dos extremos de la comunicación (cliente y servidor) negocian que
algoritmos criptográficos utilizarán para autenticarse y cifrar la información.
Actualmente existen diferentes opciones:
Para criptografía de clave pública: RSA26
, Diffie-Hellman, DSA (Digital
Signature Algorithm) o Fortezza.
Para cifrado simétrico: RC2, RC4, IDEA (International Data Encryption
Algorithm), DES (Data Encryption Standard), Triple DES o AES (Advanced
Encryption Standard).
Con funciones hash: MD5 o de la familia SHA.
2. Autenticación y claves: los extremos se autentican mediante certificados digitales e
intercambian las claves para el cifrado, según la negociación anterior.
3. Transmisión segura: los extremos pueden iniciar el tráfico de información cifrada y
autentica.
Este protocolo está muy extendido para realizar actividades de comercio electrónico de tal
manera que Visa, MasterCard, American Express y muchas de las principales instituciones
financieras han aprobado SSL para el comercio sobre internet.
Hay que destacar que SSL/TLS se compone de cuatro protocolos. Estos protocolos
funcionan de manera idéntica en SSL y en TLS pero incorporan algunos detalles en TLS
para su mejor funcionamiento. A continuación se definen estos cuatro protocolos sin entrar
en mucho detalle:
26
RSA. Es el sistema criptográfico más conocido y usado de clave pública desarrollado en 1977 por Rivest, Shamir y Adlman
79
- Record Protocol: Encapsula los protocolos de nivel más alto y construye un canal de
comunicaciones seguro. Se podría decir que es un protocolo de transporte.
- Handshake Protocol: Se encarga de gestionar la negociación de los algoritmos de
cifrado y la autenticación entre cliente y servidor. Define las claves de sesión
utilizadas para cifrar. Se podría decir que es un protocolo de autenticación.
- Change Cipher Spec Protocol: Es un mensaje de un byte para notificar cambios en
la estrategia de cifrado.
- Alert Protocol: Señaliza alertas y errores en la sesión establecida.
Figura 4.2. Situación de SSL/TLS en la pila de protocolos OSI
80
4.3 ¿Por qué Open VPN?
OpenVPN es una solución para la creación de VPN mediante software. Puede obtenerse en
su sitio oficial. Existen varias versiones para distintos sistemas operativos, entre ellos Linux
y Windows. Hablando de Linux, cabe mencionar que numerosas distribuciones lo incluyen
también dentro de sus repositorios, por lo que puede instalarse también a través de las
utilidades de la propia distribución.
Es una solución multiplataforma que ha simplificado mucho la configuración de las VPN's
dejando atrás los tiempos de otras soluciones difíciles de configurar como IPsec y
haciéndola más accesible para gente inexperta en este tipo de tecnología. Su principal
desventaja por el momento es que hay muy pocos fabricantes de hardware que lo integren
en sus soluciones por esta razón lo utilizamos en la plataforma Linux que como hemos
mencionado es fácil de utilizar.
4.4 Características de Open VPN
Es un excelente producto de software creado por James Yonan en el año 2001 y ha estado
en continua mejora desde entonces. Ninguna otra solución ofrece una mezcla semejante de
seguridad a nivel empresarial y riqueza de características. Se encuentra publicado bajo la
licencia GPL, de software libre puede ser usado, copiado, cambiado/mejorado y
redistribuido libremente. No hay que confundirlo con software gratuito ya que no es
obligatorio que todo software libre sea gratuito. Sin embargo OpenVPN también es
gratuito.
Implementa conexiones de capa 2 ó 3 del modelo OSI, usa los estándares de la industria
SSL/TLS27
.
27
SSH/TLS. Transport Layer Security (TLS ) y su predecesor, Secure Sockets Layer (SSL), son protocolos criptográficos que
proporcionan comunicaciones de seguridad a través de internet .
81
4.5 Ventajas de Open VPN
Facilidad de instalación y uso.
Es un software rápido y ágil en su ejecución ya que no necesita grandes recursos de
procesamiento.
Es multiplataforma (Linux, Simbian, Solaris, Mac OS, Windows, etc.).
Seguridad basada en el uso de SSL/TLS para la autenticación.
Diseño modular. Se basa en un excelente diseño modular con un alto grado de
simplicidad tanto en seguridad como red.
Soporta autenticación del cliente utilizando políticas de acceso a usuarios y grupos
específicos, y reglas de firewall aplicadas a las interfaces virtuales usadas por
OpenVPN para el filtrado de paquetes IP.
Trabajar con cifrados simétricos (compartiendo claves) o cifrados asimétricos con
certificados y el intercambio de claves mediante TLS.
Las conexiones OpenVPN pueden ser realizadas a través de casi cualquier firewall.
Si se posee acceso a internet y se puede acceder a sitios HTTPS, entonces un túnel
OpenVPN debe funcionar sin problemas.
Trabaja en el espacio de usuario, de forma que en caso de fallo de un componente,
este contiene dicho fallo, y no permite que el sistema esté en peligro.
Ningún problema con NAT. Tanto los clientes como el servidor pueden estar en la
red usando solamente IPs privadas.
Las Ventajas OpenVPN provee seguridad, estabilidad y comprobados mecanismos
de cifrado sin sufrir la complejidad de otras soluciones VPN como las de IPsec.
Figura 4.3 Logotipos de Open VPN e IPSec VPN
82
4.5.1 Comparación entre Open VPN e IPSec VPN
IPsec OpenVPN
Estándar de la tecnología VPN No compatible con IPsec
Plataformas de hardware
(dispositivos, aparatos)
Solo en computadoras, pero en todos los sistemas
operativos disponibles, ya comienzan a encontrarse
dispositivos que cuentan con OpenVPN
Tecnología conocida y probada Probada y sigue en crecimiento
Muchas interfaces gráficas
disponibles
Sin interfaces gráficas profesionales, aunque ya
existen algunos proyectos prometedores
Modificación compleja del stack IP Tecnología sencilla
Necesidad de modificaciones críticas
al kernel
Interfaces de red y paquetes estandarizados
Necesidad de permisos de
administrador
Ejecuta en el espacio del usuario y puede ser
chroot-ed
Diferentes implementaciones de
distintos proveedores pueden ser
incompatibles entre si
Tecnologías de cifrado estandarizadas
Configuración compleja y tecnología
compleja
Facilidad, buena estructuración, tecnología
modular y facilidad de configuración
Curva de aprendizaje muy
pronunciada
Fácil de aprender e implementar (incluso para
principiantes)
Necesidad de uso de múltiples
puertos y protocolos en el firewall
Utiliza sólo un puerto del firewall
Problemas con direcciones dinámicas
en ambas puntas
Trabaja con servidores de nombres dinámicos
como DynDNS o No-IP con reconexiones rápidas
y transparentes
Problemas de seguridad de las
tecnologías IPsec
SSL/TLS como estándar de criptografía
83
4.6 Seguridad en Open VPN
Para encriptar datos se usan Passwords o claves de encriptación, OpenVPN tiene dos
modos considerados seguros, uno basado en claves estáticas pre-compartidas y otro en
SSL/TLS usando certificados y claves RSA. Cuando ambos lados usan la misma clave
para encriptar y desencriptar los datos, estamos usando el mecanismo conocido como
“clave simétrica” y dicha clave debe ser instalada en todas las máquinas que tomarán parte
en la conexión VPN. Si bien SSL/TLS + claves RSA es por lejos la opción más segura, las
claves estáticas cuentan con la ventaja de la simplicidad.
4.6.1 Encriptación simétrica y claves pre-compartidas
Cualquiera que posea la clave podrá desencriptar el tráfico, por lo que si un atacante la
obtuviese comprometería el tráfico completo de la organización ya que tomaría parte como
un integrante más de la VPN.
Figura 4.4. Encriptación Simétrica
Una buena combinación de tiempo de vida y longitud de la clave asegurarán que un
atacante no pueda descifrar la clave a tiempo, haciendo que cuando finalmente la obtenga
(porque lo hará), ya no le sirva por estar fuera de vigencia.
84
4.6.2 Cifrado asimétrico con SSL/TLS
SSL/TLS usa una de las mejores tecnologías de cifrado para asegurar la identidad de los
integrantes de la VPN, Cada integrante tiene dos claves, una pública y otra privada.
La pública es distribuida y usada por cualquiera para cifrar los datos que serán enviados a la
contraparte quien conoce la clave privada que es imprescindible para descifrar los datos. El
par de clave pública/privada es generado a partir de algoritmos matemáticos que aseguran
que solo con la clave privada es posible leer los datos originales. Si se encontrase un modo
de quebrar la seguridad que estos algoritmos proporcionan, todas las conexiones cuya
integridad depende de ellos se verían potencialmente comprometidas.
Es de destacar que la clave privada debe permanecer secreta mientras que la clave pública
debe ser intercambiada para que nos puedan enviar mensajes.
Figura 4.5. Criptografía Asimétrica
Las bibliotecas SSL/TLS son parte del software Open SSL que viene instalado en cualquier
sistema moderno e implementa mecanismos de cifrado y autenticación basados en
certificados. Los certificados generalmente son emitidos por entidades de reconocida
confiabilidad aunque también podemos emitirlos nosotros mismos y usarlos en nuestra
propia VPN. Con un certificado firmado, el dueño del mismo es capaz de demostrar su
identidad a todos aquellos que confíen en la autoridad certificadora que lo emitió. Para más
información véase el anexo E.
85
4.7 Cómo implementar una política de seguridad
Generalmente, la seguridad de los sistemas informáticos se concentra en garantizar el
derecho a acceder a datos y recursos del sistema configurando los mecanismos de
autentificación y control que aseguran que los usuarios de estos recursos sólo posean los
derechos que se les han otorgado. Los mecanismos de seguridad pueden sin embargo,
causar inconvenientes a los usuarios. Con frecuencia, las instrucciones y las reglas se
vuelven cada vez más complicadas a medida que la red crece. Por consiguiente, la
seguridad informática debe estudiarse de modo que no evite que los usuarios desarrollen
usos necesarios y así puedan utilizar los sistemas de información en forma segura.
Por esta razón, uno de los primeros pasos es definir una política de seguridad que pueda
implementar en función a las siguientes cuatro etapas:
Identificar las necesidades de seguridad y los riesgos informáticos, así como sus
posibles consecuencias
Proporcionar una perspectiva general de las reglas y los procedimientos que deben
implementarse para afrontar los riesgos identificados en los diferentes
departamentos de la organización
Controlar y detectar las vulnerabilidades del sistema de información, y mantenerse
informado en las aplicaciones y en los materiales que se usan
Definir las acciones a realizar y las personas a contactar en caso de detectar una
amenaza
La política de seguridad comprende todas las reglas de seguridad que sigue una
organización (en el sentido general de la palabra). Por lo tanto, la administración de la
organización en cuestión debe encargarse de definirla, ya que afecta a todos los usuarios del
sistema. En este sentido, no son sólo los administradores de informática los encargados de
definir los derechos de acceso sino sus superiores. El rol de un administrador de
informática es el de asegurar que los recursos de informática y los derechos de acceso a
estos recursos coincidan con la política de seguridad definida.
86
4.7.1 Las causas de inseguridad
Inseguridad activa; es decir, la falta de conocimiento del usuario acerca de las funciones del
sistema, algunas de las cuales pueden ser dañinas para el sistema (por ejemplo, no
desactivar los servicios de red que el usuario no necesita).
Inseguridad pasiva; es decir, la falta de conocimiento de las medidas de seguridad
disponibles (por ejemplo, cuando el administrador o usuario de un sistema no conocen los
dispositivos de seguridad con los que cuentan)
La seguridad es un aspecto fundamental para muchas aplicaciones cliente-servidor, siendo
un ejemplo muy importante, por su gran proyección en los últimos tiempos, el negocio
electrónico.
Mediante el uso de SSL/TLS se ha conseguido aumentar el grado de seguridad en dichas
conexiones cliente-servidor, teniendo presente que la idea de "seguridad total" es una
utopía.
Como se ha explicado en esta ampliación el uso de SSL/TLS junto con otras técnicas como
IPSec, cifrado, nos ayudan a mantener la confidencialidad e integridad de los datos durante
la comunicación, protegiendo así datos confidenciales. Aunque no hay que olvidar que los
ataques pueden ser múltiples y cada vez más sofisticados, lo que obliga a una permanente
investigación de mejora de los diferentes protocolos de seguridad, se puede decir que un
uso correcto de estos protocolos nos proporciona un nivel de seguridad bastante aceptable.
87
Conclusiones
Este trabajo surge ante el problema que plantea la falta de seguridad que presentan las
comunicaciones a través de la infraestructura de redes públicas.
Con el crecimiento exponencial de las redes es importante para cualquier organización el
mantener su información accesible y debidamente protegida de tal manera que solo los
usuarios definidos puedan acceder a ella.
A lo largo del proyecto se ha explicado en qué consiste una VPN y el tipo de seguridad que
maneja de tal manera representan una gran solución para las empresas en cuanto a
seguridad, confidencialidad e integridad de los datos a demás de que reduce
significativamente el costo en la transferencia de datos de un lugar a otro, permiten la
comunicación entre dos o más usuarios en lugares geográficamente distintos, mejorando la
productividad y rentabilidad. Es por ello que se opta por una solución basada en software,
entre las distintas implementaciones de esta tecnología, optamos utilizar OpenVPN basado
en el protocolo SSL/TLS en Linux, por las grandes ventajas que ofrece al ser una
herramienta completa y flexible, y por ser de software libre y gratuito, con lo cual no hemos
tenido que afrontar ningún tipo de gasto económico.
La tecnología SSL/TLS constituye sin duda alguna una opción flexible y robusta de
asegurar las comunicaciones a través de la infraestructura de redes públicas. Esperamos que
este documento permita comprender cómo funciona, y cómo se configura, sin demasiada
dificultad, una conexión VPN SSL/TLS mediante OpenVPN.
Las posibilidades de aplicación de una VPN son muchas como es el caso de acceso a
servidores de correo electrónico, bases de datos, sistemas de Planificación de Recursos
Materiales ERP ó archivos compartidos, así como la administración remota de sistemas
externos.
88
No hay solución de seguridad informática que sea 100% inmune a los ataques de usuarios
malintencionados, pero en este trabajo se plantea una propuesta de implementación de un
VPN con la cual existe mayor confianza sobre el resguardo de sus archivos.
Como comentario final indicar que para nosotros ha sido muy motivador y satisfactorio la
totalidad del desarrollo de este trabajo, tanto la fase previa de estudio como su posterior
implantación. Es alentador para cualquier ingeniero comprobar que su proyecto tiene un fin
cultural y útil.
89
Bibliografía
1. Pepelnjak, Ivan. “Arquitectura, VPN y MPLS”. pp 400. Ed. Prentice Hall.
2. CURTIS, Nancy. “Network+ Certification, A CompTIA Certification”. pp 308 –
312. Cuarta Edición. EUA. 2005. Ed. Elementk.
3. Scott, Charly, Wolfe, Paul, Erwin, Mike. “Virtual Private Networks”. Segunda
Edición. Enero 1999. O’Reilly & Associates.
4. William Stallings, “Comunicaciones y Redes de Computadoras”. Séptima Edición,
México, 2004. Pearson Prentice- Hall
5. Molina Robles, Fco. Jose. “Redes de Local”. Segunda Edicion. . 2005. Ed. RA-MA
6. Andrew S. Tanenbaum. “Redes de Computadoras”. Cuarta Edición, México, 2003.
Perarson Prentice – Hall
7. Behrouz A. Forouzan. “Transmisión de datos y redes de comunicaciones”. Cuarta
Edición, Madrid, España 2007. Mc. Graw Hill
8. Tomás Ganovas J.J. “Servicio VPN de acceso remote basado en SSL mediante Open
VPN” Cartagena, 2008. Ganovas
9. Feilnerr M, “OpenVPN Building and Integrating Virtual Private Networks”. 2006.
Packt Publishing.
90
Glosario
ADSL Tecnología de línea de abonado digital asimétrica o ADSL
(Asymmetric Digital Subscriber Line), es una tecnología para
módems, que proporciona un acceso asimétrico y de alta velocidad a
través del par de cobre actualmente instalado en las oficinas y casas de
los usuarios de la RTB o bien de la RDSI, con la cual también es
compatible
Algoritmo de Hash Es una función de resumir o identificar probalísticamente un gran
conjunto de información
Antispyware Es un programa desarrollado para el ámbito de la seguridad
informática, el cual protege a los usuarios de programas maliciosos,
tales como el software espía, spywares, la publicidad no deseada en
nuestro navegador, adwares, pérdida de control sobre nuestro equipo,
hijackers, entre otros malwares.
Antivirus Son programas cuyo objetivo es detectar y/o eliminar virus
informáticos. Nacieron durante la década de 1980
ASP (Active Server Pages) es la tecnología desarrollada por Microsoft para
la creación de páginas dinámicas del servidor. ASP se escribe en la
misma página web, utilizando el lenguaje Visual Basic Scrip o Jscript
(Javescript de Microsoft).
Check Point Es un proveedor global de soluciones de seguridad IT. Conocido por
sus productos Firewall y VPN, Check Point fue el pionero en la
industria con el FireWall-1 y su tecnología patentada de inspección de
estado.
Cifrado Es un procedimiento que utilizando un algoritmo (algoritmo de
cifrado) con cierta clave (clave de cifrado) transforma un mensaje, sin
atender a su estructura lingüística o significado, de tal forma que sea
incomprensible o, al menos, difícil de comprender, a toda persona que
no tenga la clave secreta (clave de descifrado) del algoritmo que se usa
para poder descifrarlo.
Cluster El término cluster se aplica a los conjuntos o conglomerados
de computadoras construidos mediante la utilización de hardwares
comunes y que se comportan como si fuesen una única computadora.
Criptografía La criptografía (del krypto, oculto, y graphos, escribir, literalmente
escritura oculta) son las técnicas, bien sea aplicadas al arte o la
ciencia, que alteran las representaciones lingüísticas de mensajes,
mediante técnicas de cifrado y/o codificado
DES Data Encryption Standard, es un algoritmo de cifrado, es decir, un
método para cifrar información
91
DNS ( Domain Name Service) es un sistema de nombres que permite
traducir de nombre de dominio a dirección IP y vice-versa.
DoS Ataque de Denegación de Servicio (Denial of Service)
EEUU Estados Unidos ó USA
Extranet Es una red privada que utiliza protocolos de internet, protocolos de
comunicación y probablemente infraestructura pública de
comunicación para compartir de forma segura parte de la información
u operación propia de una organización con proveedores,
compradores, socios, clientes o cualquier otro negocio u organización.
Firewall Un corta fuegos (firewall en inglés) es una parte de un sistema o una
red que está diseñada para bloquear o denegar el acceso a personas no
autorizadas a una pc, permitiendo al mismo tiempo comunicaciones
autorizadas.
Gateway Una pasarela o puerta de enlace (del inglés gateway) es un dispositivo,
con frecuencia una computadora, que permite interconectar redes con
protocolos y arquitecturas diferentes a todos los niveles de
comunicación. Su propósito es traducir la información del protocolo
utilizado en una red, al protocolo usado en la red de destino
Hardware Corresponde a todas las partes tangibles de un sistema informático;
sus componentes son: eléctricos, electrónicos, electromecánicos y
mecánicos. Son cables, gabinetes o cajas, periféricos de todo tipo y
cualquier otro elemento físico involucrado; contrariamente, el soporte
lógico es intangible y es llamado software.
Host Un host o anfitrión es un ordenador que funciona como el punto de
inicio y final de las transferencias de datos. Más comúnmente descrito
como el lugar donde reside un sitio web. Un host de internet tiene
una dirección de internet única (direción IP) y un nombre de
dominio único o nombre de host.
HTTP Protocolo de Transferencia de Hipertexto (HyperText Transfer
Protocol)
Imagen ISO Imagen ISO es un archivo donde se almacena una copia o imagen
exacta de un sistema de ficheros, normalmente un disco óptico. Se rige
por el estándar ISO 9660 que le da nombre.
Intranet Es una red de ordenadores privados que utiliza tecnología internet para
compartir dentro de una organización parte de sus sistemas de
información y sistemas operacionales.
IDC International Data Corporation
IP Una dirección IP es una etiqueta numérica que identifica, de manera
lógica y jerárquica, a un interfaz (elemento de
comunicación/conexión) de un dispositivo (habitualmente una
92
computadora) dentro de una red que utilice el protocolo IP (Internet
Protocol), que corresponde al nivel de red del protocolo TCP/IP.
ISAKMP Internet Security Association and Key Management Protocol. es
un protocolo criptográfico que constituye la base del protocolo de
intercambio de claves IKE. Define los procedimientos y formatos de
paquetes para establecer, negociar, modificar y eliminar las SA
(asociaciones de seguridad)
ISP Un proveedor de servicios de internet (o ISP, por la sigla en inglés de
Internet Service Provider) es una empresa que brinda conexión
a internet a sus clientes. Un ISP conecta a sus usuarios a internet a
través de diferentes tecnologías como DSL, Cablemódem, GSM, Dial-
up, Wifi, entre otros. Muchos ISP también ofrecen servicios
relacionados con internet, como el correo electrónico, alojamiento
web, registro de dominios, servidores de noticias, etc.
LAN Una red de área local, red local o LAN (del inglés local area network)
es la interconexión de una o varias computadoras y periféricos. Su
extensión está limitada físicamente a un edificio o a un entorno de 200
metros, con repetidores podría llegar a la distancia de un campo de 1
kilómetro. Su aplicación más extendida es la interconexión
de computadoras personales y estaciones de trabajo en oficinas,
fábricas, etc.
Malware También llamado badware, código maligno, software malicioso o
software malintencionado, es un tipo de software que tiene como
objetivo infiltrarse o dañar una computadora o Sistema de información
sin el consentimiento de su propietario.
MS-DOS Los datos se almacenan en archivos. Cuando se ejecuta un programa,
MS-DOS procesa los datos almacenados en el archivo y los transmite
al sistema.
En MS-DOS, un archivo puede ser de cualquier tamaño, sin embargo,
el nombre del archivo es más restringido, sólo puede tener una
longitud máxima de 8 caracteres y una extensión de 3 caracteres.
NFS Network File System (Sistema de archivos de red). Es un protocolo de
nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas
de archivos distribuido en un entorno de red de computadoras de área
local. Posibilita que distintos sistemas conectados a una misma red
accedan a ficheros remotos como si se tratara de locales.
Paquete Se le llama paquete de red o paquete de datos a cada uno de los
bloques en que se divide, en el nivel de Red, la información a enviar.
PLIP Linea IP paralela (Parallel Line Internet Protocol) es una red de la
computadora protocolo para comunicaciones directas de ordenador a
ordenador de comunicaciones utilizando el puerto paralelo
normalmente se utiliza para conexiones a una impresora.
93
Plug and Play (En español "enchufar y usar") es la tecnología que permite a
un dispositivo informático ser conectado a una computadora sin tener
que configurar, mediante jumpers o software específico (no
controladores) proporcionado por el fabricante, ni proporcionar
parámetros a sus controladores. Para que sea posible, el sistema
operativocon el que funciona el ordenador debe tener soporte para
dicho dispositivo.
Protocolo Son reglas de comunicación que permiten el flujo de información
entre equipos que manejan lenguajes distintos, por ejemplo, dos
computadores conectados en la misma red pero con protocolos
diferentes no podrían comunicarse jamás, para ello, es necesario que
ambas "hablen" el mismo idioma.
PYME Acrónimo de Pequeña y Mediana Empresa
PDA Del inglés Personal Digital Assistant (Asistente Digital Personal)
computador de mano originalmente diseñado como agenda electrónica
(calendario, lista de contactos, bloc de notas y recordatorios) con un
sistema de reconocimiento de escritura.
S-box Defender Es una plataforma de seguridad donde un solo dispositivo puede
albergar toda la seguridad. Entre sus funciones destaca la de proteger
la privacidad de los datos, mantener la integridad del PC y de la red,
filtrar contenidos inapropiados, detener virus y asegurar la vía de
acceso a cualquier red corporativa
Sistema Operativo Un sistema operativo (SO) es un programa o conjunto de programas
que en un sistema informático gestiona los recursos de hardware y
provee servicios a los programas de aplicación, ejecutándose en modo
privilegiado respecto de los restantes
Software Se conoce como software al equipamiento lógico o soporte lógico de
un sistema informático, comprende el conjunto de los
componentes lógicos necesarios que hacen posible la realización de
tareas específicas. Ejemplo: aplicaciones informáticas, procesador de
textos, el sistema operativo, etc.
Spam Correo basura o mensaje basura a los mensajes no solicitados, no
deseados o de remitente no conocido (correo anónimo), habitualmente
de tipo publicitario, generalmente enviados en grandes cantidades
(incluso masivas) que perjudican de alguna o varias maneras al
receptor
Spyware El spyware o programas espías son aplicaciones que recopilan
información sobre una persona u organización sin su consentimiento
ni conocimiento. Estos programas espías suelen robar datos sobre el
usuario para beneficiarse económicamente o simplemente para
utilizarlos con fines publicitarios.
StoneGate El firewall StoneGate dispone de una arquitectura nueva y diferente,
que proporciona un nivel de seguridad de red y continuidad de
94
negocio que las aproximaciones tradicionales no pueden ofrecer. Crea
un perímetro proactivo alrededor de la empresa, previene ataques, y
asegura las comunicaciones de datos con múltiples conexiones
paralelas de redes privadas virtuales (VPN).
Stone Soft Empresa cuya cartera de productos incluye firewall / VPN de los
dispositivos, ISP y los sistemas de SSL VPN
Sun Mycrosystems Es una empresa informática que se dedicaba a vender ordenadores,
componentes informáticos, software y servicios informáticos
TCP/IP TCP/IP es un conjunto de protocolos. La sigla TCP/IP significa
"Protocolo de control de transmisión/Protocolo de Internet".
Representa todas las reglas de comunicación para internet y se basa en
la noción de dirección IP, es decir, en la idea de brindar una dirección
IP a cada equipo de la red para poder enrutar paquetes de datos.
Terminal Terminal o consola de comandos. Es una aplicación que permite
ejecutar una serie de sentencias para acceder a ciertos lugares del
sistema, realizar ciertas tareas o simplemente visualizar reportes
importantes. Es muy similar a la ventana de DOS o CMD de
Windows. Para acceder al terminal de Linux en Ubuntu se necesita
entrar desde la parte superior en Aplicaciones> Accesorios> Terminal.
El terminal es tan poderoso que si tenemos permisos de root (permisos
de superusuario en Linux) podemos dejar que arranque o deje de
funcionar el sistema moviendo, así que hay que tener cuidado con los
permisos.
TI Tecnología de la infamación se entiende como "aquellas herramientas
y métodos empleados para recabar, retener, manipular o distribuir
información. La tecnología de la información se encuentra
generalmente asociada con las computadoras y las tecnologías afines
aplicadas a la toma de decisiones.
Tráfico Es la cantidad de datos enviados y recibidos por los visitantes
Usuario Es la persona que utiliza una computadora, sistema operativos,
servicio o cualquier sistema informático
Virus Es un malware que tiene por objeto alterar el normal funcionamiento
de la computadora, sin el permiso o el conocimiento del usuario.
VPN Red Privada Virtual ó virtual private network
Web Hosting El alojamiento web (en inglés web hosting) es el servicio que provee a
los usuarios de internet un sistema para poder almacenar información,
imágenes, vídeo, o cualquier contenido accesible vía web.
Wireless Es el nombre común que reciben las redes inalámbricas
Wireless LAN(WLAN) Una red de área local inalámbrica, también conocida
como WLAN (del inglés wireless local area network), es un sistema
95
de comunicación de datos inalámbrico flexible, muy utilizado como
alternativa a las redes de área local cableadas o como extensión de
estas. Utiliza tecnologías de radiofrecuencia que permite mayor
movilidad a los usuarios al minimizar las conexiones cableadas
96
Anexos
A. Otros Comandos para Linux
Comando Descripción, ejemplos y comentarios
man comando Muestra el manual de un comando, útil
para aprender a utilizar sus argumentos man man
mc
Explorador de archivos que incluye su
propio editor, mcedit. Es necesario
instalarlo
sudo mc
rm archivo Borra archivo
mkdir nom_directorio Crea directorio nom_directorio
rmdir nom_directorio Borra directorio nom_directorio
killall processname Mata el proceso con ese nombre
cat fichero Muestra el contenido
de un fichero
cat
/home/NOMBRE_USUARIO/YO/prueba.
php
zcat fichero Muestra el contenido de un archivo comprimido (.gz)
zmore fichero Muestra el contenido de un archivo comprimido (.gz)
zless fichero Muestra el contenido de un archivo comprimido (.gz)
file archivo Muestra el tipo de un archivo determinado
type comando Muestra la ubicación del ejecutable perteneciente al comando
indicado
pwd Visualiza el directorio actual o de trabajo
history Muestra el listado de comandos usados por el usuario
(~/.bash_history)
df Muestra el espacio libre en el disco duro
top Muestra los procesos que más CPU consumen en tiempo real, así
como la memoria RAM y swap usada, entre otra información
97
halt Apaga el equipo
reboot Reinicia el equipo
shutdown -h now Apaga el equipo
shutdown -r now Reinicia el equipo
passwd Cambia la contraseña del usuario
addgroup
nombre_grupo
Se utiliza para crear
un grupo nuevo. addgroup Pepito
adduser
nombre_usuario
[nombre_grupo]
Se utiliza para añadir un usuario. En ese momento, no solo se
creará la cuenta del usuario sino también su directorio de trabajo,
un nuevo grupo de trabajo que se llamará igual que el usuario y
añadirá una serie de ficheros de configuración al directorio de
trabajo del nuevo usuario.
adduser Pepito Invitados
history -c Es Utilizado para Borra el Historial de Comandos
alias
nombre_alias=coman
do
En ciertas ocasiones se suelen utilizar comandos que son difíciles
de recordar o que son demasiado extensos, pero en UNIX existe la
posibilidad de dar un nombre alternativo a un comando con el fin
de que cada vez que se quiera ejecutar, sólo se use el nombre
alternativo.
alias instala=apt-get install
at [-lr] hora [fecha] Realiza un tarea programada una sola vez.
bash / sh / ksh / csh Existen varias shells para Unix, Korn-Shell (ksh), Bourne-Shell
(sh), C-Shell (csh),bash.
bg PID Manda un proceso a segundo plano.
cal [[mes] año]. Muestra el calendario.
chattr Cambiar atributos de un fichero. || Sintaxis: chattr atributos
nom_archivo.
chgrp Cambia el grupo al que pertenece el archivo. || Sintaxis: chgrp
nom_grupo nom_archivo.
98
chmod
Utilizado para cambiar la proteción o permisos de accesos a los
archivos. r:lectura w:escritura x:ejecución +: añade permisos -
:quita permisos u:usuario g:grupo del usuario o:otros || Sintaxis:
chmod permisos nom_archivo
chroot Nos permite cambiar el directorio raiz. || Sintaxis: chroot
nom_directorio_raiz.
clear Limpia la pantalla, y coloca el prompt al principio de la misma. ||
Sintaxis: clear.
cmp, diff
Permite la comparación de dos archivos, línea por línea. Es
utilizado para compara archivos de datos. Sintaxis: diff
nom_archivo1 nom_archivo2 / cmp nom_archivo1 nom_archivo2.
crontab
Realizar una tarea programada de forma regular. || Sintaxis:
minuto(0-59) hora(0-23) dia_mes(1-31) mes(1-12) dia_semana(0-
6) comando.
cut
Ttiene como uso principal mostrar una columna de una salida
determinada. La opción -d va seguida del delimitador de los
campos y la opción -f va seguida del número de campo a mostrar.
El “delimitador” por defecto es el tabulador, nosotros lo
cambiamos con la opción -d. Tiene algunas otras opciones útiles. ||
Sintaxis: cut [opciones] nom_archivo.
date Retorna el día, fecha, hora (con minutos y segundos) y año. ||
Sintaxis: date
dd
Copia de un archivo, convirtiendo y formateando acorde a las
opciones. Muy útil para por ejemplo, "quemar" una imagen (.img)
en un pendrive. Sintaxis: dd if=[a_copiar] of=[destino] [opciones]
delgroup Se utiliza para eliminar un grupo. || Sintaxis: delgroup nom_grupo.
deluser
Elimina una cuenta de usuario. La pega de este comando es que no
elimina automáticamente el directorio de trabajo del usuario. ||
Sintaxis: deluser nom_usuario.
dmesg Muestra los mensajes del kernel durante el inicio del sistema. ||
99
Sintaxis: dmesg.
dpkg -reconfigure
(paquetes) Volver a reconfigurar un paquete ya instalado. ||
du Sirve para ver lo que me ocupa cada directorio dentro del
directorio en el que me encuentro y el tamaño total. || Sintaxis: du
eject
Mediante la utilización de este comando se conseguirá la expulsión
de la unidad de CD, siempre y cuando esta no esté en uso. ||
Sintaxis: eject.
env Para ver las variables globales. || Sintaxis: env.
exit
Cierra las ventanas o las conexiones remotas establecidas o las
conchas abiertas. Antes de salir es recomendable eliminar todos los
trabajos o procesos de la estación de trabajo. || Sintaxis: exit.
fg Manda un proceso a primer plano. || Sintaxis: fg PID.
find
Busca los archivos que satisfacen la condición en el directorio
indicado. || Sintaxis: find nom_directorio o nom_archivo
condición.
finger Permite encontrar información acerca de un usuario. || Sintaxis:
finger / finger usuario.
free
Muestra información sobre el estado de la memoria del sistema,
tanto la swap como la memoria física.Tambien muestra el buffer
utilizado por el kernel. || Sintaxis: free.
fsck Para chequear si hay errores en nuestro disco duro. || Sintaxis: fsck
t fs_typo dispositivo.
ftp
Protocolo de Transferencia de Archivos, permite transferir
archivos de y para computadores remotos. || Sintaxis: ftp
maquina_remota. G
gksu nautilus acceso al navegador de archivos con privilegios de root (requiere
contraseña)
grep Su funcionalidad es la de escribir en salida estándar aquellas líneas
que concuerden con un patrón. Busca patrones en archivos. ||
100
Sintaxis: grep [-cilnv] expr nom_archivos.
gzip Comprime solo archivo utilizando la extensión .gz. || Sintaxis: gzip
nom_archivo. H
head
Muestra las primeras lineas de un fichero. || Sintaxis: head -count
nom_archivo. history Lista los más recientes comandos que se han
introducido en la ventana. Es utilizado para repetir comandos ya
tipeados, con el comando !. || Sintaxis: history I
id Numero id de un usuario. || Sintaxis: id
insmod Carga en memoria un módulo. || Sintaxis: insmod J
job Lista los procesos que se están ejecutando en segundo plano. ||
Sintaxis: jobs K
kill
Permite interactuar con cualquier proceso mandando señales.Kill
(pid) termina un proceso y Kill -9 (pid) fuerza a terminar un
proceso en caso de que la anterior opción falle. || Sintaxis: kill
[opciones] PID. L
last Este comando permite ver las últimas conexiones que han tenido
lugar. || Sintaxis: last.
less
Muestra el archivo de la misma forma que more, pero puedes
regresar a la página anterior presionando las teclas “u” o “b”. ||
Sintaxis: less nom_archivo
ln
Sirve para crear enlaces a archivos, es decir, crear un fichero que
apunta a otro. Puede ser simbólico si usamos -s o enlace duro. ||
Sintaxis: ln [-s] nom_archivo nom_acceso.
logout Las sesiones terminan con el comando logout. || Sintaxis: logout.
lpr Imprime un archivo en la impresora predeterminada. || Sintaxis: lpr
-[lista de requerimientos]/ lpr -P nombre_archivo.
ls Lista los archivos y directorios dentro del directorio de trabajo. ||
Sintaxis: ls.
lsattr Ver atributos de un fichero. || Sintaxis: lsattr nom_archivo.
lsmod Muestra los módulos cargados en memoria. || Sintaxis: lsmod. M
101
mail Para enviar/recibir correo a/de otros usuarios de la red, o dentro de
nuestro ordenador. || Sintaxis: mail.
make
Es una herramienta que controla la creación de ejecutables y otros
archivos de un programa a partir de los archivos fuente. || Sintaxis:
make.
man
Ofrece información acerca de los comandos o tópicos del sistema
UNIX, así como de los programas y librerías existentes. || Sintaxis:
man comando.
more
Muestra el archivo en pantalla. Presionando enter, se visualiza
linea por linea. Presinando la barra espaciadora, pantalla por
pantalla. Si desea salir, presiona q. || Sintaxis: more nom_archivo.
mount
En Linux no existen las unidades A: ni C: sino que todos los
dispositivos “cuelgan” del directorio raíz /. Para acceder a un disco
es necesario primero montarlo, esto es asignarle un lugar dentro
del árbol de directorios del sistema. || Sintaxis: mount -t
sistema_de_archivo dispositivo nom_directorio.
mv
Mueve archivos o subdirectorios de un directorio a otro, o cambiar
el nombre del archivo o directorio. || Sintaxis: mv nom_archivo1
…nom_archivoN nom_directorio. N
netstat Muestra las conexiones y puertos abiertos por los que se establecen
las comunicaciones. || Sintaxis: netstat.
nice
Permite cambiar la prioridad de un proceso en nuestro sistema. ||
Sintaxis: nice -n prioridad PID. O Si tienes alguna sugerencia con
ésta letra, coméntalo. P
passwd Se utiliza para establecer la contraseña a un usuario. Sintaxis:
passwd nom_usuario.
poweroff Apagar el ordenador. Sintaxis: poweroff.
ps
Muestra información acerca de los procesos activos. Sin opciones,
muestra el número del proceso, terminal, tiempo acumulado de
ejecución y el nombre del comando. Sintaxis: ps.
102
pstree Muestra un árbol de procesos. Sintaxis: pstree.
pwd Muestra el directorio actual de trabajo. Sintaxis: pwd. Q Si tienes
alguna sugerencia con ésta letra, coméntalo. R
reset
Si observamos que escribimos en pantalla y no aparece el texto
pero al pulsar enter realmente se está escribiendo, o que los colores
o los textos de la consola se corrompen, puede ser que alguna
aplicación en modo texto haya finalizado bruscamente no
restaurando los valores estándar de la consola al salir. Con esto
forzamos unos valores por defecto, regenerando la pantalla.
Sintaxis: reset.
rlogin Conectan un host local con un host remoto. Sintaxis: rlogin
maquina_remota.
rm Remueve o elimina un archivo. Sintaxis: rm nom_archivo.
rmdir Elimina el directorio indicado, el cual debe estar vacío. Sintaxis:
rmdir nom_directorio.
rmmod Descarga de memoria un módulo, pero sólo si no está siendo
usado. Sintaxis: rmmod.
scp
Sirve para hacer una copia segura entre dos ordenadores. La
información viaja encriptada. Sintaxis: scp
usuario@servidor:directorio_servidor directorio_local.
set Para ver las variables de entorno. Sintaxis: set.
sftp
Protocolo de Transferencia de Archivos, permite transferir
archivos de y para computadores remotos. La información viaja
encriptada. Sintaxis: sftp maquina_remota.
sort Muestra el contenido de un fichero, pero mostrando sus líneas en
orden alfabético. Sintaxis: Sort [opciones] nom_archivo
ssh (Secure Shell
Client)
Es un programa para conectarse en una máquina remota y ejecutar
programas en ella. Utilizado para reemplazar el rlogin y rsh,
además provee mayor seguridad en la comunicación entre dos
hosts. El ssh se conecta al host indicado, donde el usuario de
103
ingresar su identificación (login y password) en la máquina
remota, la cual realiza una autentificación del usuario. Sintaxis: ssh
maquina_remota.
tail Este comando es utilizado para examinar las últimas líneas de un
fichero. Sintaxis: tail -count nom_archivo.
tar Comprime archivos y directorios utilizando la extensión .tar.
Sintaxis: tar -[arg] nom_archivo.tar nom_archivo.
telnet Conecta el host local con un host remoto, usando la interfaz
TELNET. Sintaxis: telnet maquina_remota
top
Muestra los procesos que se ejecutan en ese momento, sabiendo
los recursos que se están consumiendo(Memoria,CPU,…).Es una
mezcla del comando uptime,free y ps. Sintaxis: top.
touch Crea un archivo vacio. Sintaxis: touch nom_archivo.
traceroute
Permite determinar la ruta tomada por un paquete para alcanzar su
destino en Internet. Sintaxis: traceroute [opciones] host [tamaño
del paquete]. U
umask
Establece la máscara de permisos. Los permisos con los que se
crean los directorios y los archivos por defecto. Sintaxis: umask a-
rwx,u+rw,g+r.
umount
Establece la máscara de permisos. Los permisos con los que se
crean los directorios y los archivos por defecto. Sintaxis: umask a-
rwx,u+rw,g+r.
unalias Borra un alias. Sintaxis: unalias nom_alias.
uniq
Este comando lee un archivo de entrada y compara las líneas
adyacentes escribiendo solo una copia de las líneas a la salida. La
segunda y subsecuentes copias de las líneas de entrada adyacentes
repetidas no serán escritas. Las líneas repetidas no se detectarán a
menos que sean adyacentes. Si no se especifica algún archivo de
entrada se asume la entrada estándar. Sintaxis: uniq [opciones]
nom_archivo_entrada nom_archivo_salida.
104
uptime Nos indica el tiempo que ha estado corriendo la máquina. Sintaxis:
uptime. V
vi
Permite editar un archivo en el directorio actual de trabajo. Es uno
de los editores de texto más usado en UNIX. Sintaxis: vi
nom_archivo.
view
Es similar al vi, solo que no permite guardar modificaciones en el
archivo, es para leer el contenido del archivo. Sintaxis: view
nom_archivo. W
wc Cuenta los caráteres, palabras y líneas del archivo de texto.
Sintaxis: wc nom_archivo.
whereis Devuelve la ubicación del archivo especificado, si existe. Sintaxis:
whereis nomb_archivo.
who, w
Lista quienes están conectado al servidor, con nombre de usuario,
tiempo de conexión y el computador remoto desde donde se
conecta. Sintaxis: who / w.
whoami Escribe su nombre de usuario en pantalla. Sintaxis: whoami. X
xmessage
Enviar un mensaje al display de otro usuario o al nuestro propio.
Sintaxis: xmessage (mensaje) / export DISPLAY=157.92.49.211:0
xmessage Hola!!. Y
yes Escribe “y” continuamente. Sintaxis: yes. Z Si tienes alguna
sugerencia con ésta letra, coméntalo. Varios
& Añadiendo un & al final del comando haremos que dicho comando
se ejecute en segundo plano. Sintaxis: nom_comando&.
! Repite el último comando colocando la letra con la que comienza
el comando o su número de history. Sintaxis: !.
B. NAT
Corresponde a Network Address Translation. Traducción de Dirección de Red). Se trata de
un mecanismo utilizado por routers IP para intercambiar paquetes entre dos redes que se
105
asignan mutuamente direcciones incompatibles. Consiste en convertir en tiempo real las
direcciones utilizadas en los paquetes transportados. También es necesario editar los
paquetes para permitir la operación de protocolos, que incluyen información de direcciones
dentro de la conversación del protocolo.
C. Controladores virtuales TUN/TAP y VTUN.
En primer lugar es importante conocer los conceptos de controlador de red e interfaz de red.
Controlador de red. Uno o varios archivos que permiten que un S.O. interactúe con
la tarjeta de red del ordenador. Algunos sistemas operativos como Windows suelen
tener una gran base de datos de controladores para poder ser compatibles con
diversos hardwares. Sin embargo a veces es necesario instalar los controladores
propios del fabricante de la tarjeta (a menudo descargables desde la Web de este).
Interfaz de red (o tarjeta de red): Es un tipo de tarjeta (que puede estar integrada en
la placa base del ordenador o ser de expansión) que permite conectar un dispositivo
a una red (desde un ordenador o impresora a un teléfono por ejemplo), permitiendo
compartir así recursos de esta. Cada tarjeta de red tiene un número de identificación
único compuesto por 48 bits (6 octetos) en hexadecimal, llamado dirección MAC
(administradas por el Institute of Electronic and Electrical Engineers (IEEE)). Los
tres primeros octetos del número MAC identifican al fabricante de la tarjeta, y los
tres siguientes el identificador de la propia tarjeta.
OpenVPN utiliza los controladores virtuales TUN/TAP para establecer el túnel entre los
dos extremos. Con una interfaz de red virtual se pueden obtener varias direcciones IP’s con
una sola tarjeta de red física.
Los túneles virtuales TUN/TAP se han incorporado en el kernel de Linux a partir de la
versión 2.4.x. Para versiones anteriores de kernel de Linux, u otros S.O. (excepto
106
Windows) es necesario instalar la herramienta VTUN. Las primeras versiones de OpenVPN
no soportaban Windows, por tanto no se podía instalar esta herramienta. Posteriormente se
desarrolló una nueva herramienta llamada TAP-Win32 que permitiera crear interfaces
virtuales TUN/TAP para Windows.
OpenVPN para implementar una VPN utiliza el espacio de usuario y enlaza una interfaz de
red virtual punto a punto llamada “tun” (normalmente tunX, en el que X es un número), con
otra interfaz de red virtual punto a punto (“tun”) remota, como si fuera una línea dedicada
entre los dos puntos. A una interfaz virtual se le puede aplicar reglas, firewall, rutas, etc.,
como si fuera una tarjeta de red física Ethernet instalada en la máquina. El funcionamiento
del interfaz virtual “tun” es que si desde una máquina se quieren enviar datos a otra,
primero se copian los datos desde el interfaz virtual hasta el socket de red del S.O., se
envían los datos, se reciben en el socket de red del S.O. de la otra máquina, y se pasan los
datos a la interfaz virtual.
Se le llama “tap” cuando trabaja en modo bridge o puente, emulando a un adaptador de red
Ethernet en lugar de una interfaz punto a punto, como si hubiera una red ethernet entre los
dos extremos.
Lo normal es usar el modo tun para enviar tráfico IP, pero si se quiere enviar otro tipo de
tráfico (broadcast, tráfico no IP como Netbios o IPX, etc.) se deberá utilizar el modo tap.
Algunas de las características de la herramienta VTUN son:
Es fácil de usar para crear túneles virtuales en redes TCP/IP, pudiendo implementar
varios tipos de estos túneles con diferentes características de cifrado y compresión.
Permite gran variedad de configuraciones y es muy utilizado para crear VPN.
Soporta compresión de datos mediante las librerías “Zlib” (solo para TCP) y “LZO”
(para TCP y UDP).
107
Permite implementar diferentes tipos de autenticación, cifrado mediante Blowfish
con clave de 128 bits y funciones Hash MD5.
Permite crear túneles utilizando como protocolos de transporte tanto TCP como
UDP.
Está disponible para varios sistemas operativos como Linux, FreeBSD, OpenBSD,
MAC, Solaris, etc.
D. Diffie Hellman.
El protocolo Diffie Hellman desarrollado por Whitfield Diffie y Martin Hellman en 1976,
permite intercambiar claves entre dos extremos en un canal inseguro, de forma anónima.
Este protocolo fue el punto de partida para los sistemas asimétricos. Su seguridad se basa
en la complejidad en el cálculo de sus algoritmos.
A continuación se puede ver como se realiza el cálculo de las claves de ambos extremos y
un ejemplo de ello.
El usuario A escoge un número q primo muy grande, y un número Xa que será la clave
privada y deberá ser tal que Xa<q.
El usuario B escogerá un número p que ha de ser p<q siendo p raíz primitiva de q, y un
número Xb que será la clave privada y deberá ser tal que Xb<q.
Se dice que p es raíz primitiva de q si las potencias de p generan todos los enteros desde 1
hasta q-1:
p mod q
p^2 mod q
…
108
p^(q-1) mod q
A enviará a B su número q, y B enviará a A su número p. El envío es público, y por tanto
visible para cualquiera.
Ahora se generarán las claves públicas de usuario:
A calculará su clave pública Ya de la siguiente forma:
Ya = p^Xa mod q
B calculará su clave pública Yb de la siguiente forma:
Yb = p^Xb mod q
Ahora A enviará a B su clave pública Ya, y B enviará a A su clave pública Yb.
El envío es público, y por tanto visible para cualquiera.
Una vez ambos usuarios tienen la clave pública del otro extremo, calculan la clave
compartida que usarán.
El usuario A calcula:
K = (Yb)^Xa mod q
Y el usuario B calcula:
K = (Ya)^Xb mod q
Este número K es idéntico en los dos usuarios. K es la clave simétrica que comparten
ambos usuarios, y que pueden usar para establecer una comunicación cifrada.
Se puede hacer una comprobación de K de la siguiente forma:
(Yb)^Xa mod q = (p^Xb)^Xa mod q = p^(Xb*Xa) = (p^Xa)^Xb mod q = Ya^Xb
mod q
109
E. SSL/TLS
E.1. Introducción
Antes de comenzar a explicar este punto, es importante definir el concepto de criptografía.
Su origen griego significa escritura oculta, y es la ciencia de cifrar y descifrar información
utilizando técnicas especiales que permiten que los mensajes sean leídos sólo por las
personas a las que realmente van dirigidos. Estas personas, disponen de los medios
adecuados para descifrarlo, ya sea por cifrado simétrico o asimétrico.
E.2 Protocolos.
Algunos protocolos que usan los cifrados simétricos o asimétricos son:
• DSS (Digital Signature Standard) con el algoritmo DSA (Digital Signature
Algorithm)
• PGP
• SSH
• SSL, ahora un estándar del IETF
• TLS
Herramientas como PGP, SSH o la capa de seguridad SSL para la jerarquía de protocolos
TCP/IP utilizan un híbrido formado por la criptografía asimétrica para intercambiar claves
de criptografía simétrica, y la criptografía simétrica para la transmisión de la información.
El protocolo TLS es una mejora de otro protocolo anterior llamado SSL. Se comenta
brevemente este último para comprender mejor a su sucesor, TLS. El protocolo SSL,
permite establecer una conexión segura por medio de un canal cifrado entre un cliente y un
servidor, lo que posibilita que la comunicación se realice en un entorno seguro. Su diseño
está basado en poder trabajar de una manera modular (extensible), con compatibilidad total
110
entre sus versiones (anteriores y posteriores), y negociación entre las partes (peer-to-peer).
Normalmente, el servidor es el único que es autenticado, asegurando así su identidad, pero
el cliente se mantiene sin autenticar, ya que para la autenticación mutua se necesita una
infraestructura de claves públicas o PKI para los clientes. Permite prevenir escuchas
secretas (termino conocido en inglés como eavesdropping), evita la suplantación de
identidad del emisor y mantiene la integridad del mensaje.
La versión 3.0 de SSL fue desarrollada por Netscape en el año 1996 y sirvió de base para
desarrollar la versión 1.0 de TLS, protocolo estándar IETF definido en el RFC 2246. Cabe
comentar que un RFC es un documento con una propuesta oficial para un nuevo protocolo
de Internet, en el que se explica con todo detalle. Si resulta lo bastante interesante para la
IETF (Internet Engineering Task Force _ Grupo de Trabajo en Ingeniería de Internet, que
es una organización internacional abierta de normalización con el objetivo de contribuir a la
ingeniería de Internet) que puede llegar a convertirse en un estándar de Internet.
Las primeras implementaciones de SSL sólo podían usar claves simétricas de 40 bits como
máximo, ya que el gobierno de los EEUU imponía restricciones sobre la exportación de
tecnología criptográfica. Esta clave era de 40 bits ya que las agencias de seguridad nacional
americanas podían atacarla mediante fuerza bruta y poder leer así el tráfico cifrado,
mientras que los posibles atacantes con menores recursos no podrían leerlo. Tras la
aparición de mejores productos criptográficos diseñados en otros países, se rebajaron las
restricciones de exportación de tecnología criptográfica que finalmente desembocó en la
desaparición casi por completo la limitación. Hoy día se usan claves de 128 bits, o incluso
de más, para las claves de cifrado simétricas.
E.3 Descripción
El protocolo SSL/TSL se basa en tres fases:
111
E.3.1 Negociación
Los extremos de la comunicación (cliente y servidor) negocian los algoritmos
criptográficos que utilizarán para autenticarse y cifrar la información. Las opciones
disponibles son:
• Criptografía de clave pública: RSA, Diffie-Hellman, DSA (Digital Signature
Algorithm) o Fortezza.
• Cifrado simétrico: RC2, RC4, IDEA (International Data Encryption Algorithm),
DES (Data Encryption Standard), Triple DES o AES (Advanced Encryption
Standard).
• Con funciones hash: MD5 o de la familia SHA.
E.3.2 Autenticación y claves
Según la negociación anterior, se realiza la autenticación mediante certificados digitales y
se intercambian las claves para el cifrado.
E.3.3 Transmisión segura
Comienza el tráfico de información cifrada y segura entre ambos extremos de la
comunicación.
E.4. Objetivo del protocolo TLS.
A continuación se detallan:
Seguridad criptográfica. El protocolo se debe emplear para establecer una
conexión segura entre emisor y receptor.
112
Interoperabilidad. Aplicaciones distintas deben poder intercambiar parámetros
criptográficos sin necesidad de que ninguna de las dos conozca el código de la otra.
Extensibilidad. El protocolo permite la incorporación de nuevos algoritmos
criptográficos.
Eficiencia. Los algoritmos criptográficos son computacionalmente costosos, por lo
que el protocolo incluye un esquema de cache de sesiones para reducir el número de
sesiones que deben inicializarse desde cero (usando criptografía de clave pública).
E.5 Funcionamiento del protocolo TLS
El protocolo está dividido en dos niveles:
• Protocolo de registro TLS (TLS Record Protocol).
• Protocolo de mutuo acuerdo TLS (TLS Handshake Protocol).
El de más bajo nivel es el Protocolo de Registro, que se implementa sobre un protocolo de
transporte fiable como el TCP. Un protocolo de bajo nivel controla el acceso al medio
físico, lo que se conoce como MAC (Media Access Control) y, además, parte del nivel de
transmisión de datos, ya que se encarga también de las señales de temporización de la
transmisión. El protocolo proporciona seguridad en la conexión con dos propiedades
fundamentales:
La conexión es privada. Para encriptar los datos se usan algoritmos de cifrado
simétrico. Las claves se generan para cada conexión y se basan en un secreto
negociado por otro protocolo (como el de mutuo acuerdo). El protocolo también se
puede usar sin encriptación.
La conexión es fiable. El transporte de mensajes incluye una verificación de
integridad.
113
El Protocolo de mutuo acuerdo, proporciona seguridad en la conexión con tres propiedades
básicas:
La identidad del interlocutor puede ser autentificada usando criptografía de clave
pública. Esta autentificación puede ser opcional, pero generalmente es necesaria al
menos para uno de los interlocutores.
La negociación de un secreto compartido es segura.
La negociación es fiable, nadie puede modificar la negociación sin ser detectado por
los interlocutores.
Esquema de operación del protocolo de mutuo acuerdo (TLS Handshake Protocol), Fig.E.1.
Figura E.1. Intercambio de datos utilizando TLS/SSL.
La comunicación entre los nodos CLIENTE y SERVIDOR se basa en el intercambio de
mensajes. En cada mensaje existe un campo (content_type) donde se especifica el protocolo
114
de nivel superior utilizado. Estos mensajes pueden ser comprimidos, cifrados y
empaquetados con un código de autentificación del mensaje (MAC).
E.6. Ejemplos
E.6.1 Aplicaciones
El protocolo SSL/TLS se ejecuta en una capa entre los protocolos de aplicación como:
• HTTP sobre SSL/TLS es HTTPS, ofreciendo seguridad a páginas WWW para
aplicaciones de comercio electrónico, utilizando certificados de clave pública para
verificar la identidad de los extremos. Visa, MasterCard, American Express y muchas
de las principales instituciones financieras han aprobado SSL para el comercio sobre
internet.
• SSH utiliza SSL/TLS por debajo.
• SMTP y NNTP pueden operar también de manera segura sobre SSL/TLS.
• POP3 e IMAP4 sobre SSL/TLS son POP3S e IMAPS.
También se puede ejecutar sobre el protocolo de transporte TCP, que forma parte de la
familia de protocolos TCP/IP. SSL también puede ser usado para tunelar una red completa
y crear una red privada virtual (VPN), como en el caso de OpenVPN.
E.6.2 Estándares
• La primera definición de TLS apareció en el RFC 2246: "The TLS Protocol Versión
1.0" (El protocolo TLS versión 1.0) y está basada en la versión 3.0 de SSL, siendo
prácticamente equivalentes. Posteriormente se extendió dicha definición.
115
• RFC 2712: "Addition of Kerberos Cipher Suites to Transport Layer Security
(TLS)". Aparecen las familias de cifrados de 40 bits definidas, para advertir que ya
han sido asignadas.
• RFC 2817: "Upgrading to TLS Within HTTP/1.1". Explica cómo usar el mecanismo
de actualización en HTTP/1.1 para iniciar TLS sobre una conexión TCP existente,
permitiendo al tráfico seguro e inseguro HTTP compartir el mismo puerto.
• RFC 2818: "HTTP Over TLS". Diferencia el tráfico seguro e inseguro HTTP
usando un puerto de servidor diferente.
• RFC 3268: "AES Ciphersuites for TLS". Añade la familia de cifrado AES.
• RFC 3546: "Transport Layer Security (TLS) Extensions". Añade un mecanismo
para negociar extensiones de protocolos durante la inicialización de sesión y define
algunas extensiones.
• RFC 4279: "Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)".
Añade tres conjuntos de nuevas familias de cifrados para que el protocolo TLS
permita la autenticación basada en claves previamente compartidas.
E.6.3 TLS 1.1.
Es la última versión aprobada del protocolo TLS. Es muy parecida a la versión anterior
(TLS 1.0), pero la principal diferencia es la modificación del formato para el cifrado RSA
anterior al uso de 'master secret', que es parte del mensaje de intercambio de claves del
cliente (si se usa RSA). En TLS 1.0 se usaba la versión 1.5 de PCK#1, pasando a usar ahora
la versión 2.1. Con este cambio se consigue protección ante ataques descubiertos por
Daniel Bleichenbacher que podían lanzarse contra servidores TLS 1.0, usando PKCS#1
versión 1.5. También se incluyen recomendaciones para evitar ataques remotos
programados. TLS 1.1 está actualmente implementado en el navegador Opera y en
GnuTLS.