Actualizado el 10 de Abril del 2020 (Publicado el 8 de Mayo del 2017)
1.136 visualizaciones desde el 8 de Mayo del 2017
247,9 KB
10 paginas
Creado hace 19a (13/01/2006)
Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores | Bergantells Usuaris de GNU/Linux de Mallorca i Afegitons
VPN con KAME IPsec y kernel 2.6 (1038 lectures)
Per Jaume Sabater, Primetime (http://www.linuxsilo.net/)
Creado el 07/01/2006 17:21 modificado el 07/01/2006 17:21
Este tutorial pretende mostrar cómo montar una VPN (del inglés, Virtual Private Network) entre dos máquinas usando la
implementación KAME IPSec(1) disponible en la rama 2.6 del kernel de Linux(2). Paso a paso se configurará una VPN en
modo túnel entre dos puertas de enlace usango IPSec(3), Racoon(4) y una clave compartida (del inglés, Shared Secret o
Shared Key). En este tutorial se ha escrito a partir de una VPN montada entre dos máquinas con Debian GNU/Linux(5)
Sarge y se ha usado Netfilter/IPtables(6) para el filtrado.
Índice
. 1 Introducción
. 2 Instalación y configuración de una VPN
. 3 Configuración de una VPN en modo túnel
. 4 Sobre los algoritmos de cifrado y autenticación
¿Qué es la criptografía?
¿Qué es la criptografía de clave secreta?
¿Qué es la criptografía de clave pública?
¿Qué es Diffie-Hellman?
¿Qué son SHA y SHA-1?
¿Qué son MD2, MD4 y MD5?
. 5 Bibliografía
. 6 Historial de revisiones
Introducción
IPSec puede operar de dos maneras diferentes:
1. Modo túnel (del inglés, Tunnel mode). El propósito de este modo es establecer una comunicación segura entre dos redes remotas sobre
un canal inseguro. Por ejemplo:
LAN A
Gateway A
Canales IPSec
Internet
Canales IPSec
Gateway B
LAN B
IPSec en modo túnel entre las dos puertas de enlace A y B
2. Modo transporte (del inglés, Transport mode). El propósito de este modo es establecer una comunicación segura punto a punto, entre
dos hosts y sobre un canal inseguro. Por ejemplo:
Cliente
Canales IPSec
Dial-up
Canales IPSec
Internet
Canales IPSec
Servidor
IPSec en modo transporte entre un host cliente y uno servidor
Normalmente las VPNs se configuran en modo túnel.
IPsec funciona a partir de dos bases de datos:
. 1 SPD (Security Policy Database, en inglés Base de datos de políticas de seguridad). Estas políticas le dicen a IPSec cuando debe o
no debe actuar sobre un paquete IP.
. 2 SAD (Security Association Database, en inglés Base de datos de asociaciones de seguridad). Estas asociaciones le dicen a IPSec
cómo debe crear el canal entre las dos máquinas.
Una SP o política de seguridad (del inglés, Security Policy) está formada, básicamente, por lo siguientes aspectos:
Rango de direcciones de origen. Si la dirección de origen del paquete está dentro de este rango, entonces...
Rango de direcciones de destino. Si la dirección de destino del paquete está dentro de este rango, entonces...
Protocolo de alto nivel. Si el protocolo del paquete es tcp, udp, icmp, cualquiera, entonces...
Política que se aplicará. Que consta de la dirección del canal a crear (entrada o salida) y la acción a tomar (discard, none o ipsec).
En el caso de aplicarse la política ipsec sobre el paquete, deberán especificarse los siguientes datos:
Protocolo IPSec a usar: ah, esp o ipcomp.
Modo IPSec que se usará (túnel o transporte). En el caso de túnel se deberán especificar las direcciones IPs de inicio y fin del
mismo.
Nivel IPSec:
default: nivel estándar.
use: usar una asociación de seguridad (SA) sólo si está disponible, o darle al paquete el tratamiento habitual en su defecto.
require: el uso de la asociación de seguridad es obligatorio para que se envíe el paquete.
Nota: si no hay una asociación de seguridad disponible, el kernel solicita una negociación de asociación de seguridad al demonio IKE
(racoon).
Una asociación de seguridad (SA) está formada principalmente por los siguientes aspectos:
Dirección IP de origen.
Dirección IP de destino.
Protocolo IPSec que debe usarse: ah, esp o ipcomp.
Índice numérico (SPI, del inglés Security Parameter Index).
Modo del protocolo: tunnel, transport o any (cualquiera de los dos).
Algoritmos:
Autenticación y la clave
Cifrado y la clave
Cifrado y autenticación con las claves
Compresión
Nota: las asociaciones de seguridad (SA) sólo pueden usarse si están asociadas con una política, y esta asociación sólo puede establecerse
si existe una política cuyas reglas tengan los mismos parámetros que la asociación de seguridad (SA). Aún así, puede haber una política
de seguridad (SP) funcional sin una asociación de seguridad (SA) en uno de los dos casos siguientes:
. 1 Cuando la política de seguridad (SP) tiene el tipo none o discard y no haya ninguna asociación de seguridad (SA) que usar, pues
. 2 Cuando la asociación de seguridad (SA) sea creada dinámicamente por el demonio IKE (racoon).
IPSec no será aplicado.
Instalación y configuración de una VPN
Antes de seguir deberemos asegurarnos de que tenemos un kernel 2.6 instalado y funcionando. Si es así, los siguientes paquetes deberían
estar ya instalados:
cramfsprogs: Tools for CramFs (Compressed ROM File System)
dash: The Debian Almquist Shell
initrd-tools: tools to create initrd image for prepackaged Linux kernel
module-init-tools: tools for managing Linux kernel modules
A continuación se listan las opciones específicas del kernel que son necesarias para la VPN. Estas opciones activarán sus dependencias
pero, de todos modos, se considera que el usuario ya tiene un kernel 2.6 con iptables funcionando.
Cryptographic options
MD5 digest algorithm
SHA1 digest algorithm
DES and Triple DES EDE cipher algorithms
Blowfish cipher algorithm
AES cipher algorithms (i586)
Deflate compression algorithm
CRC32c CRC algorithm
Device Drivers: Networking support: Networking options
PF_KEY sockets
IP: AH transformation
IP: ESP transformation
IP: IPComp transformation
IP: tunnel transformation
IPsec user configuration interface
Device Drivers: Networking support: Networking options: Network packet filtering (replaces ipchains): IP: Netfilter Configuration
IP tables support (required for filtering/masq/NAT)
AH/ESP match support
Packet filtering
MASQUERADE target support
En el fichero /usr/src/linux/.config serían las siguientes opciones:
# Networking options
CONFIG_NET_KEY=y
CONFIG_INET_AH=y
CONFIG_INET_ESP=y
CONFIG_INET_IPCOMP=y
CONFIG_INET_TUNNEL=y
# IP: Netfilter Configuration
CONFIG_IP_NF_IPTABLES
CONFIG_XFRM_USER
CONFIG_IP_NF_MATCH_AH_ESP
CONFIG_IP_NF_FILTER
CONFIG_IP_NF_TARGET_MASQUERADE
# Cryptographic options
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_BLOWFISH=y
CONFIG_CRYPTO_AES_586=y
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_CRC32C=y
Si, tras finalizar de leer el artículo, estamos seguros de que sólo vamos a usar un algoritmo de cifrado, por ejemplo Blowfish y no DES o
AES, entonces obviamente el segundo no será necesario. De todos modos, el autor recomienda seleccionar todas las opciones para que
cuando queramos cambiar de algoritmo no tengamos que recompilar el kernel y reiniciar la máquina.
Los paquetes necesarios para instalar y configurar una VPN con KAME IPSec sobre kernel 2.6 son los siguientes:
ipsec-tools: IPsec tools for Linux
racoon: IPsec IKE keying daemon
iproute: Professional tools to control the networking in Linux kernels
iptables: Linux kernel 2.4+ iptables administration tools
Nota: durante la instalación del paquete racoon elegiremos el método de configuración directo.
Asimismo, se recomienda la instalación de los siguientes paquetes:
dnsutils: Clients provided with BIND
tcpdump: A powerful tool for network monitoring and data acquisition
ntpdate: The ntpdate client for setting system time from NTP servers
Por lo tanto, como root, ejecutaremos:
apt-get install ipsec-tools racoon iproute iptables dnsutils tcpdump ntpdate
Con el kernel 2.4 de Linux(7) y FreeS/WAN(8), la asociación del tráfico cifrado y las zonas se hacía fácil gracias a la presencia de
pseudointerfaces con nombres del estilo ipsecn (p.e. ipsec0). El tráfico cifrado saliente era enviado a través de un dispositivo ipsecn
mientras que el tráfico cifrado entrante llegaba desde un dispositivo ipsecn. La implementación introducida en el kernel 2.6(9) prescinde
de estas pseudointerfaces. El tráfico saliente que va a ser cifrado y el tráfico entrante que debe ser descifrado deben compararse con las
políticas en la SPD (del inglés, Security Policty Database) o de la SA (del inglés, Security Association) apropiada.
Configuración de una VPN en modo túnel
Supongamos que nos interesa que las máquinas de la subred local 192.168.0.0/24 sean capaces de comunicarse con los de la subred local
192.168.1.0/24. Ambas redes locales acceden a internet mediante sendas puertas de enlace 192.168.0.1 y 192.168.1.1, respectivamente.
Las puertas de enlace tienen IPs públicas 213.96.80.51 y 80.36.214.182, respectivamente. En ambos gateways existen dos interfaces de
red, una conectada a la LAN y otra a la WAN. La interfaz conectada a la red local es eth0 y la interfaz conectada al router es eth1 en
ambos casos. Entonces, la topología de red es la siguiente:
192.168.0.0/24
192.168.0.1 213.96.80.51
Internet
80.36.214.182 192.168.1.1
192.168.1.0/24
Para conseguir esto necesitamos hacer dos cosas:
Red A <-> Red B
. 1 Abrir el cortafuegos de modo que se permita establecer un túnel IPSec (permitir los protocolos ESP y AH y el puerto UDP 500)
. 2 Permitir el tráfico a través del túnel.
Para permitir el tráfico por el túnel, empezaremos configurando las políticas de seguridad. Para gestionar dichas políticas, Debian cuenta
con un demonio llamado setkey, manejable mediante el script /etc/init.d/setkey, el cuál ejecuta las sentencias que se encuentren en el
fichero /etc/ipsec-tools.conf tras haber borrado las políticas que estén cargadas actualmente. Para una conexión de este tipo necesitaremos
ocho entradas en el fichero /etc/ipsec-tools.conf del gateway A (192.168.0.1):
spdadd 192.168.1.0/24 192.168.0.0/24 any -P in ipsec esp/tunnel/80.36.214.182-213.96.80.51/require;
spdadd 192.168.1.0/24 213.96.80.51/32 any -P in ipsec esp/t
Comentarios de: BULMA: VPN con KAME IPsec y kernel 2.6 (0)
No hay comentarios