sábado, 16 de febrero de 2013

¿Que es CIPE?

Crypto IP Encapsulation (CIPE)

CIPE es una implementación de VPN desarrollada principalmente para Linux. CIPE utiliza paquetes IP encriptados que son encapsulados, o «wrapped», en paquetes (UDP) de datagramas. A los paquetes CIPE se les da un encabezado con la información de destino y son encriptados usando un mecanismo de encriptación de CIPE. Los paquetes son luegos transferidos sobre IP como paquetes UDP a través del dispositivo de red virtual de CIPE (cipcbx) sobre una red portadora hasta el nodo remoto destino. La figura muestra una configuración CIPE típica conectando dos redes basadas en Linux: 




Una red y un cliente remoto conectados por CIPE
Este diagrama muestra una red ejecutando CIPE en un cortafuegos (firewall) y una máquina cliente remota actuando como el nodo CIPE. La conexión CIPE actúa como un túnel a través del cual todos los datos relacionados a la Intranet son enrutados entre los nodos remotos. Todos los datos son encriptados usando llaves de 128-bits generadas dinámicamente y pueden ser comprimidas para las transferencias de grandes archivos o para enviar por un túnel las aplicaciones X hasta un host remoto. CIPE puede ser configurado para establecer comunicación entre dos o más máquinas Linux con CIPE y tiene los controladores de red para sistemas operativos basados en Win32.


Ventajas de utilizar CIPE

Hay numerosas razones por las cuales utilizar CIPE es una decisión inteligente para los administradores de sistemas y seguridad: 


  • Red Hat Enterprise Linux se entrega con CIPE, por lo tanto está disponible para todas las máquinas Red Hat Enterprise Linux en las puntas (por ejemplo, cortafuegos o puertas de enlace) que desee conectar a su Intranet. Red Hat Enterprise Linux también incluye código encriptado soportado por CIPE en su distribución general.
  • CIPE soporta la encriptación usando cualquiera de los algoritmos estándar de encriptación Blowfish o IDEA. Dependiendo de las regulaciones para exportar encriptación en su país, puede utilizar Blowfish (por defecto) para encriptar todo el tráfico CIPE en su Intranet.
  • Debido a que CIPE está basado en software, cualquier máquina vieja o redundante que pueda ejecutar Red Hat Enterprise Linux se puede convertir en una puerta de enlace CIPE, ahorrando que la organización tenga que comprar hardware dedicado VPN para conectar dos LAN de forma segura.
  • CIPE está desarrollado activamente para funcionar en conjunto con iptables, ipchains y otros cortafuegos basados en reglas. Todo lo que se necesita es aceptación en par de los paquetes UDP CIPE entrantes para coexistir con las reglas del cortafuegos existentes.
La configuración de CIPE se lleva a cabo a través de archivos de texto, lo que permite que los administradores puedan configurar sus servidores y clientes CIPE remotamente sin la necesidad de utilizar herramientas gráficas pesadas que funcionarían pobremente a través de la red. CIPE también se puede configurar a través de la Herramienta de administración de redes.


Instalación de CIPE

La instalación de CIPE es el equivalente a instalar una interfaz de red bajo Linux. El paquete RPM de cipe contiene los archivos de configuración encontrados en /etc/cipe/, el demonio CIPE (/usr/sbin/ciped-cb), los scripts de la red que cargan el módulo del kernel y activan/desactivan la interfaz CIPE (if*-cipcb) y archivos de configuración de ejemplo encontrados en /usr/share/doc/cipe-<version>/samples/.
También está disponible una página con información detallada explicando el protocolo CIPE y varios detalles de la implementación.
La siguiente guía detalla una configuración de muestra que envuelve una estación de trabajo cliente que desea conectarse de forma segura a una LAN remota con una puerta de enlace CIPE.
La estación de trabajo usa direcciones IP dinámicas desde una conexión modem cable, mientras que la máquina puerta de enlace con CIPE emplea el rango 192.168.1.0/24. Esto es lo que se conoce como una configuración CIPE «típica». La Figura 6-1 ilustra la configuración CIPE típica.
La instalación de CIPE entre el cliente y el servidor CIPE permite una conexión punto a punto usando la Internet como el medio de transmisión del tráfico WAN.
La estación de trabajo del cliente luego transfiere un archivo a través de la Internet al cortafuego CIPE, donde cada paquete será marcado con la hora, encriptado y se le dará la dirección del cortafuego del receptor CIPE. El cortafuego de destino en su turno lee la información de la cabezera, la remueve y la envía al enrutador de la LAN remota para que sea luego enrutado al nodo destino. Este proceso es completamente transparente al usuario final. La mayoría de la transacción se lleva a cabo entre los pares CIPE.


Configuración del servidor CIPE

Para configurar un servidor CIPE, instale el paquete RPM de cipe desde el CD-ROM de Red Hat Enterprise Linux o a través de Red Hat Network.


ImportanteImportante
Si está utilizando una versión vieja de Red Hat Enterprise Linux y/o tiene una versión vieja de CIPE, debería actualizarla a la versión más reciente.
El próximo paso es copiar los archivos de configuración de ejemplo desde /usr/share/doc/cipe-version/samples/ (donde version es la versión de CIPE instalada en su sistema) a /etc/cipe/. Una vez copiados, necesitará modificar el archivo /etc/cipe/options.cipcbx (x es incremental comenzando desde 0, para aquellos que desean tener más de una conexión CIPE en el servidor CIPE) para incluir sus direcciones de subred de la LAN y las direcciones IP enrutables públicamente del cortafuego. A continuación se muestra el archivo de ejemplo options incluido con el RPM de cipe en Red Hat Enterprise Linux el cual, para este ejemplo, ha sido renombrado a options.cipbcb0

# Surprise, this file allows comments (but only on a line by themselves)
# This is probably the minimal set of options that has to be set
# Without a "device" line, the device is picked dynamically

# the peer's IP address
ptpaddr         6.5.4.3

# our CIPE device's IP address
ipaddr          6.7.8.9

# my UDP address. Note: if you set port 0 here, the system will pick
# one and tell it to you via the ip-up script. Same holds for IP 0.0.0.0.
me              bigred.inka.de:6789

# ...and the UDP address we connect to. Of course no wildcards here.
peer            blackforest.inka.de:6543

# The static key. Keep this file secret!
# The key is 128 bits in hexadecimal notation.
key             xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

La salida ptpaddr es la dirección remota de la LAN CIPE. ipaddr es la dirección IP CIPE de la estación de trabajo. La dirección me es la dirección IP pública enrutable del cliente que envía los paquetes UDP sobre la Internet, mientras que peer es la dirección IP pública enrutable del servidor CIPE. Observe que la dirección IP de la estación de trabajo cliente es 0.0.0.0 porque utiliza una conexión dinámica. El cliente CIPE manejará la conexión al servidor CIPE. El campo key (representado por x's; debería ser secreto) es la llave estática compartida. Esta llave debe ser la misma para ambos pares o de lo contrario la conexión no será posible. Consulte la Sección 6.8 para más información sobre cómo generar una llave estática compartida para sus máquinas CIPE.
A continuación se muestra el archivo modificado /etc/cipe/options.cipcb0 que usará la estación cliente: 

ptpaddr        10.0.1.2
ipaddr         10.0.1.1
me             0.0.0.0
peer           LAN.EXAMPLE.COM:6969
key            123456ourlittlesecret7890shhhh 

Este es el archivo /etc/cipe/options.cipcb0 para el servidor CIPE: 

ptpaddr        10.0.1.1
ipaddr         10.0.1.2
me             LAN.EXAMPLE.COM:6969
peer           0.0.0.0
key            123456ourlittlesecret7890shhhh

Configuración de clientes para CIPE

Después de configurar y probar exitosamente el servidor CIPE, puede desarrollar la conexión en la máquina cliente.
Los clientes CIPE deberían poder conectarse y desconectarse de la conexión CIPE de una forma automática. Además, CIPE contiene mecanismos incorporados para personalizar las configuraciones para usos individuales. Por ejemplo, un empleado remoto puede conectarse al dispositivo CIPE en la LAN escribiendo lo siguiente:

/sbin/ifup cipcb0

El dispositivo debería mostrarse automáticamente, las reglas del cortafuego y la información del enrutador también deberían configurarse con la conexión. El empleado remoto debería poder terminar la conexión con lo siguiente:

/sbin/ifdown cipcb0

La configuración de clientes requiere la creación de scripts localizados que son ejecutados después que el dispositivo es cargado. La configuración del dispositivo mismo puede ser realizado localmente a través de un archivo creado por el usuario llamado /etc/sysconfig/network-scripts/ifcfg-cipcb0. Este archivo contiene parámetros que determinan si la conexión CIPE ocurre en tiempo de arranque, cuál es el nombre del dispositivo CIPE, entre otras cosas. Lo siguiente es el archivo ifcfg-cipcb0 para un cliente remoto conectándose a un servidor CIPE:

DEVICE=cipcb0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

# This is the device for which we add a host route to our CIPE peer through.
# You may hard code this, but if left blank, we will try to guess from
# the routing table in the /etc/cipe/ip-up.local file.
PEERROUTEDEV=

# We need to use internal DNS when connected via cipe. 
DNS=192.168.1.254

El dispositivo CIPE es llamado cipcb0. El dispositivo CIPE es activado en el momento del arranque (configurado a través del campo ONBOOT) y no utilizará un protocolo de arranque (por ejemplo, DHCP) para recibir una dirección IP para el dispositivo. El campo PEERROUTEDEV determina el nombre del dispositivo servidor CIPE que se conecta al cliente. Si no se especifica un dispositivo en este campo, se determinará alguno luego que el dispositivo haya sido cargado.
Si las redes internas están detrás de un cortafuegos, necesita especificar reglas que permitan a la interfaz CIPE en la máquina cliente, enviar y recibir paquetes UDP. Consulte el Capítulo 7 para más información sobre la configuración de un cortafuegos. Para esta configuración de ejemplo, se implementan las reglas iptables.


NotaNota
Los clientes se deben configurar de forma tal que los parámetros localizados sean colocados en un archivo creado por el usuario llamado /etc/cipe/ip-up.local. Los parámetros locales deberían ser revertidos cuando la sesión CIPE sea apagada usando /etc/cipe/ip-down.local.
Las cortafuegos se deberían configurar en las máquinas clientes para aceptar paquetes UDP CIPE encapsulados. Las reglas pueden variar ampliamente, pero básicamente se requiere la aceptación de paquetes UDP para poder establecer la conectividad CIPE. Las siguientes reglas iptables permiten transmisiones CIPE UDP en la máquina remota cliente conectándose a la LAN; las reglas finales incorporan enmascaramiento de IP para permitir al cliente remoto comunicarse a la LAN y a la Internet. 

/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.1
/sbin/iptables -A INPUT -j ACCEPT -i cipcb0
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE 

Añada reglas a la máquina cliente para acceder a los nodos detrás de la conexión CIPE como que si estos estuviesen en la red local. Esto se puede hacer ejecutando el comando route. Para nuestro ejemplo, la estación de trabajo del cliente necesitará la siguiente ruta de red:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2

A continuación se muestra el script final /etc/cipe/ip-up.local para la estación de trabajo cliente: 

#!/bin/bash -v
if [ -f /etc/sysconfig/network-scripts/ifcfg-$1 ] ; then
        . /etc/sysconfig/network-scripts/ifcfg-$1
else
        cat <<EOT | logger
Cannot find config file ifcfg-$1. Exiting.
EOF
        exit 1
fi

if [ -n ${PEERROUTEDEV} ]; then
        cat <<EOT | logger
Cannot find a default route to send cipe packets through!
Punting and hoping for the best.
EOT
        # Use routing table to determine peer gateway
        export PEERROUTEDEV=`/sbin/route -n | grep ^0.0.0.0 | head -n 1 \
           | awk '{ print $NF }'`

fi

####################################################
# Add The routes for the remote local area network #
####################################################

route add -host 10.0.1.2 dev $PEERROUTEDEV
route add -net 192.168.1.0 netmask 255.255.255.0 dev $1

####################################################
# IP TABLES Rules to restrict traffic              #
####################################################

/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.2
/sbin/iptables -A INPUT -j ACCEPT -i $1
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE



Personalización de CIPE

CIPE se puede configurar de diversas formas, desde pasando parámetros como argumentos de la línea de comandos cuando se arranca ciped, hasta generando un nuevo conjunto de llaves compartidas estáticas. Esto permite a un administrador de seguridad la flexibilidad de personalizar las sesiones CIPE para garantizar la seguridad así como también incrementar la productividad.


NotaNota
Los parámetros más comunes se deberían colocar en el archivo /etc/cipe/options.cipcbx para que se carguen automáticamente en el momento de ejecución.
Tenga en cuenta que cualquier parámetro pasado en la línea de comandos como opciones ignora a los respectivos parámetros en el archivo de configuración /etc/cipe/ options.cipcbx.
La Tabla 6-1 detalla algunos de los parámetros de línea de comandos cuando se ejecuta el demonio ciped.

ParámetrosDescripción
argPasa argumentos al script de inicialización /etc/cipe/ip-up
cttlConfigura el valor del Tiempo de vida del transportador (Carrier Time To Live, TTL), el valor recomendado es 64
debugValor boleano para activar la depuración
deviceNombra el dispositivo CIPE
ipaddrDirección IP enrutable públicamente de la máquina CIPE
ipdownSelecciona un script alternativo ip-down al script por defecto /etc/cipe/ip-down
ipupSelecciona un script ip-up alterno al script por defecto /etc/cipe/ip-up
keyEspecifica una llave estática compartida para la conexión CIPE
maxerrNúmero de errores permitidos antes de que el demonio CIPE abandone
meDirección UDP de la máquina CIPE
mtuConfigura la unidad máxima de transferencia del dispositivo
nokeyNo utilice encriptación
peerLa dirección UDP CIPE par
pingConfigura el intervalo ping keepalive específico de CIPE (no ICMP)
socksDirección IP y número de puerto del servidor SOCKS para las conexiones proxy
tokeyConfigura el tiempo de vida de la llave dinámicamente; por defecto es 10 minutos (600 segundos)
tokxcValor del tiempo de espera (timeout) para el intercambio de llaves, por defecto son 10 segundos
tokxtsValor del tiempo de espera para el intercambio de marcas de hora de las llaves compartidas; por defecto es 0 (ninguna marca de hora)
topingValor del tiempo de espera para los pings de keepalive; por defecto es 0
Tabla 6-1. Parámetros CIPE


Administración de llaves CIPE

Como se mencionó anteriormente, CIPE incorpora una combinación segura de llaves enlazadas estáticas y encriptación de tráfico para crear un túnel seguro sobre redes transportadoras tales como Internet. El uso de llaves enlazadas estáticas proporciona un punto común de referencia para dos redes CIPE a pasar información de forma segura. Por lo tanto, es imperativo que ambas puertas de enlace de las redes CIPE compartan exáctamente la misma llave, o de lo contrario la comunicación CIPE no será posible.
Para generar llaves CIPE se requiere conocer que tipo de llaves son compatibles. Los generadores alfanuméricos aleatorios no funcionan. Las llaves estáticas deben ser cadenas de caracteres de 32, de 128 bits. Esto se puede crear ejecutando el comando siguiente, el cual utiliza od para crear una llave hexadecimal usando el dispositivo de números aleatorio /dev/random

od -N 16 /dev/random -t x4 | awk '{print $2 $3 $4 $5}' 

Coloque la salida en el archivo /etc/cipe/options.cipcb0 para todos los servidores y clientes CIPE.

Fuente : http://web.mit.edu/rhel-doc/3/rhel-sg-es-3/s1-vpn-cipe.html