3 Seguridad en redes (internet)
3.1 Criptografía en las redes
En función del punto en donde se aplique la criptografía
en una comunicación de red se distinguen dos grandes grupos:
-
cifrado extremo a extremo: se cifra a nivel de aplicación.
Por ello la técnica de cifrado dependerá del programa y éste
será quién corra con los procesos criptográficos.
El programa enviará y recibirá mensajes cifrados. Ejemplos
de esta modalidad son el SSL (Secure Sockets Layer), el TLS, el SMIME y
el PGP (Pretty Good Privacy)
-
cifrado de enlace: se cifra a nivel de red. En este caso los procesos
criptográficos corren a cargo de la parte de red del sistema operativo.
El cifrado es por tanto completamente transparente a las aplicaciones las
cuales reciben y envían información no cifrada. Ejemplos
de esta modalidad son el IPSEC y aquellas técnicas criptográficas
que implementan, de forma propietaria, hardware de red específico
de algunos fabricantes.
3.1.1 SMIME
SMIME es la extensión del MIME aplicada a la criptografía.
Todo mensaje MIME está formado por una cabecera que indica la
versión MIME, el tipo de contenido y la codificación de dicho
contenido. Se vale de los objetos pkcs#7 para el transporte de la información.
Un mensaje cifrado y codificado en MIME tendrá la siguiente
forma:
-
Cabecera Email
-
Cabeceras habituales de un mensaje de correo electrónico
-
Cabecera MIME
-
MIMEVersion: 1.0
-
Content-Type: application/x-pkcs7-mime
-
Content-transfer-encoding: base64
-
Cuerpo del mensaje : objeto pkcs#7 codificado en base64
A la hora de generar un mensaje firmado utilizando mime tenemos dos opciones:
incluir mensaje y firma dentro de un objeto pkcs#7 o incluir por una parte
el mensaje y por otra el objeto pkcs#7 con la firma.
Recordando que el objeto de la firma es el de poder comprobar la integridad
del mensaje elegiremos la segunda forma, ya que resulta imprescindible
que el mensaje se pueda leer en cualquier agente de correo, y si el agente
incorpora algún módulo criptográfico para comprobar
la firma entonces ésta será comprobada.
3.1.1.1 Tipos de objetos SMIME:
-
data: objeto pkcs#7 con cualquier tipo de información
-
signed-data: objeto pkcs#7 con información firmada
-
enveloped-data: objeto pkcs#7 con información cifrada
-
signed-and-enveloped-data: objeto pkcs#7 con información
firmada y cifrada
3.1.2 SSL
Propósitos del SSL:
-
confidencialidad
-
autentificación del servidor
-
autentificación del cliente (opcionalmente)
El SSL se ha pensado para proteger al cliente.
3.1.2.1 Funcionamiento del SSL:
-
El servidor tiene un par de llaves (pública y privada, utilizando
X509)
-
Durante el establecimiento de la conexión cliente y servidor negocian
qué protocolos criptográficos van a utilizar.
-
Una vez puestos de acuerdo el servidor manda su certificado al cliente.
-
El cliente comprueba la firma del certificado utilizando la clave pública
de la autoridad certificadora. A continuación comprueba que el certificado
es válido y extrae la clave pública del certificado.
-
A continuación hay que verificar que el servidor tiene la clave
privada. Para ello el cliente cifra con la clave pública del servidor
una llave de sesión aleatoria. Y se la envía al servidor.
-
Si el servidor es capaz de descifrar la llave de sesión y el cliente
comprueba este hecho, entonces la sesión cifrada ya estará
establecida.
-
Opcionalmente el servidor puede pedir la autentificación del cliente.
El cliente entonces envía su certificado al servidor y se comprueba
que el cliente tenga la clave privada lanzando un reto.
3.2 Autentificación en Apache
Apache es un servidor web muy difundido en el mundo Unix.
Las políticas de seguridad se pueden definir tanto desde los
archivos de configuración del servidor como directorio a directorio
de forma individual, utilizando para ello los archivos .htaccess
De forma esquemática se puede autentificar por los siguientes
métodos:
-
autorización según IP del cliente: deny / allow
-
autentificación HTTP: la página requerirá al usuario
un login/password.
-
autentificación SSL: directiva SSL. Configura los requerimientos
del módulo mod_ssl. Esta opción habilita el soporte SSL para
el servidor.
En la documentación del servidor apache (http://httpd.apache.org/)
y del mod_ssl (http://www.modssl.org/)
podemos encontrar la información relacionada con las directivas
de seguridad soportadas.
3.3 Amenazas en la red
-
sniffing: un atacante escucha una comunicación establecida
a través de la red. La solución pasa por cifrar las comunicaciones
o utilizar hardware específico que las cifre. El sniffing resulta
trivial en redes cuya estructura física sea en bus (aunque para
que resulte efectivo el tráfico no deberá de estar cifrado).
-
spoofing: suplantación de la identidad -> ataque a la autenticidad.
Algunas de las posibles soluciones son cuidar las contraseñas o
utilizar la firma electrónica.
-
hijacking: suplantación de una conexión una vez establecida
y autentificada entre A y B, C suplanta a A. Para proteger de esta amenaza
se utilizarán conexiones cifradas con transmisión segura
de la contraseña. Periódicamente se podrá lanzar un
reto para detectar la presencia de hijackign tal y como hace el protocolo
CHAP del PPP.
-
denial of Service (DoS) (denegación de servicio): consiste
en atacar un punto de la red de forma que los servicios que presta dejen
de funcionar. Este ataque va muy relacionado con los fallos de diseño
de la arquitectura.
-
intrusión: ataque a un servidor para utilizarlo sin autentificación.
Va muy relacionado con los fallos de software.
3.4 Cortafuegos
La misión del cortafuegos (o firewall) es la de establecer una barrera
entre dos puntos de la red.
Su misión típica es la de proteger una red corporativa
del exterior.
Los cortafuegos realizan su misión filtrando el tráfico
de red a nivel de paquete. Así mismo ejercen funciones de denegación
de servicios y de proxy.
Al regular el tráfico entre dos, o más redes, el cortafuegos
debe decidir qué paquetes debe de reenviar. Para ello utilizará
las reglas de reenvío (forwarding)
Si la máquina que ejerce de cortafuegos presta además
servicios, se deberán de configurar las reglas de entrada
(input) y las reglas de salida (output).