servidores de alta disponibilidad v2
TRANSCRIPT
Servidores de
Alta
Disponibilidad
2
CARERRAS PROFESIONALES CIBERTEC
SERVIDORES DE ALTA DISPONIBILIDAD 3
CIBERTEC CARRERAS PROFESIONALES
Índice
Presentación 5
Red de contenidos 6
Sesiones de aprendizaje
SEMANA 1 : RAID en Linux 7
SEMANA 2 : LVM en Linux 17
SEMANA 3 : TCP/IP Avanzado 33
SEMANA 4 : Stateful Packet Inspection Firewall I 45
SEMANA 5 : Stateful Packet Inspection Firewall II 59
SEMANA 6 : Stateful Packet Inspection Firewall III 73
SEMANA 9 : Proxy Application Firewall I 81
SEMANA 10 : Proxy Application Firewall II. 95
SEMANA 11 : Intrusión Detection Systems I 109
SEMANA 12 : Intrusión Detection Systems II 121
SEMANA 13 : Virtual Private Networks I. 131
SEMANA 14 : Virtual Private Networks II. 147
4
CARERRAS PROFESIONALES CIBERTEC
SERVIDORES DE ALTA DISPONIBILIDAD 5
CIBERTEC CARRERAS PROFESIONALES
Presentación
El curso Linux Seguridad presenta, en las 3 primeras semanas, temas relacionados a la conceptos generales de seguridad de una red TCP/IP. Desde la cuarta semana, hasta la sexta semana, se enfoca en la configuración de un Stateful Packet Inspection Firewall (Proyecto Netfilter). En la sétima y octava semanas, se realizará la instalación y configuración de un Proxy Application Firewall (proyecto Squid). Adicionalmente, se realizará la instalación y configuración de un Intrusion Detection System – IDS (Proyecto Snort) que permite monitorear actividades hostiles o no en la red bajo su responsabilidad. Como último tema, se instalará y configurará una Virtual Private Networks – VPN. La distribución utilizada para la explicación del presente curso será CentOS Linux 5.0.
6
CARERRAS PROFESIONALES CIBERTEC
RAID en Linux TEMA Configuracion del software RAID en LInux
OBJETIVOS ESPECÍFICOS Comprender que es un RAID
Conocer los tipos de RAID
Instalacion de herramientas par RAID MDADM
Implementar el RAID por software en Linux
CONTENIDOS RAID por software en Linux
Tipos de RAID soportados por LInux
Configuracion e implementación del RAID
S E M A N A
1
SERVIDORES DE ALTA DISPONIBILIDAD 7
CIBERTEC CARRERAS PROFESIONALES
1. ¿Qué es RAID?
En 1987, la Universidad de Berkeley (California), publicó un artículo describiendo varios tipos de arrays de discos, acuñando en el proceso el término RAID (acrónimo de Redundant Array of Inexpensive Disks). Básicamente, la idea era combinar múltiples discos [duros] independientes y pequeños en un array (o matriz) de disco capaz de alcanzar un rendimiento superior al de un sólo disco grande y caro, en otros términos, se pretendía hacer trabajar varios discos modestos como un disco profesional de alto rendimiento. Adicionalmente, el array de discos aparece ante el sistema como un disco lógico único. El tiempo transcurrido entre errores (MTBF) para el array de discos es, en el modelo teórico de la Universidad de Berkeley, igual al MTBF de un disco individual dividido por el número de discos presentes en el array. Esto se consigue alcanzando una cierta tolerancia a errores que pasa por guardar la información redundantemente de varios modos. En aquel documento original, también nacieron cinco tipos de arquitecturas RAID: desde RAID-1 hasta RAID-5 fueron definidas entonces, cada una de ellas proporcionando diferentes niveles de tolerancia a errores de disco y rendimientos. Después de aquello, también se ha ido poniendo de moda el término RAID-0 para designar los arrays de discos no redundantes. Hoy en dia, algunos de los niveles RAID originalmente definidos (concretamente, los niveles 2 y 3) son solo utilizados en sistemas muy especializados (El RAID por software de Linux no los soporta). También ha ido apareciendo un nuevo nivel denominado "lineal", y se ha ido haciendo frecuente esto de ver el nivel 0 combinado con el nivel 1, etc.
8
CARERRAS PROFESIONALES CIBERTEC
2. Niveles RAID A continua cion se indica una breve descripción de los niveles RAID que soporta la capa de RAID por software de Linux. Gran parte de esto que vamos a ver son sólo los fundamentos teóricos de los sistemas RAID. El soporte RAID de Linux incorpora los siguientes niveles:
2.1. RAID 0: Disk Striping "La más alta transferencia, pero sin tolerancia a fallos".
También conocido como "separación ó fraccionamiento/ Striping". Los datos se desglosan en pequeños segmentos y se distribuyen entre varias unidades. Este nivel de "array" o matriz no ofrece tolerancia al fallo. Al no existir redundancia, RAID 0 no ofrece ninguna protección de los datos. El fallo de cualquier disco de la matriz tendría como resultado la pérdida de los datos y sería necesario restaurarlos desde una copia de seguridad. Por lo tanto, RAID 0 no se ajusta realmente al acrónimo RAID. Consiste en una serie de unidades de disco conectadas en paralelo que permiten una transferencia simultánea de datos a todos ellos, con lo que se obtiene una gran velocidad en las operaciones de lectura y escritura. La velocidad de transferencia de datos aumenta en relación al número de discos que forman el conjunto. Esto representa una gran ventaja en operaciones secuenciales con ficheros de gran tamaño. Por lo tanto, este array es aconsejable en aplicaciones de tratamiento de imágenes, audio, video o CAD/CAM, es decir, es una buena solución para cualquier aplicación que necesite un almacenamiento a gran velocidad pero que no requiera tolerancia a fallos. Se necesita un mínimo de dos unidades de disco para implementar una solución RAID 0.
SERVIDORES DE ALTA DISPONIBILIDAD 9
CIBERTEC CARRERAS PROFESIONALES
2.2. RAID 1: Mirroring "Redundancia. Más rápido que un disco y más seguro"
También llamado "Mirroring" o "Duplicación" (Creación de discos en espejo). Se basa en la utilización de discos adicionales sobre los que se realiza una copia en todo momento de los datos que se están modificando. RAID 1 ofrece una excelente disponibilidad de los datos mediante la redundancia total de los mismos. Para ello, se duplican todos los datos de una unidad o matriz en otra. De esta manera se asegura la integridad de los datos y la tolerancia al fallo, pues en caso de avería, la controladora sigue trabajando con los discos no dañados sin detener el sistema. Los datos se pueden leer desde la unidad o matriz duplicada sin que se produzcan interrupciones. RAID 1 es una alternativa costosa para los grandes sistemas, ya que las unidades se deben añadir en pares para aumentar la capacidad de almacenamiento. Sin embargo, RAID 1 es una buena solución para las aplicaciones que requieren redundancia cuando hay sólo dos unidades disponibles. Los servidores de archivos pequeños son un buen ejemplo.
Se necesita un mínimo de dos unidades para implementar una solución RAID 1.
2.3. RAID 4: "Acceso Independiente con un disco dedicado a paridad."
Basa su tolerancia al fallo en la utilización de un disco dedicado a guardar la información de paridad calculada a partir de los datos guardados en los otros discos. En caso de avería de cualquiera de las unidades de disco, la información se puede reconstruir en tiempo real mediante la realización de una operación lógica de O exclusivo. Debido a su organización interna, este RAID es especialmente indicado para el almacenamiento de ficheros de gran tamaño, lo cual lo hace ideal para aplicaciones gráficas donde se requiera, además, fiabilidad de los datos.
10
CARERRAS PROFESIONALES CIBERTEC
Se necesita un mínimo de tres unidades para implementar una solución RAID 4. La ventaja con el RAID 3 está en que se puede acceder a los discos de forma individual.
2.4. RAID 5: "Acceso independiente con paridad distribuida."
Este array ofrece tolerancia al fallo, pero además, optimiza la capacidad del sistema permitiendo una utilización de hasta el 80% de la capacidad del conjunto de discos. Esto lo consigue mediante el cálculo de información de paridad y su almacenamiento alternativo por bloques en todos los discos del conjunto. La información del usuario se graba por bloques y de forma alternativa en todos ellos. De esta manera, si cualquiera de las unidades de disco falla, se puede recuperar la información en tiempo real, sobre la marcha, mediante una simple operación de lógica de O exclusivo, sin que el servidor deje de funcionar. Así pues, para evitar el problema de cuello de botella que plantea el RAID 4 con el disco de comprobación, el RAID 5 no asigna un disco específico a esta misión sino que asigna un bloque alternativo de cada disco a esta misión de escritura. Al distribuir la función de comprobación entre todos los discos, se disminuye el cuello de botella y con una cantidad suficiente de discos puede llegar a eliminarse completamente, proporcionando una velocidad equivalente a un RAID 0. RAID 5 es el nivel de RAID más eficaz y el de uso preferente para las aplicaciones de servidor básicas para la empresa. Comparado con otros niveles RAID con tolerancia a fallos, RAID 5 ofrece la mejor relación rendimiento-coste en un entorno con varias unidades. Gracias a la
SERVIDORES DE ALTA DISPONIBILIDAD 11
CIBERTEC CARRERAS PROFESIONALES
combinación del fraccionamiento de datos y la paridad como método para recuperar los datos en caso de fallo, constituye una solución ideal para los entornos de servidores en los que gran parte del E/S es aleatoria, la protección y disponibilidad de los datos es fundamental y el coste es un factor importante. Este nivel de array es especialmente indicado para trabajar con sistemas operativos multiusuarios. Se necesita un mínimo de tres unidades para implementar una solución RAID 5. Los niveles 4 y 5 de RAID pueden utilizarse si se disponen de tres o más unidades de disco en la configuración, aunque su resultado óptimo de capacidad se obtiene con siete o más unidades. RAID 5 es la solución más económica por megabyte, que ofrece la mejor relación de precio, rendimiento y disponibilidad para la mayoría de los servidores.
12
CARERRAS PROFESIONALES CIBERTEC
3. Configuracion de RAID por software en Linux
En Linux raidtools ha sido el paquete de gestión de RAID por software estandard en Linux desde la inclusión del driver RAID por software. Con los años, raidtools ha demostrado un uso pesado, principalmente porque depende de un fichero de configuración (/etc/raidtab) que es difícil de mantener, y parcialmente por sus limitadas características. En agosto de 2001, Neil Brown, un ingeniero de software en la Unviersity of New South Wales y un desarrollador del kernel, lanzó una alternativa. Su paquete mdadm (multiple devices admin) proporciona una forma simple y robusta de gestión de arrays software. mdadm vá por la versión 1.0.1 y ha demostrado ser muy estable durante su primer año de desarrollo. En la lista de correo Linux-raid ha recibido una cálida acogida y muy probablemente consiga una mayor difusión en el futuro.
3.1. Instalación
Descargue la versión más reciente del tarball mdadm, ejecute make install para compilarlo e instalar mdadm con su documentación. Además del binario se instalan algunas páginas de manual y ficheros de ejemplo.
De forma alternativa usted puede descargar e instalar el fichero del paquete que se encuentra bajo el directorio RPM en la misma URL (http://www.cse.unsw.edu.au/~neilb/source/mdadm/).
mdadm tiene cinco modos de funcionamiento. Los primeros dos modos, Create y Assemble, se utilizan para configurar y activar arrays. Manage se utiliza para manipular dispositivos en un array activo. Follow o Monitor permite a los administradores configurar la notificación de eventos y acciones para los arrays. El modo Build se utiliza cuando se trabaja con arrays heredados que utilizan una versión antigua del driver md. No cubriré el modo build en este artículo. Las opciones restantes se utilizan para varias tareas domésticas y no
SERVIDORES DE ALTA DISPONIBILIDAD 13
CIBERTEC CARRERAS PROFESIONALES
están asociadas a un modo de operación específico, aunque la documentación de mdadm llama a estas opciones el modo Misc.
Importante: Antes de crear un arreglo las particiones tienen que estar
etiquetadas con Linux raid autodetect
Creando un Array
El modo Create (mdadm --create) se utiliza para crear un nuevo array. En este ejemplo utilizaré mdadm para crear un RAID-0 en /dev/md0 construido con /dev/sdb1 y /dev/sdc1:
La opción --level especifica el tipo de RAID a crear, de la misma manera que lo hace la opción raid-level de raidtools. Es posible indicar 0, 1, 4 y 5 para RAID-0, RAID-1, RAID-4 y RAID-5. También es posible utilizar el modo lineal (--level=linear).
14
CARERRAS PROFESIONALES CIBERTEC
En general, los comandos mdadm tienen el siguiente formato:
mdadm [mode] <raiddevice> [options] <component disks>
Cada opción de mdadm también cuenta con una forma corta que es menos descriptiva pero más breve de teclear. Por ejemplo, el siguiente comando utiliza la forma corta de cada opción pero es identico al ejemplo que he mostrado antes.
-C selecciona el modo Create, he incluido la opción -v para activar la salida verbosa. -l y -n especifican el nivel RAID y el número de discos. Los usuarios de raidtools y /etc/raidtab pueden comprobar los fácil que es crear arrays utilizando mdadm. Usted puede cambiar el tamaño del pedazo (chunk size) por defecto (64KB) utilizando la opción --chunk o -c. En el ejemplo anterior he fijado el chunk size a 128KB. mdadm también soporta la expansión del shell, de modo que no tiene que teclear el nombre de dispositivo para cada componente si se está creando un gran array.
En este ejemplo crearé un RAID-5 con cinco discos y un tamaño de chunk de 128KB:
El ejemplo crea el array /dev/md0 utilizando las particiones de disco SCSI /dev/sda1, /dev/sdb1, /dev/sdc1, /dev/sdd1 y /dev/sde1. Observe que también he fijado el tamaño del chunk a 128KB utilizando la opción -c128. Cuando se crea un RAID-5, mdadm selecciona de forma automática el algoritmo de paridad left-symmetric, que es la mejor opción.
SERVIDORES DE ALTA DISPONIBILIDAD 15
CIBERTEC CARRERAS PROFESIONALES
Utilice el comando --stop o -S para detener un array en marcha:
/etc/mdadm.conf
/etc/mdadm.conf es el principal fichero de configuración de mdadm. A diferencia de /etc/raidtab, mdadm no depende de /etc/mdadm.conf para crear o gestionar arrays. En su lugar, mdadm.conf es simplemente una manera adicional de seguir la pista a los dispositivos RAID software. Utilizar un fichero de configuración con mdadm es útil pero no necesario. Tener uno significa que usted puede gestionar los arrays de forma ágil sin invertir tiempo en descubrir qué propiedades tienen y dónde están los discos. Por ejemplo, si un array no está en marcha y no existe el fichero mdadm.conf describiéndolo, entonces el administrador del sistema debe invertir tiempo en examinar cada disco para determinar sus propiedades y miembros.
A diferencia del fichero de configuración para raidtools, mdadm.conf es conciso y símplemente lista los discos y arrays. El fichero de configuración puede contener dos tipos de líneas, cada una comenzando con la palabra reservada DEVICE o ARRAY. Los espacios en blanco separan las palabras reservadas de la información de configuración. Las líneas que comienzan con DEVICE especifican una lista de dispositivos que son candidatos a formar parte del array. La líneas que comienzan con ARRAY especifican dispositivos array además de información de identificación. Esta información puede incluir listas de uno o más UUIDs, números menores de dispositivos md, o una lista de dispositivos miembro.
Un fichero de configuración mdadm.conf sencillo puede parecerse a:
DEVICE /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1
ARRAY /dev/md1 devices=/dev/sdc1,/dev/sdd1
En general, es mejor crear el fichero /etc/mdadm.conf después de haber creado un array y actualizar el fichero cuando se crean nuevos arrays. Sin un fichero /etc/mdadm.conf se necesita especificar información más detallada sobre un array en el comando para activarlo. Esto significa que se tendrá que recordar que dispositivos pertenecen a cada array, y esto puede convertirse fácilmente en un embrollo en sistemas con muchos discos. mdadm incluso proporciona una manera fácil de generar las líneas ARRAY. La salida es una sola línea continua, pero aquí está troceada para encajar en la página:
16
CARERRAS PROFESIONALES CIBERTEC
Si hubiera múltipes arrays ejecutándose en el sistema, entonces mdadm generaría una linea array para cada uno. Así que, una vez que haya construido sus arrays, puede redirigir la salida de mdadm --detail --scan a /etc/mdadm.conf. Sólo tiene que asegurarse de crear manualmente una entrada DEVICE. Utilizando el ejemplo anterior podemos tener un /etc/mdadm.conf con el siguiente aspecto:
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 level=raid0 num-devices=2 \
UUID=410a299e:4cdd535e:169d3df4:48b7144a
Iniciando un array
El modo Assemble se utiliza para iniciar un array que ya existe. Si usted ha creado el fichero /etc/mdadm.conf, entoces puede comenzar el array listado allí con el siguiente comando:
La opción -A se refiere al modo Assemble, también puede utilizar --assemble. La opción -s o --scan indican a mdadm que mire en /etc/mdadm.conf para informarse sobre los arrays y los dispositivos. Si usted quiere iniciar todos los arrays listados en /etc/mdadm.conf, no especifique un dispositivo md en la línea de comandos.
Si usted no creó el fichero /etc/mdadm.conf, necesitará especificar información adicional en la línea de comandos para poder iniciar un array. Por ejemplo, este comando intenta iniciar /dev/md0 utilizando los dispositivos listados en la línea de comandos:
# mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1
Como utilizar mdadm -A de este modo supone que usted conoce cómo están organizados los arrays, puede que no sea útil en sistemas que tienen arrays que fueron creados por otra persona. De manera que usted puede querer examinar algunos dispositivos para hacerse una idea de cómo están organizados los arrays. La opción de examinar (-E o --examine) permite
SERVIDORES DE ALTA DISPONIBILIDAD 17
CIBERTEC CARRERAS PROFESIONALES
imprimir el superbloque md (si está presente) de un dispositivo de bloques que puede formar parte de un array.
La opción de examinar muestra información útil sobre los discos que componen el array. En este caso podemos decir que /dev/sdb1 pertenece a un RAID-5 formado por tres discos miembro. Lo que quiero resaltar de forma específica es la línea de salida que contiene el UUID. Un UUID es un número de 128 bits que se supone razonablemente único tanto en el sistema local como en el resto. Se genera de forma aleatoria utilizando hardware y marcas temporales como parte de su semilla. Los UUIDs se tutilizan en varios programas para etiquetar de forma única los dispositivos. Puede obtener más información leyendo las páginas de manual de uuidgen y libuuid.
Cuando se crea un array, el driver md genera un UUID para el array y lo guarda en el superbloque md. Puede utilizar el UUID como criterio para la construcción de arrays. En el próximo ejemplo activaré el array al que pertenece /dev/sdb1 utilizando su UUID.
# mdadm -Av /dev/md0 --uuid=84788b68:1bb79088:9a73ebcc:2ab430da
/dev/sd*
Este comando escanea cada disco SCSI (/dev/sd*) para ver si es miembro del array con UUID 84788b68:1bb79088:9a73ebcc:2ab430da y entonces inicia el array, suponiendo que se encuentre cada uno de los dispositivos que lo
18
CARERRAS PROFESIONALES CIBERTEC
componen. mdadm producirá un montón de salida cada vez que intente escanear un dispositivo que no existe. Puede ignorar tales advertencias con seguridad.
Gestionando arrays
Utilizando el modo Manage puede añadir y eliminar discos de un array en funcionamiento. Esto es necesario para eliminar los discos que han fallado, añadir discos de repuesto, o añadir los discos de reemplazo. El modo Manage también se puede utilizar para marcar un disco como averiado. El modo Manage replica las funciones de los programas raidsetfaulty, raidhotremove y raidhotadd de raidtools.
Por ejemplo, para añadir un disco a un array activo, replicando el comando raidhotadd:
Revisar que discos forman el arreglo:
Añadiendo un nuevo disco:
Revisando la nueva configuración:
SERVIDORES DE ALTA DISPONIBILIDAD 19
CIBERTEC CARRERAS PROFESIONALES
O para eliminar /dev/sdc1 de /dev/md0 intente:
Se fuerza el fallo del disco /dev/sdc1
Se remueve el disco que fallo
Se verifica como queda la configuración final
Observe que primero he marcado /dev/sdc1 como averiado y después lo hemos eliminado. Es equivalente a utilizar los comandos raidsetfaulty y raidhotremove de las raidtools. Es posible combinar las opciones de añadir, marcar como averiado y eleminar en una sola línea de comandos siempre que tenga sentido en términos de gestión del array. Por ejemplo, debe marcar un disco como averiado antes de eliminarlo.
20
CARERRAS PROFESIONALES CIBERTEC
Monitorizando arrays
El modo Follow, o Monitor, proporciona algunas de las mejores características de mdadm. Utilizando el modo Follow/Monitor puede utilizar mdadm como un demonio y configurarlo para enviar alertas por correo a los administradores cuando en los arrays se producen errores o fallos. También puede utilizar el modo Follow para ejecutar comandos arbitrarios cuando un disco se averie. Por ejemplo, puede querer intentar eliminar el disco y reinstarlo en un intento de corregir un fallo no-fatal sin intervención del usuario.
El siguiente comando monitorizará /dev/md0 (consultando su estado cada 300 segundos) en busca de eventos críticos. Cuando ocurre un error faltal, mdadm enviará un correo al sysadmin. Puede ajustar el intérvalo de consulta y la dirección de correo de acuerdo a sus necesidades.
Cuando se utiliza el modo monitor, mdadm no termina, así que tal vez quiera envolverlo con un nohup y un &.
El modo Follow/Monitor también permite que los arrays compartan discos de repuesto, una caracteristica que ha faltado en el software RAID de Linux desde el principio. Esto significa que usted sólo tiene que proporcionar un disco de repuesto para cada grupo de arrays o para todos los asrrays. También significa que el administrador del sistema no tiene que intervenir de forma manual para mover los discos de repuesto cuando se produce un fallo en un array. Cuando se detecta una avería en un disco de un array sin un disco de repuesto, mdadm quitará un disco de repuesto disponible en otro array y lo insertará en el array con el disco averiado. Para facilitar este proceso, cada línea ARRAY de /etc/mdadm.conf necesita tener un grupo de repuesto definido.
DEVICE /dev/sd*
ARRAY /dev/md0 level=raid1 num-devices=3 spare-group=database \
UUID=410a299e:4cdd535e:169d3df4:48b7144a
ARRAY /dev/md1 level=raid1 num-device=2 spare-group=database \
UUID=59b6e564:739d4d28:ae0aa308:71147fe7
SERVIDORES DE ALTA DISPONIBILIDAD 21
CIBERTEC CARRERAS PROFESIONALES
En este ejemplo, tanto /dev/md0 como /dev/md1 son parte del grupo de repuesto database. Suponiendo que /dev/md0 es un RAID-1 de dos discos con un solo disco de repuesto. Si mdadm está funcionando en modo monitor (como he mostrado antes), y un disco de /dev/md1 falla, mdadm quitará el disco de repuesto de /dev/md0 y lo insertará en /dev/md1.
22
CARERRAS PROFESIONALES CIBERTEC
Autoevaluación
1. Indique los tipos de RAID que existen y que son soportados por el software de Linux
2. ¿Indique las diferencias en raidtools y mdadm?
3. ¿Como crea un RAID 0 en Linux?
4. ¿Cómo crea un RAID 5 en Linux?
SERVIDORES DE ALTA DISPONIBILIDAD 23
CIBERTEC CARRERAS PROFESIONALES
24
CARERRAS PROFESIONALES CIBERTEC
LVM en Linux
TEMA Identificar y analizar los detalles avanzados acerca del protocolo TCP/IP.
OBJETIVOS ESPECÍFICOS Entender el protocolo TCP/IP
Identificar los protocolos ARP e ICMP
Comprender la estructura de las cabeceras IP, TCP y UDP
Comprender el saludo de tres vías
Identificar parámetros de seguridad aplicados a la interface de red CONTENIDOS Protocolo TCP/IP
Address Resolution Protocol (ARP)
Internet Control Messages Protocol (ICMP)
Cabecera IP
S E M A N A
2
SERVIDORES DE ALTA DISPONIBILIDAD 25
CIBERTEC CARRERAS PROFESIONALES
1. LVM (Logical Volumen Manager)
LVM es el administrador de volúmenes lógicos para el kernel Linux. LVM gestiona los discos duros y sistemas similares, como dispositivos de almacenamiento masivo. Entre las características principales del Linux Logical Volume Manager encontramos el redimensionado de grupos lógicos, redimensionado de volúmenes lógicos, capacidad de realización de snapshots en modo lectura, adición de nuevos discos a los volúmenes, etc. Se podría decir que LVM es un mecanismo para “virtualizar” discos.
LVM es mucho más flexible, permitiendo añadir espacio adicional a volúmenes ya creados de manera transparente y simple.
Pasamos a ver los conceptos para entender la base del sistema.
volume group (VG): Sería el equivalente a un disco duro, es el punto de
abstracción más alto en LVM. Puede contener volúmenes físicos y lógicos.
physical volume (PV): Puede ser un disco duro, aunque también algo que
se le parezca como un RAID por software.
logical volume (LV): Equivale a una partición, contiene su propio sistema
de archivos.
physical extent (PE): La extensión física está compuesta por trozos de
datos de los volúmenes físicos.
logical extent (LE): La extensión lógica está compuesta por trozos de datos de los volúmenes lógicos.
26
CARERRAS PROFESIONALES CIBERTEC
Para que todo funcione es necesario instalar el paquete lvm10 o lvm2, recomiendo la versión 2 aunque la mayoría de distribuciones todavía mantengan la versión 1. Hay que asegurarse de que haya un script en el arranque para poner en marcha LVM.
Lo primero de todo es hacer las particiones, puede hacerse con cfdisk. Si se usa una versión anterior a la 2 de LVM, es obligatorio definir el tipo como Linux LVM.
Cada una de la particiones usadas debe ser etiquetada con Linux LVM etiqueta 8e
SERVIDORES DE ALTA DISPONIBILIDAD 27
CIBERTEC CARRERAS PROFESIONALES
Antes de poder comenzar a trabajar con los discos en LVM (creando grupos, volumenes, particionando, etc) hemos de “prepararlos” para poder utilizar este sistema. Para ello utilizaremos fdisk, especificando a cada uno de los discos que queremos utilizar con LVM que utilicen el tipo de partición 8e “Linux LVM”.
Supongamos que tenemos un disco duro nuevo, /dev/sda, vamos a prepararlo para utilizar LVM, ejecutamos fdisk sobre el disco para ello:
fdisk /dev/hdb
Una vez dentro, presionamos “n” para crear una nueva particion:
n Añade una nueva partición
Presionamos “p” para crear una nueva partición primaria
p Partición primaria (1-4)
Presionamos 1 para crearla como la primera partición del disco, posteriormente presionamos ENTER hasta aceptar todos los valores por defecto de primer y último cilindro.
Una vez finalizado y de nuevo en el menú de fdisk, presionamos “t” para cambiar el identificador de sistema de una partición:
t Cambia el identificador de sistema de una partición
La cambiaremos al tipo “LVM partition type (0×8e)”, para ello introducimos 8e. Podemos en este punto presionar “p” para imprimir la tabla de particiones y ver que todo es correcto:
p Imprime la tabla de particiones
Finalmente guardamos los cambios con “w”
Al hacer un fdisk -l del nuevo disco, veremos que efectivamente ya utiliza LVM, ejemplo (ficticio):
# fdisk -l /dev/sda
Disk /dev/sda: 200.0 GB, 201000193024 bytes
200 heads, 63 sectors/track, 30515 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Start End Blocks Id System
/dev/sda1 1 30515 205111706 8e Linux LVM
28
CARERRAS PROFESIONALES CIBERTEC
2. Configuracion de LVM
2.1. Creacion de physical Volumen Para la creación de physical volumens se usa el comando pvcreate
El comando pvdisplay nos muestra todos los physical volumen del
Sistema.
SERVIDORES DE ALTA DISPONIBILIDAD 29
CIBERTEC CARRERAS PROFESIONALES
Alternativamente se puede usar el siguiente comando
2.2. Creacion de Volumen Group A este nivel ya se puede crear un volumen group el cual es un contener de todos lo physical volumen que se incluyan en su creación. A continuación se crea el volumen group cibertec con un solo physical volumen /dev/sdb1
Para incluir 2 physical volumen a la vez, se ejecuta el comando
Para listar todos lo volumen groups que existen en el sistema se ejecuta vgdisplay
30
CARERRAS PROFESIONALES CIBERTEC
En la pantalla anterior se puede observar por ejemplo que existen 2 volumen groups, ciberlinux y cibertec, de los cuales se indica que ciberlinux, esta formado con 2 physical volumen y cibertec esta formado con 1 physical volumen (Propiedad metadata area).
2.3. Creacion de Logical Volumen A este nivel se puede cortar el volumen group en piezas mas pequeñas llamadas Logical Volumen, los cuales son tratados como particiones dentro del sistema operativo Linux. Para crear un LOgical Volumen llamado prueba01 de 100MB en el volumen group cibertec se ejecuta el siguiente comando:
SERVIDORES DE ALTA DISPONIBILIDAD 31
CIBERTEC CARRERAS PROFESIONALES
32
CARERRAS PROFESIONALES CIBERTEC
TCP/IP Avanzado
TEMA Identificar y analizar los detalles avanzados acerca del protocolo TCP/IP.
OBJETIVOS ESPECÍFICOS Entender el protocolo TCP/IP
Identificar los protocolos ARP e ICMP
Comprender la estructura de las cabeceras IP, TCP y UDP
Comprender el saludo de tres vías
Identificar parámetros de seguridad aplicados a la interface de red CONTENIDOS Protocolo TCP/IP
Address Resolution Protocol (ARP)
Internet Control Messages Protocol (ICMP)
Cabecera IP
Cabecera TCP
Cabecera UDP
Saludo de tres vías (Handshake)
Seguridad TCP/IP
S E M A N A
3
SERVIDORES DE ALTA DISPONIBILIDAD 33
CIBERTEC CARRERAS PROFESIONALES
PROTOCOLO TCP/IP
Fig. 1. Modelo TCP/IP
Aplicación – Las aplicaciones TCP/IP usualmente incluyen un programa cliente y servidor. o Interface de usuario o Proporciona aplicaciones específicas entre dos hosts.
Transporte – Mantiene la integridad de los datos y configuración de confiable en la comunicación punto a punto entre los sistemas. Asegura la entrega libre de errores de las unidades de datos, en adecuada secuencia, y sin pérdidas o duplicación.
Internet – Encamina los paquetes entre diferentes hosts o redes.
Interfase de red – Define la interconexión física entre los hosts. Los estándares TCP/IP son publicados en los Request for Comments, que se clasifican en:
Requerido (Required)
Recomendado (Recommended)
Electivo (Elective)
Uso limitado (Limited use)
No recomendado (Not Recommented) Entidades estandarizadoras:
34
CARERRAS PROFESIONALES CIBERTEC
Internet Society - http://www.isoc.org/
Interactive Advertising Bureau (IAB) - http://www.iab.net/
Fig. 2. Pasando los datos a través de la pila de protocolos del Modelo TCP/IP
3. Address Resolution Protocol (ARP) Para que dos hosts puedan comunicarse, deben conocer sus direcciones físicas (Media Access Control – MAC). A través de la difusión, ARP permite a un host descubrir dinámicamente la dirección MAC correspondiente a una dirección IP en particular.
Fig. 3. Cabecera ARP
SERVIDORES DE ALTA DISPONIBILIDAD 35
CIBERTEC CARRERAS PROFESIONALES
HLEN – Longitud dirección hardware PLEN – Longitud dirección del protocolo OPERACION – Código de operación (ARPreques ó ARPreply) SENDER HA – Dirección de origen hardware SENDER IP – Dirección de origen del protocolo TARGET HA – Dirección de destino hardware A continuación, se muestra la captura de paquetes ARP con el programa Wireshark (sniffer).
Fig. 4. ARP
2.1. Visualizar la dirección MAC: En sistemas tipo Unix (Linux, FreeBSD, AIX, etc.) se ejecutará el comando ifconfig para conocer la información relacionada con las interfaces de red, donde aparecerá listada la dirección MAC correspondiente a cada una.
2.2. Cambiar la dirección MAC:
Bajo Linux, la dirección MAC de un interfaz de red (NIC) puede ser cambiada, ejecutando lo siguiente como usuario root: ifconfig eth0 down
ifconfig eth0 hw ether 00:01:02:03:04:06
36
CARERRAS PROFESIONALES CIBERTEC
Ifconfig eth0 up
NOTA: El ejemplo está planteado con una interfaz ethernet de ahí que sea la interfaz eth0. En Red Hat Linux y distribuciones similares (Fedora Core, CentOS, etc.) una manera sencilla de hacerlo "permanente", aun después de reiniciar el sistema, es agregando una variable como esta a tu ifcfg-eth0 o archivo similar:
MACADDR=12:34:56:78:90: ab
Resta reiniciar el servicio de red: service network restart para que se apliquen los cambios.
Fig. 5. Comando ARP
Si deseamos un mayor control sobre la MAC podemos usar el programa GNU Mac Changer, que no solo permite cambiar la MAC, sino también listar las direcciones asignadas a los fabricantes, asignar MAC aleatoria, etc. En MAC-48 y EUI-48 las, direcciones se demuestran, generalmente, en formato hexadecimal con cada octeto separado por un guión o dos puntos. Un ejemplo de una dirección MAC-48 sería "00-08-74-4C-7F-1D"; otro ejemplo, "00:08:74:4C:7F:1D".
RARP (Reverse Address Resolution Protocol) – Asocia una dirección IP a una dirección MAC, es decir es el proceso inverso. El cual es utilizado en estaciones que no tienen disco y no tienen dirección IP cuando son activadas.
SERVIDORES DE ALTA DISPONIBILIDAD 37
CIBERTEC CARRERAS PROFESIONALES
4. Internet Control Messages Protocol (ICMP)
ICMP es utilizado cuando un router o host debe informar al host o router origen acerca de errores en el procedimiento de los paquetes. No está diseñado para ser absolutamente confiable. El propósito de ICMP es proveer retroalimentación acerca de problemas en el ambiente de comunicación.
Fig. 6. Cabecera ICMP
Esta cabecera tiene los siguientes campos:
Tipo – Campo de 8 bits que identifica el tipo de paquete.
Código – Campo de 8 bits que especifica el tipo de paquete ICMP.
Suma de verificación – Campo de 16 bits de código de chequeo de error referido a la cabecera ICMP.
ICMP es aparentemente un protocolo simple; sin embargo, puede ser utilizado con propósitos destructivos.
38
CARERRAS PROFESIONALES CIBERTEC
Fig. 7. ICMP – Comando ping
Fig. 8. ICMP – Comando tcpdump
5. Cabecera IP
La cabecera IP se muestra en la Fig. 5. Tiene una longitud predeterminada de 20 bytes. Si existen opciones habilitadas, se agregan hasta 4 bytes adicionales. Esta cabecera tiene los siguientes campos:
SERVIDORES DE ALTA DISPONIBILIDAD 39
CIBERTEC CARRERAS PROFESIONALES
Versión – Campo de 4 bits que identifica la versión IP utilizada. Por defecto, es 4, IPv4.
Longitud de la cabecera – Campo de 4 bits.
Tipo de servicio – Campo de 8 bits dónde se especifica cómo los protocolos de capa superior serán manejados y se asignan diferentes niveles de importancia como:
o Precedencia o Retardo minimizado o Máxima transferencia (throughput) o Máxima fiabilidad (Reliability) o Minimizar el costo monetario o Reservado
Longitud Total – Campo de 16 bits que indica el tamaño máximo del paquete en bytes.
Identificación – Campo de 16 bits que indica el número de identificación del paquete IP.
Flags – Campo de 3 bits dónde los 2 bits de menor orden controlan la fragmentación y el de mayor orden no es utilizado. o Reservado o No fragmentado o Más fragmentos
Orden de los Fragmentos – Campo de 13 bits que indica la posición del dato fragmentado respecto al inicio de los datos en el paquete original.
Tiempo de Vida – Campo de 8 bits que mantiene un contador que decrece por cada salto y, si llega a cero el paquete, es descartado.
Protocolo – Campo de 8 bits que identifica el protocolo de la capa de transporte que sigue a continuación.
Fig. 9. Cabecera IP
Suma de verificación – Campo de 16 bits de código de chequeo de error referido a la cabecera IP para aseguramiento de integridad de la cabecera IP.
40
CARERRAS PROFESIONALES CIBERTEC
Dirección Origen – Campo de 32 bits que indica la dirección origen.
Dirección destino – Campo de 32 bits que indica la dirección destino.
Opciones – Permite a IP soportar varias opciones, tales como: Loose source Routing, Strict Source Routing, Record Route y Timestamp.
6. Cabecera TCP El protocolo TCP es seleccionado cuando las aplicaciones y servicios trabajan con sesiones orientadas a la conexión (garantiza la entrega de los datos). Los campos TCP son:
Puerto Origen – Campo de 16 bits que identifica el puerto origen utilizado en la sesión.
Puerto destino – Campo de 16 bits que identifica el puerto destino utilizado en la sesión.
Número de secuencia – Campo de 32 bits que identifica dónde corresponden los datos encapsulados dentro de una cadena de datos que vienen desde el emisor.
Número de acuse de recibo – Campo de 32 bits que identifica el siguiente número de secuencia que la fuente espera recibir desde el destinatario. Con este valor se controla la secuencia y la perdida de paquetes.
Longitud de la Cabecera – Campo de 4 bits que indica cuantas palabras (32 bits) hay en la cabecera TCP.
Reservado – Campo de 6 bits que siempre está en cero no utilizados por ahora.
Fig. 10. Cabecera TCP
SERVIDORES DE ALTA DISPONIBILIDAD 41
CIBERTEC CARRERAS PROFESIONALES
Flags – Campo de 6 bits que corresponden a los indicadores de estado de sesión:
o URG. Urgente o ACK. Acuse de Recibo o PSH. Push o RST. Reset o SYN. Sincronizado o FIN. Final
Tamaño de la ventana – Campo de 16 bits utilizado para el control de flujo. Especifica el número de octetos empezando con el octeto indicado por el número de reconocimiento que el emisor del segmento acepta a su par en el otro extremo de la conexión, antes que su par deje de transmitir y espera por un reconocimiento.
Suma de verificación – Campo de 16 bits que verifica la integridad d ela cabecera TCP.
Puntero urgente – utilizado únicamente cuando el flag URG está en uno.
Opciones – Diseñado para contar con características extras no cubiertas en la cabecera estándar.
7. Cabecera UDP EL protocolo UDP es utilizado por aplicaciones y servicios que trabajan con sesiones no orientas a la conexión pero cuyo tamaño es menor que el protocolo TCP. El protocolo de transporte UDP es utilizado cuando en el campo puerto de la cabecera IP el valor es 17 (11H). Tiene los mismos campos que en el caso de TCP, pero sólo tiene los campos puerto origen y destino, longitud de la cabecera y suma de verificación.
Fig. 11. Cabecera UDP
8. Saludos de tres vías (Handshake) Es el proceso de establecimiento de una sesión entre dos hosts a nivel de la capa de trasporte. Se describe en tres pasos:
42
CARERRAS PROFESIONALES CIBERTEC
Paso 1 – Envía un paquete de sincronización (SYN) y un número de secuencia inicial (ISN). La máquina cliente (Host A) desea establecer una conexión hacia el servidor (Host B). La máquina cliente (Host A) envía un paquete hacia la maquina servidor (Host B) con el bit de sincronización (SYN), establece el anuncio de una nueva conexión y un número de secuencia inicial (ISN) que permitirán rastrear los paquetes enviados a cualquier máquina. (Ver Fig. 12)
Fig. 12.
Paso 2 – Permite que la máquina remota responda con un reconocimiento (ACK). La máquina servidor (Host B) responde al pedido enviando un paquete con el bit de sincronización (SYN) y el bit ACK establecido en el paquete hacia el llamado de la maquina cliente (Host A). Este paquete no solo contiene el numero de secuencia de solicitud de respuesta del cliente; también, el número de secuencia inicial más uno (ISN+1). Esto indica que el paquete remoto se recibió correctamente como parte de el reconocimiento y se aguarda la próxima transmisión. (Ver Fig. 13)
Fig. 13.
Paso 3 – Completa la negociación para enviar un final de
reconocimiento hacia la maquina remota. En este punto, la máquina cliente (Host A) envía la siguiente parte final del reconocimiento (ACK) y el numero de secuencia para indicar una recepción satisfactoria y se establece la conexión. (Ver Fig. 14).
Fig. 14.
A continuación se muestra la captura de paquetes con el programa Wireshark (sniffer). Se puede observar el saludo de tres vía de una sesión TCP.
SERVIDORES DE ALTA DISPONIBILIDAD 43
CIBERTEC CARRERAS PROFESIONALES
Fig. 15. Handshake
9. Seguridad TCP/IP
En Linux, muchas opciones del kernel están relacionados con la seguridad de la red, como descartar paquetes que ingresan a través de la interface de red o ignorar solicitudes ping, etc. Esto se puede establecer en el archivo /etc/sysctl.conf en vez del archivo /etc/rc.d/rc.local. Las colocaciones de sysctl se guardan en /etc/sysctl.conf y son cargadas hacia cada inicio del sistema o reinicio del servicio network antes de cargar el archivo /etc/rc.d/rc.local. Para visualizar todo los valores sysctl actualmente disponible, use el comando (Ver Figura 16):
Sysctl -a
44
CARERRAS PROFESIONALES CIBERTEC
Figura 16. Comando sysctl
Después de cualquier cambio en el archivo /etc/sysctl.conf, los parámetros del kernel serán modificados en tiempo real al ejecutar el siguiente comando:
Sysctl –p /etc/sysctl.conf A continuación, se explica el procedimiento a seguir para habilitar o deshabilitar parámetros que son necesarios para proteger su sistema Linux: Prevenir al sistema que responda solicitudes ping
Prevenir que tu sistema responda a solicitudes ping puede hacer mejorar en forma considerable la seguridad de tu red, dado que nadie puede hacer ping a tu servidor y recibas solamente respuesta a tus solicitudes. La suite del protocolo TCP/IP tiene varias debilidades que permite que un atacante use técnicas ocultas que le permitan interferir el envío de los datos que se remiten bajo la forma de paquetes inofensivos. No responder hacia solicitudes de comandos ping que son enviados por la mayoría de "crackers" que se encuentra en Internet, ya que de esta manera no se sabrá si estamos allí. net.ipv4.icmp_echo_ignore_all=1
NOTA: Existe otra manera de actualizar sin reiniciar el servicio de red (network) ejecutando el comando sysctl en una consola de la siguiente manera:
SERVIDORES DE ALTA DISPONIBILIDAD 45
CIBERTEC CARRERAS PROFESIONALES
Sysctl –w net.ipv4.icmp_echo_ignore_all=1
Rechazar a responder a solicitudes broadcast Cuándo un paquete es enviado a una dirección IP de transmisión o difusión de mensajes (broadcast), como por ejemplo la dirección IP 192.168.1.255 de una máquina en la red local, este paquete es entregado a todas las máquinas de esta red. Entonces, todas las máquinas de la red responden a este pedido de mensaje ICMP (echo request) y el resultado es que se producirá una congestión severa de la red o ataques de Denegación de Servicio. net.ipv4.icmp_echo_ignore_broadcats=1
Encaminar Protocolos
Encaminar y dirigir los protocolos pueden crear varios problemas. Encaminar el origen de una IP, en donde un paquete IP contiene detalles de la ruta hacia su destino, es peligroso porque, según RFC 1122, la máquina destino debe responder por la misma ruta Si un atacante puede encaminar el origen de un paquete dirigido a tu red, entonces él sería capaz de interceptar las contestaciones y engañar a tu servidor pensando que se comunica con un servidor de confianza.
Se recomienda que deshabilites encaminar el origen de los paquetes IP en todas las interfaces de red habilitadas en tu sistema para proteger a tu servidor de estos ataques. Como ejemplo, se tiene una máquina con dos interfaces de red (lo y eth0) que están activas y se procederá a configurar el sistema para que no encamine el origen de paquetes IP en todas las interfaces de red.
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
Habilitar la Protección de Cookie TCP SYN Un "Ataque SYN" es una negación de servicio (DoS) que consume todos los recursos en su máquina, forzando a reiniciar tu sistema. Las negaciones de ataques de servicio son ataques que incapacitan a tu servidor debido a un alto volumen de negociación consumiendo recursos del sistema, de tal modo que el servidor no pueda responder a un pedido legítimo.
net.ipv4.tcp_syncoockies=1
Deshabilitar ICMP redirigidos Un ICMP redirigido se emplea para avisar al receptor que tiene que omitir alguna información de su tabla de rutas. Normalmente, se emplea para informar que una ruta no es optima y cuál es la nueva ruta a seguir.
46
CARERRAS PROFESIONALES CIBERTEC
Esta opción posibilita a un atacante alterar la tabla de rutas de su máquina Firewall a sus necesidades.
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
NOTA: Si el kernel es configurado para una máquina regular, se establece por defecto “yes” para este parámetro en caso de ser aceptado y “no” debe ser cuando se hace configuración de enrutamientos. Donde “ 1 ” significa yes, y “ 0 “ significa no.
Habilitar la Protección contra malos mensajes de error Esta opción pondrá sobre aviso a usted acerca de todos los malos mensajes de error en su red.
net.ipv4.icmp_ignore_bogus_error_responses=1
Habilitar la protección de spoofing El spoofing consiste en modificar la dirección origen de un paquete de forma que la máquina que recibe el paquete crea que proviene de una máquina de confianza.
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.lo.rp_filter=1
net.ipv4.conf.eth0.rp_filter=1
net.ipv4.conf.default.rp_filter=1
NOTA: Este parámetro previene de ataques spoofing contra sus redes internas, pero contra sus direcciones externas se pueden presentar todavía ataques spoofing.
SERVIDORES DE ALTA DISPONIBILIDAD 47
CIBERTEC CARRERAS PROFESIONALES
Autoevaluación
1. ¿Qué puerto es usado en las consultas DNS?
(a) 110 (b) 143 (c) 53 (d) 21 (e) 58
2. ¿Cuáles de las siguientes oraciones son verdaderas? (Seleccione 2
opciones)
Para establecer una sesión a nivel de UDP, se efectúa el proceso de handshaking.
ICMP informa de errores en el procedieminto de los paquetes al host
origen.
HTTP es un protocolo de la capa 7 del modelo OSI.
Mediante ARP se obtiene la máscara de red de la dirección IP.
Las opciones de seguridad TCP/IP se pueden defnir en el archivo /etc/sysctl.conf.
3. ¿Por qué es importante mantener una sesión orientada a la conexión?
4. Describa el saludo de tres vías.
48
CARERRAS PROFESIONALES CIBERTEC
Stateful packet inspection
firewall I
TEMA Describir el uso de Netfilter.
OBJETIVOS ESPECÍFICOS
Comprender el funcionamiento del filtrado de paquetes entrantes y salientes.
Comprender el uso de la politica predeterminada DROP.
CONTENIDOS
Netfilter
Filtrado de paquetes entrantes/salientes
Filtrado de paquetes salientes/entrantes
S E M A N A
4
SERVIDORES DE ALTA DISPONIBILIDAD 49
CIBERTEC CARRERAS PROFESIONALES
Netfilter
Netfilter (http://www.netfilter.or) es la última generación de las utilidades para filtrados de paquetes (Packet Filtering), incluidos en el Kernel de Linux. La primera generación fue un port de IPFW (BSD), por Alan Cox, cerca de 1994. Con la aparición de la versión 2.0 de Linux, se creo la utilidad ipfwadm para regular el filtrado usando una herramienta desde el espacio de usuario. En 1998, junto con la aparición del Kernel 2.2, se introdujo la segunda generación, IPChains, una combinación de módulos y programas de usuario para el control de flujo de paquetes. Cerca del 99, al aparecer la versión 2.4, gran parte de la API de IPChains fue reescrita dando origen a la cuarta generación, Iptables. El principal responsable es Paul "Rusty" Russell, quien desarrollo Netfilter cuando trabajaba en Watchguard (http://www.watchguard.com). Es además una infraestructura completa insertada dentro del kernel, incluida desde algunas versiones 2.3 y agregado oficialmente en la serie 2.4. Está compuesta por una serie de módulos y un software para controlar las reglas. De esta manera, permite que un modulo de kernel, más una utilidad presente dentro del espacio de usuario, controlen el flujo de paquetes que van desde y hacia las interfaces de red. Netfilter es aplicable para cualquier sistema de Filtrado de Paquetes (o Packet Filter). Y es usado principalmente, por tres razones: Control de Trafico (o Flujo de Red) Seguridad (de Servicios de Red) Observación (del Trafico actual) 1.1. Funcionamiento
En IPTables, existen 4 tipos de tablas (ver Fig. 1): raw, filter, nat y mangle (manipulación). Cada una de estas tablas posee cadenas internas. Por ejemplo, filter posee INPUT, OUTPUT y FORWARD. IPTables cambia el contexto en el cual el paquete es interpretado. En el caso de la tabla filter, las cadenas INPUT y OUTPUT se refieren al equipo local, haciendo que el camino de cada uno de los paquetes parezca más limpio al momento de manipularlos. Existe también la tabla de tipo "transversal", que es el etiquetado y manipulado de paquetes (entendido comúnmente como paquetes que viajan de una interfaz a otra). Generalmente, es asumido por la cadena FORWARD (filter). Esta cadena está de forma intermedia entre una cadena de pre-ruta (PREROUTING) y una de post-ruta (POSTROUTING), quienes realizan funciones de NAT y
50
CARERRAS PROFESIONALES CIBERTEC
enmascaramiento de IP (IP Masquerading), pertenecientes a la tabla nat.
SERVIDORES DE ALTA DISPONIBILIDAD 51
CIBERTEC CARRERAS PROFESIONALES
Fig. 1. Viaje del paquete1
La tabla mangle permite la reescritura completa de paquetes (o tramas completas) combinando la funcionalidad dentro de las cadenas dentro de filter (INPUT, OUTPUT y FORWARD) y nat (PREROUTING y POSTROUTING). La tabla raw es usada únicamente para una cosa, es para marcar los paquetes para que ellos no puedan ser manipulados por un sistema de rastreo. 1.1.1. Cadenas Las cadenas son las indicaciones del paso de los paquetes dentro de la utilización interna de Netfilter.
Antes de ingresar los paquetes al sistema de Netfilter, es realizada una suma de comprobacion (Checksum). Si es correcta, los paquetes transitan hacia la regla PREROUTING, quien se encarga, primero, de determinar si los paquetes son considerados locales o deben ser reenviados a otra interfaz. Si son considerados locales, estos son enviados a la cadena INPUT. Si no son considerados locales, estos son enviados a la regla FORWARD. NOTA: los paquetes que no son considerados "locales" son aquellos que, por lo general, pertenecen a otra subred. Antes de que los paquetes abandonen el sistema (de Netfilter), son recibidos por la cadena POSTROUTING antes de ser enviados a la interfaz destino. La cadena OUTPUT solamente es utilizada cuando los paquetes hayan sido originados localmente. Además, los paquetes que pasen por la cadena OUTPUT necesariamente pasan por POSTROUTING.
1.1.2. Tablas
Una tabla es una indicación al sistema de filtros, que debe manejar una cierta cantidad de reglas internas y "cadenas". Existen tres tablas por defecto llamadas filter, mangle y nat.
1 Fuente: http://iptables-tutorial.frozentux.net/iptables-tutorial.html
52
CARERRAS PROFESIONALES CIBERTEC
Filter La tabla filter es usada para filtrado general de paquetes. Está compuesto por las cadenas INPUT (entrada), OUTPUT (salida) y FORWARD (reenvió o traspaso). Esta cadena hace posible permitir cierto tipo de conexión a cierto tipo de interfaces desde ciertos hosts. Una de las ventajas principales es que esta extensión es rápida y eficiente.
Nat La tabla nat es usada para paquetes que se deben reenviar (entre interfaces), además de modificar o "traducir" su comportamiento. NAT significa Network Address Translation (Traducción de Direcciones de Red) y es usado principalmente en IP Masquerading y Port Forwarding. Está compuesta por las cadenas PREROUTING (pre-ruta), POSTROUTING (post-ruta) y OUTPUT (salida). Algunos de los usos típicos para la tabla Nat son NAT de Origen (Source NAT), Nat de Destino (Destination NAT), Enmascaramiento (IP Masquerading) y Proxys Transparentes (una forma especial de Destination NAT).
Mangle La tabla mangle permite alterar paquetes y tramas. Es generalmente usada para enrutamiento avanzado (por ejemplo, TOS) y consiste en las reglas PREROUTING y OUTPUT. A través de esta tabla, es posible alterar el paquete (y los pertenecientes a la misma conexión) o algunos de los datos pertenecientes a el.
Raw Esta última tabla está destinada para realizar excepciones al seguimiento de los paquetes a medida que entran y salen, es decir, mediante una regla configurada en esta tabla se puede realizar la transferencia de un paquete sin que se verifique la entrada o salida de dicho paquete, finalmente, trabaja con las cadenas PREROUTING y OUTPUT.
1.1.3. Extensiones
Dentro de Netfilter, existen distintas extensiones, que son utilizadas en dos instancias solamente: Coincidencias (matches) y Acciones (targets). Algunas de estas extensiones son particulares para cada una de las tablas.
SERVIDORES DE ALTA DISPONIBILIDAD 53
CIBERTEC CARRERAS PROFESIONALES
Coincidencias (Matches)
Una coincidencia (match) ocurre cuando un paquete corresponde al indicado dentro de alguna de las cadenas. Puede ser a través del protocolo (TCP), algún puerto en particular (22), un usuario propietario del paquete (OWNER), el estado de la transacción (INVALID), por ejemplo. O la combinación de todos ellos, en particular.
Acciones (Targets)
Se indican como el destino final del proceso de un paquete, o de una transacción. Indica realmente "qué hacer " una vez que se ha cumplido la coincidencia. Algunas de las acciones pueden ser desechar el paquete por completo (DROP), retransmitirlo (MIRROR), o bien, indicar a través de ksyslogd (la utilidad de kernel para logging) que una coincidencia fue exitosa (LOG). De por sí, corresponde solo una acción por coincidencia, aunque con un poco de práctica, es posible agregar más de una.
1.1.4. Entendiendo las Reglas del Juego Como se indicó anteriormente, para el uso de Netfilter, es necesario utilizar, además de los módulos del kernel, la utilidad IPTables. A través del comando iptables, es posible insertar/eliminar/modificar reglas dentro de Netfilter. Algunas de las características de esta herramienta son: Permite el uso de distintas tablas de IP. Mientras tanto,
sólo existen 4 (raw, filter, nat y mangle), pero permite el manejo de futuras tablas.
Permite el uso de plug-ins para nuevos coincidencias y
acciones. Así, no es necesario modificar los módulos o IPtables para agregar una extensión adicional.
Nativamente, puede manejar IPv4 e IPv6 usando la misma
librería y el mismo código.
54
CARERRAS PROFESIONALES CIBERTEC
1.2. IPTables
Iptables -t [tabla] -[operación] [cadena] [descripción de la coincidencia] -j [acción]
Un comando básico de IPTables está compuesto de 5 partes, que son: La tabla a usar (raw, filter, nat o mangle) La cadena a usar, que puede ser una de las cadenas por defecto
(INPUT, por ejemplo) o bien cadenas creadas por el usuario La operación (insertar/modificar/eliminar/etc.) Una descripción de los paquetes que deben coincidir con esta regla
(la "coincidencia") Un destino (target) para esta regla particular
NOTA1: Cuando no se indica la tabla a usar, por defecto se usa la tabla "filter". NOTA 2: en algunas publicaciones, pueden encontrar ejemplos del tipo # iptables -t tabla -j [accion] -[operacion] [etc/etc..] lo que indica que el orden no altera el producto 1.2.1. Operaciones básicas
Algunas de las operaciones básicas sobre las cadenas (existen más) son: A (add): agrega una regla al final de la cadena. I (insert): agrega una regla al principio de la cadena. R (replace): reemplaza una regla por otra. D (delete): elimina una regla. F (flush): elimina todas las reglas de la cadena. Es
equivalente a borrar las reglas una por una. L (list): muestra las reglas dentro de la cadena.
1.2.2. Coincidencias básicas Para indicar a Netfilter qué hacer con los paquetes de una transacción, se debe crear una coincidencia, lo más precisa posible. La idea es que la coincidencia sea inequívoca, tanto como para quien creó la regla (usuario) como para el kernel. Algunas coincidencias básicas son -p [protocolo]: indica qué protocolo debe realizarse la
comprobacion. Algunos de los valores son tcp, udp, icmp o
SERVIDORES DE ALTA DISPONIBILIDAD 55
CIBERTEC CARRERAS PROFESIONALES
all. Tambien puede ser un número, o alguno de los indicados en /etc/protocols.
-s [ip/mascara]: indica la dirección IP del origen de la transacción. Puede indicarse también de la forma IP/máscara para decirle a Netfilter que es un grupo de hosts.
-d [ip/mascara]: indica la dirección IP destino de la transacción.
-i [interfaz]: indica la interfaz de entrada desde donde se recibió la transacción o los paquetes. (Nota: solo usado por las cadenas INPUT, FORWARD y PREROUTING)
-o [interfaz] : indica la interfaz de salida de la transacción (Nota: sólo usada por OUTPUT, FORWARD y POSTROUTING)
--sport: Indica el puerto de origen de la transacción. --dport: Indica el puerto de destino de la transacción. Nota: --sport y --dport son usados cuando se indica que el protocolo es tcp o udp solamente)
1.2.3. Acciones básicas
Algunas acciones son comunes de todas las cadenas. Otras son específicas. Algunas acciones básicas son: ACCEPT: acepta el paquete/transacción. DROP: rechaza el paquete/transacción REJECT: rechaza el paquete/transacción. A diferencia de
DROP, notifica al emisor que el paquete/transacción fue descartado.
LOG: indicará que el resultado obtenido al aplicar una determinada regla deberá ser guardado en un reporte.
1.2.4. Ejemplos Ahora, algunos ejemplos simples. Estos ejemplos usan la tabla "filter", ya que es la más fácil de utilizar. Son algo básicos, pero servirán de apoyo para el próximo punto. Permitir el trafico ICMP de entrada
Iptables -A INPUT -p icmp -j ACCEPT
Permitir que la interfaz eth0 pueda enviar paquetes ICMP
Iptables -A OUTPUT -p icmp -o eth0 -j ACCEPT
Denegar (DROP) la conexión al puerto 25, protocolo tcp, de
la interfaz eth1 Iptables -A INPUT -i eth1 -p tcp --dport 25 -j DROP
56
CARERRAS PROFESIONALES CIBERTEC
Rechazar (REJECT) la conexión al puerto 65000, protocolo udp, de la interfaz eth0, desde los computadores de la LAN (red local) del tipo 192.168.1.X/255.255.255.0 Iptables -A INPUT -i eth0 -p udp --dport 65000 -s
192.168.1.0/255.255.255.0 -j REJECT
Denegar el tráfico desde la eth0 a la eth1 (FORWARD)
Iptables -A FORWARD -i eth0 -o eth1 -j DROP
Denegar el tráfico desde la eth0 a la eth1 del protocolo tcp
Iptables -A FORWARD -i eth0 -o eth1 -p tcp -j DROP
Le estás diciendo que si esa mac tiene un ip DIFERENTE (!)
al 192.168.1.22, descarte los paquetes. Iptables -t nat -A PREROUTING -m mac --mac-source
00:16:76:8f:DE:F2 -i eth1 –s ! 192.168.1.22 -j DROP
2. Filtrado de paquetes entrantes/salientes
Como se muestra en la Fig. 2, el equipo con dirección IP 10.0.0.1 puede hacer ping al equipo con dirección IP 10.0.0.2. En este caso, se usan los mensajes de control Echo Request (Tipo 8) y Echo Reply (Tipo 0) del protocolo ICMP.
Fig. 2. Comando ping
2.1. Política predeterminada ACEPTAR TODO
Para filtrar la respuesta al comando ping podemos realizar lo siguiente:
Filtrar el paquete entrante: echo-request En el equipo 10.0.0.2, ejecutamos:
SERVIDORES DE ALTA DISPONIBILIDAD 57
CIBERTEC CARRERAS PROFESIONALES
Centos: ~# iptables -A INPUT -p icmp --icmp-type 8 -s 10.0.0.1 -j DROP
Fig. 3. Filtrando echo-request
Centos: ~# iptables -L
Chain INPUT (policy ACCEPT)
Target prot opt source destination
DROP icmp -- 10.0.0.1 anywhere icmp echo-
request
Chain FORWARD (policy ACCEPT)
Target prot opt source destination
Chain OUTPUT (policy ACCEPT)
Target prot opt source destination
Debian: ~#
Filtrar el paquete saliente: echo-reply En el equipo 10.0.0.2, ejecutamos:
Centos: ~# iptables -A OUTPUT -p icmp --icmp-type 0 -d 10.0.0.1 -j
DROP
Fig. 3. Filtrando echo-reply
Centos: ~# iptables -L
58
CARERRAS PROFESIONALES CIBERTEC
Chain INPUT (policy ACCEPT)
Target prot opt source destination
Chain FORWARD (policy ACCEPT)
Target prot opt source destination
Chain OUTPUT (policy ACCEPT)
Target prot opt source destination
DROP icmp -- anywhere 10.0.0.1 icmp echo-
reply
Centos: ~#
2.2. Politica predeterminada DENEGAR TODO
Para permitir que la respuesta al comando ping ingrese al equipo, podemos realizar lo siguiente:
Centos: ~# iptables -P INPUT DROP
Centos: ~# iptables -P OUTPUT DROP
Centos: ~# iptables -A INPUT -i lo -j ACCEPT
Centos: ~# iptables -A OUTPUT -o lo -j ACCEPT
Centos: ~# iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
Centos: ~# iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
3. Filtrado de paquetes salientes/entrantes
Como se muestra en la Fig. 4, el equipo con dirección IP 10.0.0.2 puede hacer ping al equipo con dirección IP 10.0.0.1
Fig. 4. Comando ping
3.1. Política predeterminada ACEPTAR TODO
En el caso de que se desee bloquear el comando ping desde la maquina firewall, podemos hacer lo siguiente:
Filtre el paquete saliente: echo-request
SERVIDORES DE ALTA DISPONIBILIDAD 59
CIBERTEC CARRERAS PROFESIONALES
En el equipo 10.0.0.2, ejecutamos:
Centos: ~# iptables -A OUTPUT -p icmp --icmp-type 8 -d 10.0.0.1
-j DROP
Centos: ~# iptables -L
Chain INPUT (policy ACCEPT)
Target prot opt source destination
Chain FORWARD (policy ACCEPT)
Target prot opt source destination
Chain OUTPUT (policy ACCEPT)
Target prot opt source destination
DROP icmp -- anywhere 10.0.0.1 icmp echo-
request
Centos: ~#
Centos: ~# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
Ping: sendmsg: Operation not permitted
Ping: sendmsg: Operation not permitted
Ping: sendmsg: Operation not permitted
Ping: sendmsg: Operation not permitted
--- 10.0.0.1 Ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time
3000ms
Centos: ~#
Filtre el paquete entrante: echo-reply En el equipo 10.0.0.2, ejecutamos:
Centos: ~# iptables -A INPUT -p icmp --icmp-type 0 -s 10.0.0.1
-j DROP
Centos: ~# iptables -L
Chain INPUT (policy ACCEPT)
Target prot opt source destination
DROP icmp -- 10.0.0.1 anywhere icmp echo-
reply
Chain FORWARD (policy ACCEPT)
Target prot opt source destination
Chain OUTPUT (policy ACCEPT)
Target prot opt source destination
Centos: ~#
Centos: ~# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
--- 10.0.0.1 Ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time
6998ms
Centos: ~#
60
CARERRAS PROFESIONALES CIBERTEC
3.2. Politica predeterminada DENEGAR TODO
Para permitir que la peticion del comando ping salga del equipo, podemos realizar lo siguiente:
Centos: ~# iptables -P INPUT DROP
Centos: ~# iptables -P OUTPUT DROP
Centos: ~# iptables -A INPUT -i lo -j ACCEPT
Centos: ~# iptables -A OUTPUT -o lo -j ACCEPT
Centos: ~# iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
Centos: ~# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
SERVIDORES DE ALTA DISPONIBILIDAD 61
CIBERTEC CARRERAS PROFESIONALES
Autoevaluación
1. ¿Cuáles son las cadenas de la tabla filter?
(a) POSTROUTING, OUTPUT y INPUT (b) OUTPUT,FORWARD y PREROUTING
(c) PREROUTING, OUTPUT y POSTROUTING
(d) INPUT, OUTPUT y FORWARD
2. Asumiendo que la política global es aceptar todo lo que no se deniega explícitamente. Implementar las siguientes reglas de filtrado de paquetes a mi maquina local 200.60.172.252. Evite ciertos ataques spoof colocando filtros antispoof para los paquetes provenientes de la siguiente red 172.16.0.0/255.255.0.0
(a) iptables -A INPUT -s 172.16.0.0/27 -d 200.60.172.252 -j DROP (b) iptables -A INPUT -s 200.60.172.252 -d 172.16.0.0/24 -j DROP
(c) iptables -A INPUT -s 172.16.0.0/16 -d 200.60.172.252 -j DROP
(d) iptables -A OUTPUT -s 172.16.0.0/24 -d 200.60.172.252 -j DROP
(e) iptables -A FORWARD -s 172.16.0.0/24 -d 200.60.172.252 -j
DROP
3. ¿Listas cada una de las arquitecturas de Firewall?
62
CARERRAS PROFESIONALES CIBERTEC
Stateful packet inspection
firewall II
TEMA Describir el uso de Netfilter.
OBJETIVOS ESPECÍFICOS Comprender el funcionamiento del filtrado de paquetes reenviados.
Comprender el funcionamiento del enmascaramiento.
Comprender el uso de la politica predeterminada DROP.
CONTENIDOS Filtrado de paquetes reenviados.
S E M A N A
5
SERVIDORES DE ALTA DISPONIBILIDAD 63
CIBERTEC CARRERAS PROFESIONALES
Filtrado de paquetes reenviados 1.1. Permitir la salida de la LAN a Internet
Política predeterminada: ACEPTAR TODO
Fig. 1. Red
Verificamos que las estaciones de trabajo estén correctamente
configuradas.
Debian: ~# ifconfig eth0
Eth0 Link encap: Ethernet Hwaddr 00:00:21:B6:27:22
Inet addr: 10.0.0.2 Bcast: 10.255.255.255
Mask:255.0.0.0
Inet6 addr: fe80: 200:21ff:feb6:2722/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 71 errors: 0 dropped: 0 overruns: 0
frame:0
TX packets: 464 errors: 0 dropped:0 overruns:0
carrier:0
Collisions: 0 txqueuelen: 1000
RX bytes: 5552 (5.4 KiB) TX bytes: 50668 (49.4 KiB)
Interrupt: 11 Base addresses: 0x6400
Debian: ~# route –n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0
eth0
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0
eth0
Debian: ~# cat /etc/resolv.conf
Search home
Nameserver 208.67.222.222
Nameserver 208.67.220.220
#nameserver 200.48.225.130
64
CARERRAS PROFESIONALES CIBERTEC
#nameserver 200.48.225.146
Debian: ~# host www.google.com
Nameserver not responding
www.google.com A record not found, try again
Debian: ~#
Como se puede observar, los parámetros de red están correctamente configurados, pero al realizar una consulta DNS no hay respuesta, esto debido a que el firewall no está configurado.
Configuración del firewall para permitir la salida a Internet de la LAN.
[root@FW ~]# Echo 1 > /proc/sys/net/ipv4/ip_forward
[root@FW ~]# Iptables –t nat –A POSTROUTING –s 10.0.0.0/8 –j SNAT
–to-source 192.168.1.3
[root@FW ~]# Iptables –L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPTS)
Target prot opt source destination
Chain OUTPUT (policy ACCEPT)
Target prot opt source destination
[root@FW ~]# Iptables –L –t nat
Chain PREROUTING (policy ACCEPT)
Target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
Target prot opt source destination
SNAT all -- 10.0.0.0/8 anywhere to: 192.168.1.3
Chain OUTPUT (policy ACCEPT)
Target prot opt source destination
[root@FW ~]#
Después de configurar el firewall podemos salir a Internet.
Debian: ~# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.914 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.728 ms
--- 10.0.0.1 Ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
Rtt min/avg/max/mdev = 0.728/0.821/0.914/0.093 ms
Debian: ~# ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=127 time=1.28 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=127 time=1.16 ms
--- 192.168.1.2 ping statistics ---
SERVIDORES DE ALTA DISPONIBILIDAD 65
CIBERTEC CARRERAS PROFESIONALES
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
Rtt min/avg/max/mdev = 1.165/1.226/1.287/0.061 ms
Debian: ~# host www.google.com
www.google.com CNAME google.navigation.opendns.com
Google.navigation.opendns.com A 208.67.219.230
Google.navigation.opendns.com A 208.67.219.231
Debian: ~#
1.2. Permitir el ingreso desde Internet hacia la LAN
Política predeterminada: ACEPTAR TODO
Permitir que los paquetes se reenvíen al Servidor HTTP de la LAN.
Fig. 2. Red
Si no se configura el Firewall los paquetes entrantes desde Internet no podrán ingresar al Servidor HTTP (Ver Fig. 3).
Ejecute en el Servidor Firewall los siguientes comandos:
[root@FW ~]# Iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -
j DNAT --to-destination 10.0.0.2
[root@FW ~]# Iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
Target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt: http to: 10.0.0.2
Chain POSTROUTING (policy ACCEPT)
Target prot opt source destination
66
CARERRAS PROFESIONALES CIBERTEC
SNAT all -- 10.0.0.0/8 anywhere to: 192.168.1.3
Chain OUTPUT (policy ACCEPT)
Target prot opt source destination
[root@FW ~]#
Fig. 3. Acceso denegado
Como se muestra, ya se puede ingresar al Servidor HTTP
SERVIDORES DE ALTA DISPONIBILIDAD 67
CIBERTEC CARRERAS PROFESIONALES
Fig. 4. Acceso permitido
1.3. Permitir el ingreso desde Internet hacia la LAN
Política predeterminada: DENEGAR TODO
Creación de script básico:
[root@FW ~]# Cat fw.sh
Iptables -F
Iptables -X
Iptables -Z
Iptables -t nat F
Iptables -P INPUT ACCEPT
Iptables -P OUTPUT ACCEPT
Iptables -P FORWARD DROP
Modprobe ip_tables
Modprobe iptable_nat
Modprobe ip_conntrack
Modprobe ip_conntrack_ftp
Modprobe ip_conntrack_netbios_ns
Modprobe ip_nat_ftp
Modprobe ipt_LOG
Modprobe ipt_MARK
Modprobe ipt_MASQUERADE
Modprobe ipt_REDIRECT
Modprobe ipt_TOS
68
CARERRAS PROFESIONALES CIBERTEC
Modprobe ipt_REJECT
Modprobe ipt_limit
Modprobe ipt_mac
Modprobe ipt_state
Modprobe ipt_multiport
Modprobe ipt_tos
Modprobe ipt_mark
Modprobe x_iptable
Modprobe iptable_filter
Iptables -A FORWARD -j LOG
Echo 1 > /proc/sys/net/ipv4/ip_forward
Iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j SNAT --to-source
192.168.1.3
[root@FW ~]#
[root@FW ~]# Iptables -L
Chain INPUT (policy ACCEPT)
Target prot opt source destination
Chain FORWARD (policy DROP)
Target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
Chain OUTPUT (policy ACCEPT)
Target prot opt source destination
[root@FW ~]# Iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
Target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
Target prot opt source destination
Chain OUTPUT (policy ACCEPT)
Target prot opt source destination
[root@FW ~]#
Por el momento, están bloqueados los paquetes reenviados; por lo tanto, no hay salida de la LAN a Internet y tampoco pueden ingresar al Servidor HTTP
Permitir consultas a los Servidores DNS
[root@FW ~]# Iptables -A FORWARD -i eth1 -p tcp --dport 53 -j ACCEPT
[root@FW ~]# Iptables -A FORWARD -i eth1 -p udp --dport 53 -j ACCEPT
[root@FW ~]# Iptables -A FORWARD -i eth0 -p tcp --sport 53 -j ACCEPT
[root@FW ~]# Iptables -A FORWARD -i eth0 -p udp --sport 53 -j ACCEPT
[root@FW ~]# Iptables -L
SERVIDORES DE ALTA DISPONIBILIDAD 69
CIBERTEC CARRERAS PROFESIONALES
Chain INPUT (policy ACCEPT)
Target prot opt source destination
Chain FORWARD (policy DROP)
Target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp spt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp spt:domain
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@FW ~]#
[root@FW ~]# cat /proc/net/ip_conntrack
tcp 6 431999 ESTABLISHED src=192.168.1.2 dst=192.168.1.3 sport=1456
dport=22 packets=2019 bytes=182276 src=192.168.1.3 dst=192.168.1.2 sport=22
dport=1456 packets=2617 bytes=180216 [ASSURED] mark=0 use=1 rate=100
udp 17 6 src=10.0.0.2 dst=10.255.255.255 sport=138 dport=138 packets=2
bytes=500 [UNREPLIED] src=10.255.255.255 dst=10.0.0.2 sport=138 dport=138
packets=0 bytes=0 mark=0 use=1 rate=70
udp 17 177 src=10.0.0.2 dst=208.67.222.222 sport=1068 dport=53 packets=5
bytes=340 src=208.67.222.222 dst=192.168.1.3 sport=53 dport=1068 packets=5
bytes=607 [ASSURED] mark=0 use=1 rate=80
[root@FW ~]#
Esto no es suficiente para que desde la LAN puedan navegar
[root@FW ~]# cat /proc/net/ip_conntrack
tcp 6 52 SYN_RECV src=10.0.0.2 dst=208.111.148.94 sport=1035 dport=80 packe
ts=1 bytes=60 src=208.111.148.94 dst=192.168.1.3 sport=80 dport=1035 packets=5 b
ytes=320 mark=0 use=1 rate=10
udp 17 6 src=10.0.0.2 dst=208.67.222.222 sport=1070 dport=53 packets=1 byte
s=60 src=208.67.222.222 dst=192.168.1.3 sport=53 dport=1070 packets=1 bytes=108
mark=0 use=1 rate=30
udp 17 6 src=10.0.0.2 dst=208.67.222.222 sport=1071 dport=53 packets=1 byte
s=60 src=208.67.222.222 dst=192.168.1.3 sport=53 dport=1071 packets=1 bytes=92 m
ark=0 use=1 rate=20
udp 17 156 src=10.0.0.2 dst=208.67.222.222 sport=1069 dport=53 packets=2 by
tes=120 src=208.67.222.222 dst=192.168.1.3 sport=53 dport=1069 packets=2 bytes=2
00 [ASSURED] mark=0 use=1 rate=20
udp 17 6 src=10.0.0.2 dst=208.67.222.222 sport=1072 dport=53 packets=1 byte
s=60 src=208.67.222.222 dst=192.168.1.3 sport=53 dport=1072 packets=1 bytes=108
mark=0 use=1 rate=30
tcp 6 40 SYN_RECV src=10.0.0.2 dst=208.111.148.94 sport=1033 dport=80 packe
ts=1 bytes=60 src=208.111.148.94 dst=192.168.1.3 sport=80 dport=1033 packets=6 b
ytes=384 mark=0 use=1 rate=0
udp 17 133 src=10.0.0.2 dst=208.67.222.222 sport=1068 dport=53 packets=6 by
tes=400 src=208.67.222.222 dst=192.168.1.3 sport=53 dport=1068 packets=6 bytes=6
70
CARERRAS PROFESIONALES CIBERTEC
99 [ASSURED] mark=0 use=1 rate=20
tcp 6 51 SYN_RECV src=10.0.0.2 dst=208.111.148.94 sport=1034 dport=80 packe
ts=1 bytes=60 src=208.111.148.94 dst=192.168.1.3 sport=80 dport=1034 packets=5 b
ytes=320 mark=0 use=1 rate=10
[root@FW ~]#
Como se muestra, las únicas conexiones ASEGURADAS son las consultas DNS.
Permitir la salida de las peticiones al puerto 80
[root@FW ~]# iptables -A FORWARD -i eth1 -p tcp --dport 80 -j ACCEPT
[root@FW ~]# iptables -A FORWARD -i eth0 -p tcp --sport 80 -j ACCEPT
[root@FW ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp spt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp spt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp spt:http
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@FW ~]#
[root@FW ~]# cat /proc/net/ip_conntrack
tcp 6 7 TIME_WAIT src=10.0.0.2 dst=208.111.148.94 sport=1112 dport=80
packets=5 bytes=755 src=208.111.148.94 dst=192.168.1.3 sport=80 dport=1112
packets=5 bytes=1596 [ASSURED] mark=0 use=1 rate=570
udp 17 60 src=10.0.0.2 dst=208.67.222.222 sport=1136 dport=53 packets=2
bytes=120 src=208.67.222.222 dst=192.168.1.3 sport=53 dport=1136 packets=2
bytes=200 [ASSURED] mark=0 use=1 rate=60
tcp 6 8 TIME_WAIT src=10.0.0.2 dst=66.29.38.249 sport=1114 dport=80
packets=6 bytes=850 src=66.29.38.249 dst=192.168.1.3 sport=80 dport=1114
packets=4 bytes=581 [ASSURED] mark=0 use=1 rate=230
udp 17 59 src=10.0.0.2 dst=208.67.222.222 sport=1122 dport=53 packets=2
bytes=120 src=208.67.222.222 dst=192.168.1.3 sport=53 dport=1122 packets=2
bytes=184 [ASSURED] mark=0 use=1 rate=50
Permitir al acceso al Servidor HTTP
SERVIDORES DE ALTA DISPONIBILIDAD 71
CIBERTEC CARRERAS PROFESIONALES
[root@FW ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT
--to-destination 10.0.0.2
[root@FW ~]# iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 10.0.0.2 -j
ACCEPT
[root@FW ~]# iptables -A FORWARD -i eth1 -p tcp --sport 80 -s 10.0.0.2 -j
ACCEPT
[root@FW ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp spt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp spt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp spt:http
ACCEPT tcp -- anywhere 10.0.0.2 tcp dpt:http
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@FW ~]# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:http to:10.0.0.2
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.0.0.0/8 anywhere to:192.168.1.3
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@FW ~]#
Permitir sesiones remotas en el Servidor HTTP
[root@FW ~]# iptables -A FORWARD -d 192.168.1.10 -p tcp --dport 22 -d
10.0.0.2 -j ACCEPT
[root@FW ~]# iptables -A FORWARD -p tcp --dport 22 -d 10.0.0.2 -j ACCEPT
[root@FW ~]# iptables -A FORWARD -i eth1 -p tcp --sport 22 -s 10.0.0.2 -j
ACCEPT
[root@FW ~]#
[root@FW ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
72
CARERRAS PROFESIONALES CIBERTEC
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp spt:domain
ACCEPT udp -- anywhere anywhere udp spt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp spt:http
ACCEPT tcp -- anywhere 10.0.0.2 tcp dpt:http
ACCEPT tcp -- 10.0.0.2 anywhere tcp spt:http
ACCEPT tcp -- anywhere 10.0.0.2 tcp dpt:ssh
ACCEPT tcp -- 10.0.0.2 anywhere tcp spt:ssh
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@FW ~]# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:http to:10.0.0.2
DNAT tcp -- anywhere 192.168.1.10 tcp dpt:ssh to:10.0.0.2
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.0.0.0/8 anywhere to:192.168.1.3
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@FW ~]#
[root@FW ~]# cat /proc/net/ip_conntrack
tcp 6 431999 ESTABLISHED src=192.168.1.2 dst=192.168.1.3 sport=1456
dport=22 packets=4158 bytes=374816 src=192.168.1.3 dst=192.168.1.2 sport=22
dport=1456 packets=5267 bytes=453188 [ASSURED] mark=0 use=1 rate=940
tcp 6 431926 ESTABLISHED src=192.168.1.2 dst=192.168.1.10 sport=2623
dport=22 packets=23 bytes=2379 src=10.0.0.2 dst=192.168.1.2 sport=22 dport=2623
packets=27 bytes=3213 [ASSURED] mark=0 use=1 rate=500
[root@FW ~]#
[root@FW ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
SERVIDORES DE ALTA DISPONIBILIDAD 73
CIBERTEC CARRERAS PROFESIONALES
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80
ACCEPT tcp -- 0.0.0.0/0 10.0.0.2 tcp dpt:80
ACCEPT tcp -- 10.0.0.2 0.0.0.0/0 tcp spt:80
ACCEPT tcp -- 0.0.0.0/0 10.0.0.2 tcp dpt:22
ACCEPT tcp -- 10.0.0.2 0.0.0.0/0 tcp spt:22
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@FW ~]#
[root@FW ~]# iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:10.0.0.2
DNAT tcp -- 0.0.0.0/0 192.168.1.10 tcp dpt:22 to:10.0.0.2
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.0.0.0/8 0.0.0.0/0 to:192.168.1.3
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@FW ~]#
74
CARERRAS PROFESIONALES CIBERTEC
Autoevaluación
1. ¿Cuál es la politica predeterminada del firewall?
2. El objetivo (target) particular REJECT es:
(a) El paquete salta el resto de verificaciones de la regla y continúa hacia su destino.
(b) Al paquete se le deniega el acceso y no envía nada al equipo que
envió el paquete.
(c) Al paquete se le deniega el acceso y envía un mensaje de error al equipo que envió el paquete.
(d) El paquete es reenviado a otro host.
(e) El paquete crea una nueva conexión.
3. ¿Cuál es el objetivo que se aplica a una determinada regla que permita
enmascarar todos los paquetes que proviene de una red privada que salen por un enlace ppp0 con destino a Internet?
(a) SNAT (b) REDIRECT
(c) MASQUERADE
(d) DNAT
(e) NAT
SERVIDORES DE ALTA DISPONIBILIDAD 75
CIBERTEC CARRERAS PROFESIONALES
Stateful packet inspection
firewall III
TEMA Describir el uso de Netfilter.
OBJETIVOS ESPECÍFICOS Comprender el funcionamiento del filtrado de paquetes usando estados de conexión.
CONTENIDOS Estados de conexión.
Permitiendo paquetes entrantes/salientes.
Permitiendo paquetes salientes/entrantes.
Permitiendo paquetes reenviados.
S E M A N A
6
76
CARERRAS PROFESIONALES CIBERTEC
ESTADOS DE CONEXIÓN
IPTables los usa en base a cómo trabaja el protocolo TCP y permite definir, de forma más especifica, reglas en base a si una conexión es nueva o si una conexión ha generado otra. Esto solo es aplicable al protocolo TCP, ya que este funciona definiendo 3 vías durante una conexión, también llamado “Three-way handshake”. Tomando como base lo anterior, IPTables utiliza los siguientes 3 estados (states):
New – Nos indica que el paquete es el primero que vemos cuando un sistema se trata de conectar a otro enviando un paquete TCP marcado como SYN (Syncrhonize).
Related – Una conexión se considera "relacionada" cuando esta ligada
a otra conexión ya "establecida".
Established – Ha visto tráfico en ambas direcciones y por tanto admitirá continuamente los paquetes de ese flujo cuando el sistema que inició la conexión recibe el SYN-ACK (se establece la conexión entre ambos sistemas).
Invalid – implica que el paquete no puede ser identificado o que no tiene
ningún estado.
Fig. 1. Estados de conexión
SERVIDORES DE ALTA DISPONIBILIDAD 77
CIBERTEC CARRERAS PROFESIONALES
1. Permitiendo paquetes entrantes/salientes
Política predeterminada: DENEGAR TODO
Permitir el paquete entrante: echo-request En el equipo 10.0.0.2, ejecutamos:
centos:~# iptables -A INPUT –m state --state NEW -p icmp --
icmp-type 8 -s 10.0.0.1 -j ACCEPT
centos:~# iptables –A OUTPUT –m state --state ESTABLISHED –j
ACCEPT
Fig. 2. Permitir paquete echo-request entrante
centos:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- 10.0.0.1 anywhere state NEW icmp echo-
request
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state ESTABLISHED
debian:~#
78
CARERRAS PROFESIONALES CIBERTEC
2. Permitiendo paquetes salientes/entrantes
Política predeterminada: DENEGAR TODO
Fig. 3. Permitir paquete echo-request saliente
Permitir el paquete saliente: echo-request En el equipo 10.0.0.2, ejecutamos:
centos:~# iptables -A OUTPUT –m state --state NEW -p icmp --
icmp-type 8 -d 10.0.0.1 -j ACCEPT
centos:~# iptables –A INPUT –m state --state ESTABLISHED –j
ACCEPT
centos:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state ESTABLISHED
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- anywhere 10.0.0.1 state NEW icmp echo-
request
centos:~#
SERVIDORES DE ALTA DISPONIBILIDAD 79
CIBERTEC CARRERAS PROFESIONALES
3. Permitiendo paquetes reenviados
Fig. 4. Red
Script que usa el estado de conexión
[root@FW ~]# cat fw1.sh
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_netbios_ns
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REDIRECT
modprobe ipt_TOS
modprobe ipt_REJECT
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_state
modprobe ipt_multiport
modprobe ipt_tos
modprobe ipt_mark
modprobe x_iptable
modprobe iptable_filter
iptables -A FORWARD -j LOG
echo 1 > /proc/sys/net/ipv4/ip_forward
80
CARERRAS PROFESIONALES CIBERTEC
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j SNAT --to-
source 192.168.1.3
iptables -A FORWARD –m state --state NEW -i eth1 -p tcp --dport
53 -j ACCEPT
iptables -A FORWARD –m state --state NEW -i eth1 -p udp --dport
53 -j ACCEPT
iptables -A FORWARD –m state --state NEW -i eth1 -p tcp --dport
80 -j ACCEPT
iptables -A FORWARD –m state --state NEW -i eth0 -p tcp --dport
80 -d 10.0.0.2 -j ACCEPT
iptables -A FORWARD –m state --state NEW -p tcp --dport 22 -d
10.0.0.2 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j
ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT
--to-destination 10.0.0.2
iptables -t nat -A PREROUTING -d 192.168.1.10 -p tcp --dport 22
-j DNAT --to-destination 10.0.0.2
[root@FW ~]#
SERVIDORES DE ALTA DISPONIBILIDAD 81
CIBERTEC CARRERAS PROFESIONALES
Autoevaluación
1. ¿Cuáles son los posibles estados de conexión de los paquetes?
(a) Established, New, Related y Reject (b) Invalid, Related, Redirect y Established (c) New, Established, Related e Invalid (d) Invalid, Replace, New y Established
2. El estado NEW especifica: 3. Que el paquete no está asociados a ninguna conexión conocida y puede
estar defectuoso.
(a) Que el paquete se asocia a una conexión existente. (b) Que el paquete crea una nueva conexión. (c) Que el paquete crea una nueva conexión, pero asociada a una
conexión existente.
4. La tabla nat ejecuta:
(a) Operaciones de traducción de direcciones de red. (b) Operaciones de bloqueo o aceptación de paquetes. (c) Modificaciones en los campos de las cabeceras de los paquetes. (d) Altera los paquetes que ingresan al sistema.
82
CARERRAS PROFESIONALES CIBERTEC
Proxy application firewall I
TEMA Describir el uso del Servidor Proxy Squid.
OBJETIVOS ESPECÍFICOS
Comprender el funcionamiento del Servidor Proxy.
CONTENIDOS
Introducción.
Squid.
S E M A N A
9
SERVIDORES DE ALTA DISPONIBILIDAD 83
CIBERTEC CARRERAS PROFESIONALES
INTRODUCCIÓN Un servidor Proxy es un software que realiza tareas de servidor intermediario. El caso más común es utilizarlo para compartir Internet en ámbitos donde se posee una única conexión a Internet y varias computadoras. El servidor Proxy se conecta directamente a Internet y por otra interfaz a la red interna, de modo que todos los pedidos a Internet de las computadoras pertenecientes a la LAN pasan a través del Proxy y es este en realidad el que hace las conexiones hacia la web y luego entrega las respuestas a los hosts correspondientes.
Fig. 1. Servidor Proxy
Una de las funciones principales de un servidor Proxy es actuar como cache de contenido principalmente web (http). Esto mejora el desempeño de una red consumiendo menos recursos, debido que, frente a un nuevo pedido de un sitio que ya ha sido realizado, en vez de generar trafico hacia Internet, se entrega el sitio cuyo contenido se encuentra almacenado en el servidor.
1. SQUID
Squid es un software de libre distribución para realizar la tarea de un servidor Proxy con prestaciones muy profesionales. Suele acompañar a las distribuciones más habituales, aunque también puede obtenerse de su sitio oficial (http://www.squid-cache.org/). Actualmente, la versión estable es la 2.6 STABLE18. Squid puede funcionar como Servidor Intermediario (Proxy) y caché de contenido de red para los protocolos HTTP, FTP, GOPHER y WAIS, Proxy
84
CARERRAS PROFESIONALES CIBERTEC
de SSL, caché transparente, caché de consultas DNS y otras muchas más como filtración de dominios y control de acceso por IP y por usuario. Provee potentes opciones para tener un completo control sobre los sitios que se visitan, así como para filtrar, permitir o bloquear el acceso de determinados equipos, IP’s, dominios, etc.
Instalación de Squid: yum install squid
2.1. Funcionamiento
Squid realiza el almacenamiento de objetos utilizando diferentes algoritmos:
LRU (política por defecto): Se eliminan de la caché los objetos que no han sido accedidos en mucho tiempo, manteniendo en la caché los que han sido utilizado más recientemente.
LFUDA: Los objetos más solicitados permanecen en el caché sin importar su tamaño, de modo que un objeto grande que se solicite con mayor frecuencia impedirá que se pueda hacer caché de objetos pequeños que se soliciten con menor frecuencia.
GDSF: Optimiza la eficiencia por objeto, manteniendo en el caché los objetos pequeños más frecuentemente solicitados; descarta del caché objetos grandes que sean solicitado con frecuencia.
2.2. Configuración del servidor
La configuración del servidor Proxy Squid se realiza en un único archivo de texto plano generalmente ubicado en /etc/squid/squid.conf. La sintaxis en este archivo debe comenzar en la primera columna, sin dejar espacios.
Nombre del Host y Puerto La primera configuración básica debe ser el nombre y los puertos del host. Por defecto, SQUID escucha en el puerto.
visible_hostname proxy
http_port 3128
Memoria Usada Para especificar a Squid qué cantidad de memoria debe usar hay que añadir la siguiente línea al fichero de configuración: cache_mem 8 MB
Tamaño de la memoria caché Aquí se fija el directorio y el espacio que se utilizará del disco duro para almacenar las páginas. Por defecto, SQUID usara 100 MB, y lo almacenará por defecto en 16 subdirectorios de primer nivel y en 256 subdirectorios de segundo nivel.
SERVIDORES DE ALTA DISPONIBILIDAD 85
CIBERTEC CARRERAS PROFESIONALES
cache_dir ufs /var/cache/squid 100 16 256
Tiempo de vida de la caché Podemos configurar el tiempo que los objetos permanecerán almacenados en el servidor. reference_age 1 month
Control de acceso Es necesario establecer listas de control de acceso (acl) que definan una red o bien ciertas máquinas en particular. A cada acl se le asignará una regla de control de acceso (acr) que funcionará bloqueando o permitiendo el acceso a través de SQUID. Comúnmente, las acl se definen y las acr se aplican de la siguiente manera: Acl [nombre de la lista] src/dst [ips que componen la lista]
http_access allow/deny [nombre de la lista]
Para el siguiente ejemplo, la red 192.168.0.0/24 llamada LAN1 tendrá permitido acceder al Proxy: acl LAN1 src 192.168.0.0/255.255.255.0
http_access allow LAN1
Además de direcciones IP’s, en las acl es posible definir nombres de dominios y puertos utilizando dstdomain y port de la siguiente manera: acl educativas dstdomain edu.pe
acl diario dstdomain diario.com
acl safeports port 443
http_access deny diario
http_access allow educativas
http_access allow safeports
Es importante tener en cuenta que las acl educativas y diario no hubiesen coincidido, si se visitaban sitios como fich.unl.edu.pe o deportes.clarin.com. Para bloquear también los subdominios, se debe utilizar el punto (.) como comodín antes del dominio: acl educativas dstdomain .edu.pe
acl diario dstdomain .diario.com
Existe una acl que debe estar configurada para que SQUID funcione: acl all src 0.0.0.0/0.0.0.0
Esta acl, a diferencia de las demás, debe tener obligatoriamente la etiqueta all.
86
CARERRAS PROFESIONALES CIBERTEC
Coincidencia en las acl Para que se produzca una coincidencia (match) en una acl, se utiliza la función OR, por ejemplo: acl ips src 192.168.0.10 192.168.0.11 192.168.0.16
Cuando la ip origen sea 192.168.0.11, la coincidencia se dará luego de la segunda dirección ip, y la acl será considerada verdadera. Por esta razón, se recomienda incluir las opciones más comunes al comienzo, para acelerar el proceso de evaluación. Coincidencias en las acr Para que una acr coincida, se utiliza la función AND. Para el ejemplo: http_access allow educativas safeport
Debe accederse a sitios .edu.pe al puerto 443 para que sea permitido el acceso. Parámetros extras Otro símbolo reservado consiste en la utilización del signo de admiración de cierre: !. Se utiliza como negación de una determinada acl, para el ejemplo, !LAN1 significa que el acceso a Squid es para todos los que no formen parte de LAN1.
2.3. Configuración de los clientes
2.3.1. Navegador konqueror
Desde un equipo cliente (Debian Linux):
Ejecute el Konqueror.
SERVIDORES DE ALTA DISPONIBILIDAD 87
CIBERTEC CARRERAS PROFESIONALES
Fig. 2. Navegador Konqueror
Haga clic en Preferencias → Configurar Konqueror, desde la barra de menú. (Ver Fig. 3).
88
CARERRAS PROFESIONALES CIBERTEC
Fig. 3. Configuración de Konqueror
Haga clic en la pestaña Proxy.
Haga clic en Especificar manualmente la configuración del proxy.
Haga clic en el botón Configuración. (Ver Fig. 4).
SERVIDORES DE ALTA DISPONIBILIDAD 89
CIBERTEC CARRERAS PROFESIONALES
Fig. 4. Configuración del Proxy
Ingrese la dirección IP del servidor Proxy y el número del puerto.
Haga clic en el botón Aceptar.
Haga clic en el botón Aplicar.
Haga clic en el botón Aceptar.
2.4. Ejercicios
2.4.2. Caso 1 Considerando que se dispone de una red 192.168.1.0/255.255.255.0, se desea permitir la salida a Internet de la red local.
90
CARERRAS PROFESIONALES CIBERTEC
Fig. 5. LAN
Establecer una lista de control de acceso para la red local: o Definir la IP correspondiente a la red y la máscara de la sub-red:
acl LAN src 192.168.1.0/255.255.255.0
Establecer una regla de control para la red local: o Regla que establece acceso permitido a Squid a toda la red
local: http_access allow LAN
2.4.3. Caso 2 Considerando que se dispone de una red 192.168.1.0/255.255.255.0, se desea permitir la salida a Internet de algunos equipos.
o Definir una ACL especificando un archivo, el cual contiene una lista de direcciones IP: acl permitidos src "/etc/squid/permitidos"
Contenido del archivo /etc/squid/permitidos: 192.168.1.10
192.168.1.12
192.168.1.13
192.168.1.15
192.168.1.16
192.168.1.20
192.168.1.40
Establecer la regla de control: o Regla que establece acceso permitido a Squid a la ACL
denominada permitidos: http_access allow permitidos
SERVIDORES DE ALTA DISPONIBILIDAD 91
CIBERTEC CARRERAS PROFESIONALES
http_access deny all
2.4.4. Caso 3 Considerando que se dispone de una red 192.168.1.0/255.255.255.0, se desea denegar la salida a Internet de algunos equipos.
Establecer una lista de control de acceso para la red local: o Definir la IP correspondiente a la red y la máscara de la sub-red:
acl LAN src 192.168.1.0/255.255.255.0
o Definir una ACL especificando un archivo, el cual contiene una
lista de direcciones IP: acl denegados src "/etc/squid/denegados"
Contenido del archivo /etc/squid/denegados: 192.168.1.31
192.168.1.22
192.168.1.33
192.168.1.34
192.168.1.46
192.168.1.50
192.168.1.60
Establecer la regla de control: o Reglas que establecen acceso restringido a Squid:
http_access deny denegados
http_access allow LAN
http_access deny all
o También pueden definirse reglas valiéndose de la expresión !, la cual significa no: http_access allow LAN !denegados
http_access deny all
2.4.5. Caso 4 Restringir al acceso a ciertas páginas web.
Establecer una lista de control de acceso: o Definir una ACL especificando un archivo, el cual contiene una
lista de paginas web: acl webdenegadas url_regex "/etc/squid/webdenegadas"
Contenido del archivo /etc/squid/webdenegadas: www.hotmail.com
www.yahoo.com
gmail.com
www.youtube.com
Establecer la regla de control:
92
CARERRAS PROFESIONALES CIBERTEC
o Reglas que establecen acceso restringido a Squid: http_access deny webdenegadas
http_access allow LAN
http_access deny all
o También pueden definirse reglas valiéndose de la expresión !, la cual significa no: http_access allow LAN !webdenegadas
http_access deny all
Fig. 5. Acceso denegado
2.4.6. Caso 5 Restringir la descarga de ciertos archivos por su extensión.
Establecer una lista de control de acceso: o Definir ACL:
Acl descargas1 urlpath_regex -i \.mp3$ \.zip$ \.exe$
o Definir una ACL especificando un archivo, el cual contiene una lista de páginas web: acl descargas1 urlpath_regex etc/squid/descargas1"
SERVIDORES DE ALTA DISPONIBILIDAD 93
CIBERTEC CARRERAS PROFESIONALES
Contenido del archivo /etc/squid/descargas1: \.mp3$
\.zip$
\.exe$
\.scr$
\.pif$
Establecer la regla de control:
o Reglas que establecen acceso restringido a Squid: http_access deny descargas1
http_access allow LAN
http_access deny all
o También pueden definirse reglas valiéndose de la expresión !, la cual significa no: http_access allow LAN !descargas1
http_access deny all
2.5. Verificación de logs SQUID almacena en el directorio /var/log/squid información sobre los accesos, diálogos con otros servidores SQUID, etc. Existen varios archivos de logs. El que nos brinda información sobre el acceso al servidor es access.log. Cuando se entrega a un cliente un objeto que se encontraba almacenado, se produce un HIT y si el objeto debe ser consultado hacia Internet, entonces, es un MISS. Squid genera 3 ficheros de log:
access.log: Aquí se guardan las peticiones que se le hacen al Proxy, podemos saber cuánta gente usa el Proxy, qué páginas son las más visitadas.
[root@centos:~]# tail -f /var/log/squid/access.log
1176538770.568 195 192.168.1.4 TCP_DENIED/403 1324 GET
http://gmail.com/ - NONE/- text/html
1176538773.646 4 192.168.1.4 TCP_DENIED/403 1346 GET
http://gmail.com/favicon.ico - NONE/- text/html
1176538799.979 12 192.168.1.4 TCP_DENIED/403 1336 GET
http://www.youtube.com/ - NONE/- text/html
1176538800.937 91 192.168.1.4 TCP_DENIED/403 1358 GET
http://www.youtube.com/favicon.ico - NONE/- text/html
1176538818.162 11 192.168.1.4 TCP_DENIED/403 1336 GET
http://www.hotmail.com/ - NONE/- text/html
1176538819.070 82 192.168.1.4 TCP_DENIED/403 1358 GET
http://www.hotmail.com/favicon.ico - NONE/- text/html
1204373729.553 644 192.168.1.2 TCP_MISS/302 606 GET
http://www.cibertec.edu.pe/ - DIRECT/200.0.118.6 text/html
1204373729.963 169 192.168.1.2 TCP_MISS/200 2642 GET
http://www.cibertec.edu.pe/IntroCIBERTEC.html -
DIRECT/200.0.118.6 text/html
94
CARERRAS PROFESIONALES CIBERTEC
1204373732.395 122 192.168.1.2 TCP_MISS/200 3754 GET
http://www.cibertec.edu.pe/libreriajs/AC_RunActiveContent.js
- DIRECT/200.0.118.6 application/x-javascript
1204373772.770 463 192.168.1.2 TCP_MISS/301 737 GET
http://www.macromedia.com/go/getflashplayer -
DIRECT/216.104.208.202 text/html
1204373774.270 1108 192.168.1.2 TCP_MISS/200 25974 GET
http://www.adobe.com/shockwave/download/download.cgi? -
DIRECT/216.104.208.201 text/html
1204373775.573 354 192.168.1.2 TCP_MISS/200 1562 GET
http://www.adobe.com/favicon.ico - DIRECT/216.104.208.201
image/x-icon
[root@centos:~]#
cache.log: Aquí se van guardando los errores, mensajes de inicio, etc.
store.log: Aquí se va guardando lo que pasa con el caché, qué páginas (objetos) se añaden, cuáles se quitan.
El análisis de los logs, por lo general, se realiza con herramientas de software independientes de SQUID. Dos de las más utilizadas son SARG (Squid Analysis Report Grpahics) y Webalizer, las mismas generan reportes gráficos con estadísticas en un archivo html. Son una excelente herramienta para llevar un control detallado sobre la utilización de la navegación web.
SERVIDORES DE ALTA DISPONIBILIDAD 95
CIBERTEC CARRERAS PROFESIONALES
Autoevaluación
1. El archivo cache.log registra:
(a) El acceso de los clientes al caché de squid (b) Información del funcionamiento del caché de squid
(c) Los objetos agregados o eliminados en el caché de squid
(d) Todos los eventos del sistema
2. Defina una lista de control de acceso que defina toda la red 192.168.1.32/27
(a) acl lan src 192.168.1.32/255.255.255.224 (b) acl lan urlpath_regex -i 192.168.1.32/255.255.255.224
(c) acl lan src 192.168.1.32/255.255.255.0
(d) acl lan url_regex 192.168.1.32/255.255.255.224
3. El Servidor Proxy no puede procesar los siguientes tipos de conexión: (Seleccione 2)
FTP POP3
http
HTTPS
SMTP
96
CARERRAS PROFESIONALES CIBERTEC
Proxy application firewall II
TEMA Descipción del uso del Servidor Proxy Squid.
OBJETIVOS ESPECÍFICOS
Comprender el funcionamiento del Servidor Proxy.
Configurar un Proxy Transparente.
CONTENIDOS
Configuración
Proxy Transparente
Squid Análisis Report Generator (Sarg)
S E M A N A
10
SERVIDORES DE ALTA DISPONIBILIDAD 97
CIBERTEC CARRERAS PROFESIONALES
CONFIGURACIÓN
2.1. Bloqueo del MSN Messenger
2.1.1. Configurar el cliente
Ejecute el IE.
Haga clic en el menú Herramientas. Luego, en Opciones de Internet. (Ver Fig. 1)
Haga clic en la pestaña Conexiones.
Haga clic en el botón Configuración de LAN.
Fig. 1. Opciones de Internet
Haga clic en la casilla del Servidor Proxy. (Ver Fig. 2)
Ingrese los valores correspondientes al servidor Proxy.
Haga clic en el botón Aceptar.
Haga clic en el botón Aceptar.
98
CARERRAS PROFESIONALES CIBERTEC
Fig. 2. Configuración del cliente
2.1.2. Archivo de registro Ingrese desde el equipo cliente al MSN y observe los paquetes relacionados en el archivo /var/log/squid/access.log en el servidor Proxy. [root@centos:~]# tail -f /var/log/squid/access.log
1204395339.680 342 192.168.1.4 TCP_MISS/200 430 POST
http://207.46.111.57/gateway/gateway.dll? -
DIRECT/207.46.111.57 application/x-msn-messenger
1204395340.204 316 192.168.1.4 TCP_MISS/200 587 POST
http://207.46.111.57/gateway/gateway.dll? -
DIRECT/207.46.111.57 application/x-msn-messenger
1204395345.534 334 192.168.1.4 TCP_MISS/200 605 POST
http://207.46.111.57/gateway/gateway.dll? -
DIRECT/207.46.111.57 application/x-msn-messenger
1204395345.885 304 192.168.1.4 TCP_MISS/401 1098 GET
http://login.passport.com/login2.srf -
DIRECT/65.54.183.197 text/html
1204395346.472 586 192.168.1.4 TCP_MISS/200 423 POST
http://207.46.111.57/gateway/gateway.dll? -
DIRECT/207.46.111.57 application/x-msn-messenger
1204395433.123 420 192.168.1.92 TCP_MISS/302 748 GET
http://www.microsoft.com/isapi/redir.dll? -
DIRECT/207.46.19.254 text/html
1204395433.559 435 192.168.1.92 TCP_MISS/302 581 GET
http://go.microsoft.com/fwlink/? - DIRECT/64.4.52.189
text/html
1204395434.425 865 192.168.1.92 TCP_MISS/200 32207 GET
http://latam.msn.com/ - DIRECT/207.68.183.120 text/html
SERVIDORES DE ALTA DISPONIBILIDAD 99
CIBERTEC CARRERAS PROFESIONALES
1204395434.706 352 192.168.1.92 TCP_MISS/200 856 GET
http://rad.msn.com/ADSAdClient31.dll? -
DIRECT/65.55.197.248 text/html
1204395434.783 474 192.168.1.92 TCP_MISS/200 610 GET
http://msnportal.112.2o7.net/b/ss/msnportallatamhome/1/H.
1-pdv-2/s85717557388621? - DIRECT/128.241.21.163
image/gif
1204395434.862 428 192.168.1.92 TCP_MISS/200 4681 GET
http://a.rad.msn.com/ADSAdClient31.dll? -
DIRECT/65.55.197.248 text/html
1204395434.878 633 192.168.1.92 TCP_MISS/200 529 GET
http://c.msn.com/c.gif? - DIRECT/207.46.216.62 image/gif
1204395434.931 136 192.168.1.92 TCP_MISS/200 4712 GET
http://rad.msn.com/ADSAdClient31.dll? -
DIRECT/65.55.197.248 text/html
1204395435.055 349 192.168.1.92 TCP_MISS/200 1598 GET
http://b.rad.msn.com/ADSAdClient31.dll? -
DIRECT/65.55.197.248 text/html
1204395435.795 738 192.168.1.92 TCP_MISS/200 17525 GET
http://a.ads1.msn.com/ads/1/0000000001_000000000000000546
396.swf? - DIRECT/4.23.34.124 application/x-shockwave-
flash
1204395436.610 1550 192.168.1.92 TCP_MISS/200 30816 GET
http://ads1.msn.com/ads/1/0000000001_00000000000000052840
7.swf? - DIRECT/4.23.34.124 application/x-shockwave-flash
1204395888.852 1479 192.168.1.92 TCP_MISS/200 22009
CONNECT login.live.com:443 - DIRECT/65.54.179.203 -
1204395890.035 688 192.168.1.92 TCP_MISS/200 529 GET
http://c.msn.com/c.gif? - DIRECT/207.46.216.62 image/gif
1204395903.211 13374 192.168.1.92 TCP_MISS/200 113383
CONNECT by3.omega.contacts.msn.com:443 -
DIRECT/207.46.113.221 -
1204395903.230 8455 192.168.1.92 TCP_MISS/200 180805
CONNECT by3.omega.contacts.msn.com:443 -
DIRECT/207.46.113.221 -
1204395903.428 655 192.168.1.92 TCP_MISS/304 265 GET
http://67.192.58.61/tabclaro/claro_logo_tamano_b.png -
DIRECT/67.192.58.61 -
1204395903.579 343 192.168.1.92 TCP_MISS/304 232 GET
http://www.mercadolibre.com/org-img/MSN/logo_solapa.png -
DIRECT/64.14.123.185 -
2.1.3. Configuración del servidor Proxy En el archivo /etc/squid/squid.conf realizar:
Definir ACL:
acl contenido url_regex "/etc/squid/contenido"
acl msn req_mime_type -i ^application/x-msn-messenger$
acl msn1 urlpath_regex gateway.dll
acl msn2 url_regex e-messenger.net
webmessenger.msn.com
Contenido del archivo /etc/squid/descargas1:
100
CARERRAS PROFESIONALES CIBERTEC
Msn
Messenger
live.com
Definir RCL: http_access deny contenido
http_access deny msn
http_access deny msn1
http_access deny msn2
http_access allow LAN
http_access deny all
2.1.4. Probación de la restricción
Desde el equipo cliente ejecute el Windows Live Messenger
Fig. 3. Cliente MSN Desde el servidor observamos los paquetes bloqueados: [root@centos:~]# tail -f /var/log/squid/access.log
1204397569.531 2 192.168.1.92 TCP_DENIED/403 1333
CONNECT login.live.com:443 - NONE/- text/html
1204398006.000 4 192.168.1.92 TCP_DENIED/403 1408
GET
http://g.latam.msn.com/8SEESXL030000TBR/TOOLBRNewsFeed1 -
NONE/- text/html
2.2. Mensajes de error en español
En forma predeterminada, los mensajes de error se muestran en inglés, pero podemos configurar Squid para que se muestren en español u otro idioma. Cada distribución ubica los directorios de idiomas en distintos lugares, por lo que debemos determinar dicha ubicación:
SERVIDORES DE ALTA DISPONIBILIDAD 101
CIBERTEC CARRERAS PROFESIONALES
[root@CentOS ~]# cat /etc/squid/squid.conf | grep English
# copy the template English files to another
#error_directory /usr/share/squid/errors/English
# error_directory /usr/share/squid/errors/English
[root@CentOS ~]# ls /usr/share/squid/errors/
Azerbaijani English Hebrew Polish
Simplify_Chinese
Bulgarian Estonian Hungarian Portuguese Slovak
Catalan Finnish Italian Romanian Spanish
Czech French Japanese Russian-1251 Swedish
Danish German Korean Russian-koi8-r
Traditional_Chinese
Dutch Greek Lithuanian Serbian Turkish
[root@CentOS ~]#
Modifique el archivo /etc/squid/squid.conf para que los mensajes de error se muestren en español:
#error_directory /usr/lib/squid/errors/English
#
#Default:
error_directory /usr/lib/squid/errors/Spanish
Reinicie el servidor Proxy:
[root@CentOS ~]# /etc/init.d/squid restart
Parando squid: . [ OK ]
Iniciando squid: . [ OK ]
[root@CentOS ~]#
Desde un equipo cliente probar:
102
CARERRAS PROFESIONALES CIBERTEC
Fig. 4. Mensajes de error en español
SERVIDORES DE ALTA DISPONIBILIDAD 103
CIBERTEC CARRERAS PROFESIONALES
2. Proxy transparente
2.1. Configuración del servidor Squid
Modifique en el archivo /etc/squid/squid.conf el parámetro http_port: http_port 3128 transparent
Para versiones antiguas del Squid modifique las siguientes líneas: http_port 10.0.0.1:3128
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_wiht_proxy on
httpd_accel_uses_host_header on
Fig. 5. Proxy Transparente
2.2. Configuración del Firewall
Configurando el redireccionamiento del puerto 80 al puert0 3128, ejecute los siguientes comandos: [root@CentOS ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@CentOS ~]# iptables -t nat -A PREROUTING -p tcp --dport
80 -i eth1 -j REDIRECT --to-port 3128
[root@CentOS ~]# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -
j MASQUERADE
[root@CentOS ~]# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere
tcp dpt:http redir ports 3128
104
CARERRAS PROFESIONALES CIBERTEC
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.0.0.0/8 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@CentOS ~]#
[root@CentOS ~]# /etc/init.d/squid restart
Parando squid: . [ OK ]
Iniciando squid: . [ OK ]
[root@CentOS ~]#
NOTA: También se podría reemplazar:
[root@CentOS ~]# iptables -t nat -A POSTROUTING -s
10.0.0.0/8 -j MASQUERADE
por: [root@CentOS ~]# iptables -t nat -A POSTROUTING -o eth0
-j SNAT --to-source 192.168.1.3
[root@CentOS ~]# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere
tcp dpt:http redir ports 3128
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- anywhere anywhere
to:192.168.1.3
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost squid]#
2.3. Configuración de las estaciones de trabajo
Defina como gateway predeterminado la dirección IP del servidor Proxy Transparente.
SERVIDORES DE ALTA DISPONIBILIDAD 105
CIBERTEC CARRERAS PROFESIONALES
3. Sarg (Squid Analysis Report Generator)
Sarg es un programa para ver los informes de uso del Squid de una red, que permite ver a "dónde" están yendo sus usuarios dentro de Internet. Sarg genera informes en html con muchos campos, como usuarios, direcciones IP, bytes transmitidos, sitios web and tiempos. Ejemplo de los informes aquí: http://sarg.sourceforge.net/squid-reports/index.html Instalación de Sarg: yum install sarg 3.1. Configuración
El archivo de configuración es /etc/sarg/sarg.conf, modifiquemos las siguientes líneas:
language Spanish (para definir el idioma Español)
resolve_ip yes (para que muestre nombres en vez de IP’s)
user_ip yes (para que liste por IP y no por UID de Squid)
date_format e (para usar el formato de fecha europeo y no el americano)
use_comma no (para usar el punto como separador de miles)
topsites_num 200 (para aumentar el número de sitios del topsites a 200) output_dir /var/www/html/squid-reports (Directorio donde se guardan los reportes)
3.2. Ejecución Al ejecutarse el comando sarg se crean las páginas html estáticas con los accesos del día. Se configura /etc/crontab para que se ejecute en forma periódica, agregue la siguiente línea: 40 23 * * * /usr/bin/sarg > /dev/null
3.3. Reportes Para visualizar los reportes generados desde un navegador cargue la siguiente dirección: http://IP_Proxy/squid-reports/
106
CARERRAS PROFESIONALES CIBERTEC
Fig. 6. Reportes
Fig. 7. Reportes del día
SERVIDORES DE ALTA DISPONIBILIDAD 107
CIBERTEC CARRERAS PROFESIONALES
Fig. 8. Reportes de un cliente
108
CARERRAS PROFESIONALES CIBERTEC
Autoevaluación
1. Cuando el servidor Squid esta configurado como Proxy transparente:
(a) Las peticiones de los clientes HTTP son redireccionadas al puerto 8082.
(b) Hay que configurar cada cliente HTTP.
(c) No es necesario configurar cada cliente HTTP.
(d) No guarda las páginas web que son accedidas por lo clientes
HTTP.
2. Cuando el servidor Squid esta configurado como Proxy transparente:
(a) Las peticiones de los clientes HTTP son redireccionadas al puerto 8082.
(b) Hay que configurar cada cliente HTTP.
(c) No es necesario configurar los equipos cliente.
(d) En los equipos cliente, asignamos como puerta de enlace
predeterminado la dirección IP del servidor Squid.
3. ¿Qué es Sarg?
SERVIDORES DE ALTA DISPONIBILIDAD 109
CIBERTEC CARRERAS PROFESIONALES
Intrusion detection systems I
TEMA Describir el uso del IDS.
OBJETIVOS ESPECÍFICOS Comprender el funcionamiento del IDS.
CONTENIDOS Introducción.
Snort.
S E M A N A
11
110
CARERRAS PROFESIONALES CIBERTEC
INTRODUCCIÓN Un IDS o Sistema de Detección de Intrusiones es una herramienta de seguridad que intenta detectar o monitorizar los eventos ocurridos en un determinado sistema informático o red informática en busca de intentos de comprometer la seguridad de dicho sistema. Los IDS buscan patrones previamente definidos que impliquen cualquier tipo de actividad sospechosa o maliciosa sobre nuestra red o host. Los IDS aportan a nuestra seguridad una capacidad de prevención y de alerta anticipada ante cualquier actividad sospechosa. No están diseñados para detener un ataque, aunque sí pueden generar ciertos tipos de respuesta ante éstos. Los IDS aumentan la seguridad de nuestro sistema, vigilan el tráfico de nuestra red, examinan los paquetes analizándolos en busca de datos sospechosos y detectan las primeras fases de cualquier ataque como pueden ser el análisis de nuestra red, barrido de puertos, etc. 1.1. Tipos de IDS
1.1.1. HIDS (Host IDS)
Protege contra un único Servidor, PC o host. Monitorizan gran cantidad de eventos, analizando actividades con una gran precisión, determinando de esta manera qué procesos y usuarios se involucran en una determinada acción. Recaban información del sistema como ficheros, logs, recursos, etc. para su posterior análisis en busca de posibles incidencias. Todo ello, en modo local, dentro del propio sistema. Fueron los primeros IDS en ser desarrollados por la industria de la seguridad informática.
1.1.2. NIDS (Net IDS) Protege un sistema basado en red. Actúan sobre una red capturando y analizando paquetes de red, es decir, son sniffers del tráfico de red. Luego analizan los paquetes capturados, buscando patrones que supongan algún tipo de ataque. Bien ubicados, pueden analizar grandes redes y su impacto en el tráfico suele ser pequeño. Actúan mediante la utilización de un dispositivo de red configurado en modo promiscuo (analizan, “ven” todos los paquetes que circulan por un segmento de red, aunque estos no vayan dirigidos a un determinado equipo). Analizan el tráfico de red, normalmente, en tiempo real. No sólo
SERVIDORES DE ALTA DISPONIBILIDAD 111
CIBERTEC CARRERAS PROFESIONALES
trabajan a nivel TCP/IP, también lo pueden hacer a nivel de aplicación.
Otros tipos son los híbridos. Por el tipo de respuesta podemos clasificarlos en: Pasivos – Son aquellos IDS que notifican a la autoridad competente o administrador de la red mediante el sistema que sea, alerta, etc. Pero no actúa sobre el ataque o atacante. Activos – Generan algún tipo de respuesta sobre el sistema atacante o fuente de ataque, como cerrar la conexión o enviar algún tipo de respuesta predefinida en nuestra configuración.
1.2. Arquitectura Normalmente, la arquitectura de un IDS, a grandes rasgos, está formada por los siguientes elementos: 1. La fuente de recogida de datos. Estas fuentes pueden ser un log,
dispositivo de red, o como en el caso de los IDS basados en host, el propio sistema.
2. Reglas que contienen los datos y patrones para detectar anomalías de seguridad en el sistema
3. Filtros que comparan los datos snifados de la red o de logs con los patrones almacenados en las reglas
4. Detectores de eventos anormales en el tráfico de red 5. Dispositivo generador de informes y alarmas. En algunos casos con
la sofisticación suficiente como para enviar alertas vía mail, o SMS. Esto es a modo general. Cada IDS implementa la arquitectura de manera diferente.
1.3. Dónde colocar el IDS Una actitud paranoica por nuestra parte nos podría llevar a instalar un IDS en cada host ó en cada tramo de red. Esto último sería un tanto lógico cuando se trata de grandes redes, no es nuestro caso ahora. Lo lógico sería instalar el IDS en un dispositivo por donde pase todo el tráfico de red que nos interese.
1.3.1. Dificultades
Un problema de los IDS es cuando queremos implementarlos en redes conmutadas, ya que no hay segmento de red por donde pase todo el tráfico. Otro problema para un IDS son las redes con velocidades de tráfico muy altas en las cuales es difícil procesar todos los paquetes.
112
CARERRAS PROFESIONALES CIBERTEC
1.3.2. Posición del IDS
Si colocamos el IDS antes de los cortafuegos, capturaremos todo el tráfico de entrada y salida de nuestra red. La posibilidad de falsas alarmas es grande. La colocación detrás de los cortafuegos monitorizará todo el tráfico que no sea detectado y parado por éste, por lo que será considerado como malicioso en un alto porcentaje de los casos. La posibilidad de falsas alarmas es muy inferior. Algunos administradores de sistemas colocan dos IDS, uno delante y otro detrás del cortafuegos, para obtener información exacta de los tipos de ataques que recibe nuestra red, ya que si el cortafuegos está bien configurado, puede parar o filtras muchos ataques. En ambientes domésticos, podemos colocar el IDS en la misma máquina que los cortafuegos. En este caso, actúan en paralelo, es decir, el cortafuegos detecta los paquetes y el IDS los analiza.
2. SNORT Snort es un IDS o Sistema de detección de intrusiones basado en red (NIDS). Implementa un motor de detección de ataques y barrido de puertos que permite registrar, alertar y responder ante cualquier anomalía previamente definida, como patrones que corresponden a ataques, barridos, intentos aprovechar alguna vulnerabilidad, análisis de protocolos, fallas conocidas, etc. Todo esto en tiempo real. Snort (http://www.snort.org/) está disponible bajo licencia GPL y funciona bajo plataformas Windows y UNIX/Linux. Es uno de los más usados y dispone de una gran cantidad de filtros o patrones ya predefinidos, así como actualizaciones constantes ante casos de ataques, barridos o vulnerabilidades que vayan siendo detectadas a través de los distintos boletines de seguridad. Este IDS implementa un lenguaje de creación de reglas flexibles, potentes y sencillas. Durante su instalación, ya nos provee de cientos de filtros o reglas para backdoor, ddos, finger, ftp, ataques web, CGI, escaneos Nmap…. Puede funcionar como sniffer (podemos ver en consola y en tiempo real qué ocurre en nuestra red, todo nuestro tráfico), registro de paquetes (permite guardar en un archivo los logs para su posterior análisis, un análisis offline) o como un IDS normal (en este caso NIDS).
SERVIDORES DE ALTA DISPONIBILIDAD 113
CIBERTEC CARRERAS PROFESIONALES
La colocación de Snort en nuestra red puede realizarse según el tráfico que quiere vigilarse: paquetes entrantes, paquetes salientes, dentro del firewall, fuera del firewall y, en realidad, prácticamente donde queramos. Una característica muy importante e implementada desde hace pocas versiones es FlexResp. Permite, dada una conexión que emita tráfico malicioso, darla de baja, hacerle un DROP mediante el envío de un paquete con el flag RST activa, con lo cual cumpliría funciones de firewall, cortando las conexiones que cumplan ciertas reglas predefinidas. No sólo corta las conexiones, ya que puede realizar otras muchas acciones. 2.1. Instalación de Snort
Desde la página oficial de Snort descargaremos los siguientes archivos:
Binario snort-2.8.0.2-1.RH5.i386.rpm
Checksum MD5 snort-2.8.0.2-1.RH5.i386.rpm.md5
Fig. 1. Descarga de Snort Verificamos si el archivo se ha descargado sin errores y luego procedemos a instalar el paquete. (Ver Fig. 2)
114
CARERRAS PROFESIONALES CIBERTEC
Fig. 2. Instalación de Snort
2.2. Instalación de las Reglas de Snort Antes de poder descargas las reglas de Snort, se debe registrar el usuario.
Fig. 3. Descarga de las Reglas
SERVIDORES DE ALTA DISPONIBILIDAD 115
CIBERTEC CARRERAS PROFESIONALES
Para descargas las reglas de Snort, vaya al siguiente enlace: www.snort.org/pub-bin/dowloads.cgi (Ver Fig. 3). Luego, vaya hasta la opción de descargas para usuarios registrados. Verificamos si el archivo se ha descargado sin errores y luego procedemos a instalar el paquete. (Ver Fig. 4)
Fig. 4. Instalación de Reglas
2.3. Snort en modo Sniffer El formato genérico para este modo es snort [-opciones] < filtro > snort -v
Fig. 5. Cabeceras de los paquetes TCP/IP
116
CARERRAS PROFESIONALES CIBERTEC
Con esta opción -v iniciamos Snort en modo sniffer visualizando en pantalla las cabeceras de los paquetes TCP/IP. Esta opción es el modo verbouse y mostrará las cabeceras IP, TCP, UDP y ICMP. Si queremos, además, visualizar los campos de datos que pasan por la interface de red, añadiremos -d. snort -vd
Fig. 6. Campos de datos de los paquetes TCP/IP Añadiendo la opción -e, Snort nos mostrará información más detallada. Nos mostrará las cabeceras a nivel de enlace. snort -dev
2.3.1. Filtros
Podemos añadir, a parte de las opciones, una serie de filtros para optimizar los resultados obtenidos. Estos filtros se añadirán
SERVIDORES DE ALTA DISPONIBILIDAD 117
CIBERTEC CARRERAS PROFESIONALES
en el mismo formato que usa programas como TCPDump, ya que usan las mismas librerías de captura de paquetes (libpcap).
snort -vd host 192.168.1.92 and dst port 80
Fig. 8. Filtros
Otra opción a tomar en cuenta es -i para indicar a snort qué interface de red usar en el caso de que tengamos dos o más. snort -vde -i 1
2.4. Snort en modo Registro de paquetes Con estas opciones y dependiendo del tráfico en nuestra red, veremos pasar gran cantidad de información por nuestra pantalla, con lo cual sería interesante registrar, guardar estos datos a disco para su posterior estudio. snort -dev -l /var/log/snort/
118
CARERRAS PROFESIONALES CIBERTEC
La opción -l indica a Snort que debe guardar los logs en un directorio determinado, en este caso dentro de la carpeta log se creará una estructura de directorios donde se archivarán los logs. El formato de los logs se almacena en formato TCPDump. Esto permite que se puedan estudiar más a fondo con los potentes filtros de este programa.
Fig. 7. Comando tcpdump El archivo generado por Snort en modo binario también podemos leerlo con este mismo aplicativo usando: snort -r /var/log/snort/snort.log.1204420267
snort –dev -r /var/log/snort/snort.log.1204420267
snort -r /var/log/snort/snort.log.1204420267 tcp
SERVIDORES DE ALTA DISPONIBILIDAD 119
CIBERTEC CARRERAS PROFESIONALES
Autoevaluación
1. ¿Cuál no es un modo de funcionamiento de Snort?
(a) Packet Dump (b) Packet Logging
(c) Packet Syslog
(d) Packet IDS
2. ¿Qué es un HIDS? 3. ¿Qué significa el termino “falso positivo” en un IDS?
(a) Es la detección de un intruso. (b) Es la detección de un ataque.
(c) Es un reporte de un ataque o intrusión donde no existe.
(d) Es la falla para reportar un ataque o intrusión actual.
(e) Es una falla en el sistema IDS.
120
CARERRAS PROFESIONALES CIBERTEC
SERVIDORES DE ALTA DISPONIBILIDAD 121
CIBERTEC CARRERAS PROFESIONALES
Intrusion detection systems II
TEMA Descripción del uso del Snort en modo NIDS. OBJETIVOS ESPECÍFICOS
Comprender el funcionamiento del Snort en modo NIDS. CONTENIDOS
Snort en modo NIDS.
S E M A N A
12
122
CARERRAS PROFESIONALES CIBERTEC
SNORT EN MODO NIDS
En este apartado es donde nos centraremos más. El modo detección de intrusos de red se activa añadiendo a la línea de comandos de Snort la opción -c snort.conf. En este archivo, snort.conf, se guarda toda la configuración de las reglas, preprocesadores y otras configuraciones necesarias para el funcionamiento en modo NIDS.
snort -dev -l /var/log/snort/ -h 192.168.1.0/24 -c
/etc/snort/snort.conf
Con al opción -D indicará a snort que corra como un servicio. Esto es sólo válido para las versiónes Linux/UNIX:
snort -dev -l /var/log/snort/ -h 192.168.1.0/24 -c
/etc/snort/snort.conf -D
1.1. Configuración de Snort
El archivo de configuración snort.conf se divide en 6 secciones que a continuación se detalla:
Sección 1: Defina las variables de la red (Set the network variables). Todas las variables que se desea habilitar requieren quitar el símbolo “ # ” que se utiliza para agregar comentarios en al archivo de configuración.
- Variable HOME_NET
Esta variable especifica la dirección de la red local a monitorear. var HOME_NET 10.1.1.0/24
Para varias direcciones de la red local var HOME_NET [10.1.1.0/24,192.168.1.0/24]
Interface de red que tiene asignado dirección IP y mascara de red que accede a la red local var HOME_NET $eth0_ADDRESS
Cualquier dirección de la red local var HOME_NET any (habilitado por defecto)
Para nuestro ejemplo, asignaremos la dirección de red local. var HOME_NET 192.168.1.0/24
- Variable EXTERNAL_NET
Especifica la red externa. Se recomienda usar la que esta habilitado por defecto. var EXTERNAL_NET any (habilitado por defecto)
Las siguientes variables permiten a Snort detectar posibles ataques a los servidores de la red local.
SERVIDORES DE ALTA DISPONIBILIDAD 123
CIBERTEC CARRERAS PROFESIONALES
- Variable DNS_SERVERS Lista de servidores DNS var DNS_SERVERS $HOME_NET
- Variable SMTP_SERVERS
Lista de servidores de transferencia de correo SMTP var SMTP_SERVERS $HOME_NET
- Variable HTTP_SERVERS
Lista de servidores Web var HTTP_SERVERS $HOME_NET
- Variable SQL_SERVERS
Lista de servidores Base de Datos SQL var SQL_SERVERS $HOME_NET
- Variable TELNET_SERVERS
Lista de servidores Telnet var TELNET_SERVERS $HOME_NET
- Variable SNMP_SERVERS
Lista de servidores SNMP var SNMP_SERVERS $HOME_NET
Configurar tus puertos de servicios, permite a Snort localizar ataques con destino a puertos activos utilizados por una determinada aplicación.
- Variable HTTP_PORTS
Puerto activo del servidor Web var HTTP_PORTS 80
- Variable SHELLCODE_PORTS
Puertos activos donde se busca SHELLCODE var SHELLCODE_PORTS ! 80
- Variable ORACLE_PORTS
Puerto activo del servidor Oracle var ORACLE_PORTS 1521
- Variable RULE_PATH
Define la ruta del directorio que contiene los archivos de reglas, también se puede considerar una ruta relativa. var RULE_PATH rules
Seccion 2: Configuración de la carga de librerias dinamicas Snort permite la carga dinamica de librerias
dynamicpreprocessor directory /usr/lib/snort-
2.8.0.2_dynamicpreprocessor
dynamicengine /usr/lib/snort-2.8.0.2_dynamicengine/libsf_engine.so
Sección 3: Configuración de los preprocesadores (preprocessors)
124
CARERRAS PROFESIONALES CIBERTEC
Snort tiene la capacidad de utilizar “plugins” modulares que extiende su funcionalidad. Estos plugins son cargados y configurados en las reglas de snort de acuerdo a la siguiente sintaxis: preprocessor <name_of_processor>: <configuration_options> Explicaremos el uso de algunos preprocesadores:
a. sfPortscan – Detecta escaneos a los puertos.
preprocessor sfportscan: proto { all } memcap { 10000000 }
sense_level { low }
b. frag3 – Soporte defragmentacion IP (IP defragmentation support)
Este preprocesador de Fragmentación IP es un plugin que detecta atacantes que lanza paquetes IP fragmentados, usualmente Denegación de servicio (DoS). preprocessor frag3_golbal: max_frags 65536
preprocessor frag3_engine: policy firts detect_anomalies
c. bo – Detector de Back Orifice
Detecta el tráfico de Back Orifice en la red. Back Orifice emula a un servidor para introducir troyanos en la red local. preprocessor bo
Sección 4: Configuración plugins de salida Descomente y configure el plugins de salida que usted decida usar. Generalmente, la configuración para el plugins de salida es de la forma siguiente:
output <name_of_plugin>: <configuration_options>
- alert_syslog: Registro de alertas hacia syslog Se puede agregar uno o más tipos de mensajes syslog como argumentos. output alert_syslog: LOG_AUTH LOG_ALERT
- log_tcpdump: Registro de paquetes en el formato binario de
tcpdump Se especifica el nombre del archivo binario de salida log_tcpdump: tcpdump.log
- unified: Snort unifica en formato binario las alertas y registros
generados. El plugin unificado (unified) de salida proporciona dos formatos nuevos para registrar y generar las alertas de snort. Se especifica el nombre del archivo de salida y se define el tamaño máximo en MB. output alert_unified: filename snort.alert, limit 128
output log_unified: filename snort.log, limit 128
SERVIDORES DE ALTA DISPONIBILIDAD 125
CIBERTEC CARRERAS PROFESIONALES
Se incluye el archivo de clasificación de ataques y prioridad de las alertas include classification.config
Se incluye el archivo de referencia include reference.config
126
CARERRAS PROFESIONALES CIBERTEC
Sección 5: Configuración de Snort con declaraciones config (Configure snort with config statements) Muchas opciones de línea de comandos y configuración de snort pueden ser especificadas en el archivo de configuración.
Explicaremos el uso de algunos de ellos: - interface
Define la interface de red (snort –i). Config interface: eth0
- logdir
Define el directorio de registro (snort -l). config logdir: /var/log/snort
- ignore_ports
Especifica los puertos a ser ignorados. Especifique el protocolo (tcp, udp ó icmp), seguido de la lista de puertos. El rango de puertos es soportado Config ignore_ports: udp 1:17 53
Sección 6: Personalización de reglas (Customize your rule set) Las reglas incluidas con esta distribución generan alertas basadas en la actividad sospechosa. Dependiendo de las políticas de seguridad implementadas en su red local y de lo que usted considere como sospechoso, algunas de estas reglas pueden generar falsos positivos que puede detectar actividad que usted considere aceptable, por lo tanto usted puede comentar reglas que no se aplica en su entorno de red.
1.2. Modos de Alerta
Hay varias maneras de configurar la salida de Snort, es decir, las alertas, el modo en que se almacenarán estas en el archivo /var/log/snort/alert. Snort dispone de siete modos de alertas en la línea de comandos: completo, rápido, socket, syslog, consola y ninguno. Fast: El modo Alerta Rápida nos devolverá información acerca del tiempo, mensaje de la alerta, clasificación, prioridad de la alerta, IP y puerto de origen y destino. snort -A fast -dev -l /var/log/snort/ -h 192.168.1.0/24 -c
/etc/snort/snort.conf
SERVIDORES DE ALTA DISPONIBILIDAD 127
CIBERTEC CARRERAS PROFESIONALES
Fig. 1. Alerta rapida
Full: El modo de alerta completa nos devolverá información acerca del tiempo, mensaje de la alerta, clasificación, prioridad de la alerta, IP y puerto de origen/destino e información completa de las cabeceras de los paquetes registrados. snort -A full -dev -l /var/log/snort/ -h 192.168.1.0/24 -c
/etc/snort/snort.conf
Fig. 2. Alerta completa
Socket: Manda las alertas a través de un socket para que las escuche otra aplicación. Está opción es para Linux/UNIX. snort -A unsock -c /etc/snort/snort.conf
Console: Imprime las alarmas en pantalla. snort -A console -dev -l /var/log/snort/ -h 192.168.4.0/24 -c
/etc/snort/snort.conf
128
CARERRAS PROFESIONALES CIBERTEC
None: Desactiva las alarmas. snort -A none -c /etc/snort/snort.conf
Syslog: Envía las alarmas al syslog snort -A console -dev -l /var/log/snort/ -h 192.168.1.0/24 -c
/etc/snort/snort.conf -s
Fig. 3. Archivo /var/log/messages
Eventlog: Registra las alertas para visualizarse a través del visor de sucesos de un sistema windows. Esta opción se activará mediante -E y sólo para Win32.
NOTA: Todas las pruebas se realizaron desde otro equipo usando el comando nmap: nmap –sS –PT –PI –F –O –vv –T 3 192.168.1.3
SERVIDORES DE ALTA DISPONIBILIDAD 129
CIBERTEC CARRERAS PROFESIONALES
Fig. 4. Comando nmap
130
CARERRAS PROFESIONALES CIBERTEC
Autoevaluación
1. ¿Qué es un NIDS? 2. ¿Cuál es un modo de alerta que se habilita con Snort?
(a) Log (b) Full
(c) Pass
(d) Alert
SERVIDORES DE ALTA DISPONIBILIDAD 131
CIBERTEC CARRERAS PROFESIONALES
Virtual private networks I
TEMA Identificar.
OBJETIVOS ESPECÍFICOS Comprender el funcionamiento de la Certificación Digital.
CONTENIDOS Introducción
¿Qué es una VPN?
Funcionamiento de una VPN
Sistemas de Encriptación
Firma Digital
Certificación de Llave Pública
PKI
PGP
S E M A N A
13
132
CARERRAS PROFESIONALES CIBERTEC
INTRODUCCIÓN
Hace unos años, no era tan necesario conectarse a Internet por motivos de trabajo. Conforme ha ido pasado el tiempo, las empresas han visto la necesidad de que las redes de área local superen la barrera de lo local permitiendo la conectividad de su personal y oficinas en otros edificios, ciudades, comunidades e incluso países. Desgraciadamente, en el otro lado de la balanza se encontraban las grandes inversiones que era necesario realizar tanto en hardware como en software y, por supuesto, en servicios de telecomunicaciones que permitiera crear estas redes de servicio. Afortunadamente, con la aparición de Internet, las empresas, centros de formación, organizaciones de todo tipo, incluso, usuarios particulares tienen la posibilidad de crear una Red Privada Virtual (VPN) que permita, mediante una moderada inversión económica y utilizando Internet, la conexión entre diferentes ubicaciones salvando la distancia entre ellas. Las redes virtuales privadas utilizan protocolos especiales de seguridad que permiten obtener acceso a servicios de carácter privado, únicamente a personal autorizado, de unas empresas, centros de formación, organizaciones, etc. Cuando un usuario se conecta vía Internet, la configuración de la red privada virtual le permite conectarse a la red privada del organismo con el que colabora y acceder a los recursos disponibles de la misma como si estuviera tranquilamente sentado en su oficina.
1. ¿QUÉ ES UNA VPN?
La brevedad es una virtud, ya lo decía el gran Quevedo: “Lo bueno, si breve, dos veces bueno”. Siguiendo esa premisa trataremos de explicar brevemente que una VPN es una red virtual que se crea dentro de otra red real, como puede ser Internet. Realmente, una VPN no es más que una estructura de red corporativa implantada sobre una red de recursos de carácter público, pero que utiliza el mismo sistema de gestión y las mismas políticas de acceso que se usan en las redes privadas; al fin y al cabo, no es más que la creación en una red pública de un entorno de carácter confidencial y privado que permitirá trabajar al usuario como si estuviera en su misma red local. En la mayoría de los casos, la red pública es Internet, pero también puede ser una red ATM o Frame Relay.
SERVIDORES DE ALTA DISPONIBILIDAD 133
CIBERTEC CARRERAS PROFESIONALES
2. FUNCIONAMIENTO DE UNA VPN Desde el punto de vista del usuario que se conecta a ella, el funcionamiento de una VPN es similar al de cualquier red normal, aunque realmente, para que el comportamiento se perciba como el mismo, hay un gran número de elementos y factores que hacen esto posible. La comunicación entre los dos extremos de la red privada a través de la red pública se hace estableciendo túneles virtuales entre esos dos puntos y usando sistemas de encriptación y autentificación que aseguren la confidencialidad e integridad de los datos transmitidos a través de esa red pública. Debido al uso de estas redes públicas, generalmente Internet, es necesario prestar especial atención a las cuestiones de seguridad para evitar accesos no deseados. La tecnología de túneles (Tunneling) es un modo de envío de datos en el que se encapsula un tipo de paquetes de datos dentro del paquete de datos propio de algún protocolo de comunicaciones, y al llegar a su destino, el paquete original es desempaquetado volviendo así a su estado original. En el traslado, a través de Internet, los paquetes viajan encriptados, por este motivo, las técnicas de autenticación son esenciales para el correcto funcionamiento de las VPNs, ya que se aseguran a emisor y receptor que están intercambiando información con el usuario o dispositivo correcto. La autenticación en redes virtuales es similar al sistema de inicio de sesión a través de usuario y contraseña, pero tienes unas necesidades mayores de aseguramiento de validación de identidades. La mayoría de los sistemas de autenticación usados en VPN están basados en sistema de claves compartidas. La autenticación se realiza normalmente al inicio de una sesión, y luego, aleatoriamente, durante el transcurso de la sesión, para asegurar que no haya algún tercer participante que se haya podido entrometer en la conversación. Todas las VPNs usan algún tipo de tecnología de encriptación que empaqueta los datos en un paquete seguro para su envío por la red pública. La encriptación hay que considerarla tan esencial como la autenticación, ya que permite proteger los datos transportados de poder ser vistos y entendidos en el viaje de un extremo a otro de la conexión. Existen dos tipos de técnicas de encriptación que se usan en las VPN: Encriptación de clave privada y Encriptación de clave pública.
Encriptación con clave privada (simétrica) – En este tipo de encriptación se utiliza una contraseña secreta conocida por todos los participantes que van a hacer uso de la información encriptada. La contraseña se utiliza tanto para encriptar como para desencriptar la
134
CARERRAS PROFESIONALES CIBERTEC
información. Este tipo de sistema tiene el problema que, al ser compartida por todos los participantes y debe mantenerse secreta, al ser revelada, tiene que ser cambiada y distribuida a los participantes, lo que puede crear problemas de seguridad.
Encriptación de clave pública (asimétrica) – Implica la utilización de dos claves, una pública y una secreta. La primera es enviada a los demás participantes. Al encriptar, se usa la clave privada propia y la clave pública del otro participante de la conversación. Al recibir la información, ésta es desencriptada usando su propia clave privada y la pública del generador de la información. La gran desventaja de este tipo de encriptación es que resulta ser más lenta que la de clave privada.
En las redes virtuales, la encriptación debe ser realizada en tiempo real, de esta manera, los flujos de información encriptada a través de una red lo son utilizando encriptación de clave secreta con claves que son válidas únicamente para la sesión usada en ese momento. Problemas que adolecen:
Suplantación
Eficiencia
Ataques criptograficos
3. SISTEMAS DE ENCRIPTACIÓN 4.1. Simétrico
4.1.1. Data Encryption Standard (DES)
Es un esquema de encriptación simétrico desarrollado en 1977 por el Departamento de Comercio y la Oficina Nacional de Estándares de EEUU en colaboración con la empresa IBM, que se creó con objeto de proporcionar al público en general un algoritmo de cifrado normalizado para redes de computadoras. Se basa en un sistema monoalfabético, con un algoritmo de cifrado consistente en la aplicación sucesiva de varias permutaciones y sustituciones. Inicialmente el texto en claro a cifrar se somete a una permutación, con bloque de entrada de 64 bits (o múltiplo de 64), para posteriormente ser sometido a la acción de dos funciones principales, una función de permutación con entrada de 8 bits y otra de sustitución con entrada de 5 bits en un proceso que consta de 16 etapas de cifrado. En general, DES utiliza una clave simétrica de 64 bits, de los cuales 56 son usados para la encriptación, mientras que los 8
SERVIDORES DE ALTA DISPONIBILIDAD 135
CIBERTEC CARRERAS PROFESIONALES
restantes son de paridad, y se usan para la detección de errores en el proceso. Como la clave efectiva es de 56 bits, son un total de 2 elevado a 56 = 72.057.594.037.927.936 clave posible, es decir, unos 72.000 billones de claves. En la actualidad, este tipo de encriptación ya no es considerado seguro.
4.1.2. Triple DES (3DES)
Como hemos visto, el sistema DES se considera en la actualidad poco práctico, debido a la corta longitud de su clave. Para solventar este problema y continuar utilizando DES, se creó el sistema Triple DES (3DES), basado en tres iteraciones sucesivas del algoritmo DES, con lo que se consigue una longitud de clave de 128 bits, y que es compatible con DES simple. Este hecho se basa en que DES tiene la característica matemática de no ser un grupo, lo que implica que si se encripta el mismo bloque dos veces con dos llaves diferentes se aumenta el tamaño efectivo de la llave. Para implementarlo, se toma una clave de 128 bits y se divide en 2 diferentes de 64 bits, aplicándose el siguiente proceso al documento en claro: (1) Se le aplica al documento a cifrar un primer cifrado
mediante la primera clave, C1. (2) Al resultado (denominado ANTIDES) se le aplica un
segundo cifrado con la segunda clave, C2.
(3) Y al resultado se le vuelve a aplicar un tercer cifrado con la primera clave, C1.
Si la clave de 128 bits está formada por dos claves iguales de 64 bits (C1=C2), entonces el sistema se comporta como un DES simple. Trás un proceso inicial de búsqueda de compatibilidad con DES, que ha durado 3 años, actualmente 3DES usa 3 claves diferentes, lo que hace el sistema mucho más robusto, al conseguirse longitudes de clave de 192 bits (de los cuales son efectivos 168), mientras que el uso de DES simple no está aconsejado.
136
CARERRAS PROFESIONALES CIBERTEC
4.1.3. Advanced Encryption Standard (AES)
Fue publicado el 2 de Octubre de 2000 por el NIST como ganador de la convocatoria AES (estándar de cifrado avanzado). El tamaño de clave debe ser de, al menos, 128, 192 y 256 bits (debe admitir los tres), y el tamaño de bloque de cifrado debe ser de 128 bits. Buena combinación de seguridad, velocidad, eficiencia (en memoria y puertas lógicas), sencillez y flexibilidad. Consta de crear una subclave de la clave original y a partir de ella ir haciendo rondas succesivas de transformaciones.
4.2. Asimétrico
4.2.1. RSA
Es el algoritmo asimétrico más sencillo de comprender e implementar. Su nombre proviene de sus tres inventores: Rivest, Shamir y Adleman.
El sistema RSA se basa en el hecho matemático de la dificultad de factorizar números muy grandes. Para factorizar un número. el sistema más lógico consiste en empezar a dividir sucesivamente éste entre 2, entre 3, entre 4..., y así sucesivamente, buscando que el resultado de la división sea exacto, es decir, de resto 0, con lo que ya tendremos un divisor del número. Ahora bien, si el número considerado es un número primo (el que sólo es divisible por 1 y por él mismo), tendremos que para factorizarlo habría que empezar por 1, 2, 3... hasta llegar a él mismo, ya que por ser primo ninguno de los números anteriores es divisor suyo. Y si el número primo es lo suficientemente grande, el proceso de factorización es complicado y lleva mucho tiempo. Algoritmo utilizado en el SSH (Secure Shell Client)
4.2.2. Diffie-Hellman.-
Este algoritmo de encriptación de Whitfield Diffie y Martin Hellman supuso una verdadera revolución en el campo de la criptografía, ya que fué el punto de partida para los sistemas asímétricos, basados en dos claves diferentes, la pública y la privada. Vió la luz en 1976, surgiendo como ilustración del artículo "New directions in Cryptography". Su importancia se debe, sobre todo, al hecho de ser el inicio de los sistemas asimétricos, ya que en la práctica sólo es válido
SERVIDORES DE ALTA DISPONIBILIDAD 137
CIBERTEC CARRERAS PROFESIONALES
para el intercambio de claves simétricas, y con esta funcionalidad es muy usado en los diferentes sistemas seguros implementados en Internet, como SSL (Secure Socket Layer) y VPN (Virtual Private Network).
5. FIRMA DIGITAL Dada la importancia que está adquiriendo la firma digital en los actuales sistemas de pago electrónico y en los sistemas de autentificación, vamos a ampliar un poco su estudio. El proceso de firma digital consta de dos partes bien diferenciadas: (1) Proceso de firma: el emisor encripta el documento con su llave privada,
enviando al destinatario tanto el documento en claro como el encriptado. (2) Proceso de verificacion de la firma: el receptor desencripta el
documento cifrado con la clave pública de A y comprueba que coincide con el documento original, lo que atestígua de forma total que el emisor del mismo ha sido efectivamente A.
El método de la firma digital no sólo proporciona autenticidad al mensaje enviado por A, si no que también asegura el No repudio, ya que sólo el dueño de una llave privada puede encriptar un documento de tal forma que se pueda desencriptar con su llave pública, lo que garantiza que ha sido A y no otro el que ha enviado dicho documento. Asimismo, proporciona Integridad de datos, ya que si el documento fuera accedido y modificado en el camino, el resumen del documento cambiaría también. La firma digital suele usarse en comunicaciones en las que no existe una confianza inicial total entre los comunicantes. Se usan para autentificar mensajes, para validar compras por Internet, para realizar transferencias de fondos bancarios y para otras transacciones de negocios. Tanta es la fuerza que posée éste sistema que, a nivel legal, la firma electrónica constituye, en la mayoría de los casos, una prueba indudable de autoría del envío de un documento electrónico, semejante a la firma tradicional de puño y letra. Un alegato que podría esgrimir A para negar la autoría del envío de un documento cifrado con su llave privada sería el echo de haber perdido dicha llave o que se la hayan sustraído, pero entonces hay que tener en cuenta que A es la única responsable del buen uso de su llave privada, por lo que está obligado a comunicar inmediatamente a la autoridad correspondiente cualquier circunstancia que ponga en peligro la seguridad de la misma.
138
CARERRAS PROFESIONALES CIBERTEC
Esto es análogo a lo que ocurre con las tarjetas de débito o crédito, siendo siempre, en último extremo, responsable del uso indebido de las mismas el dueño de la tarjeta, si no ha avisado a tiempo a su entidad financiera o banco de la pérdida o sustración. 5.1. Funciones hash
Si imaginamos el envío de un documento extenso que queremos firmar digitalmente, nos daremos cuenta de que cifrar el documento entero es una pérdida de tiempo, ya que los medios de encriptación de llave pública son lentos, pués precisan un grán proceso de cómputo. Para solventar éste aspecto aparecen las funciones hash, que son unas funciones matemáticas que realizan un resumen del documento a firmar. Su forma de operar es comprimir el documento en un único bloque de longitud fija, bloque cuyo contenido es ilegible y no tiene ningún sentido real. Tanto es así que, por definición, las funciones hash son irreversibles, es decir, que, a partir de un bloque comprimido, no se puede obtener el bloque sin comprimir; y si no es así, no es una función hash. Estas funciones son, además, de dominio público. A un mensaje resumido mediante una función hash y encriptado con una llave privada es lo que, en la vida real, se denomina firma digital. El esquema de firma digital mediante una función hash y su mecanismo es el siguiente: (1) El emisor aplica una función hash conocida al documento, con lo
que obtiene un resumen hash del mismo. (2) Encripta dicho resumen con su clave privada.
(3) Envía al receptor el documento original plano y el resumen hash
encriptado.
(4) El receptor B aplica la función hash al resumen sin encriptar y desencripta el resumen encriptado con la llave pública de A.
(5) Si ambos coinciden está seguro de que ha sido A el que le ha
enviado el documento. Si no coinciden, está seguro de que no ha sido A o de que el envío ha sido interceptado durante el medio de envío y modificado.
En el caso de que ambos resúmenes no coincidan, contempla también la posibilidad de que el mensaje haya sido alterado en su viaje de A a B, lo que conlleva, igualmente, el rechazo del documento por no válido.
SERVIDORES DE ALTA DISPONIBILIDAD 139
CIBERTEC CARRERAS PROFESIONALES
Las funciones hash y la firma digital son elementos indispensables para el establecimiento de canales seguros de comunicación, basados en los Certificados digitales. Para que una función pueda considerarse como función hash debe cumplir con: transformar un texto de longitud variable en un bloque de longitud
fija, que generalmente es pequeña (algunas son de 16 bits). ser cómoda de usar e implementar. ser irreversible, es decir, no se puede obtener el texto original del
resumen hash. ser imposible encontrar dos mensajes diferentes, cuya firma digital
mediante la función hash sea la misma (no-colisión). Si se desea, además, mantener un intercambio de información con
confidencialidad, basta con cifrar el documento a enviar con la clave pública del receptor.
Las funciones hash más conocidas y usadas son:
MD5 (Message Digest 5): También obra de Ron Rivest, que se creó para dar seguridad a MD4, y que ha sido ámpliamante usado en diversos campos, como autenticador de mensajes en el protocolo SSL y como firmador de mensajes en el programa de correo PGP. Si embargo, fué vulnerado en 1996 por el mismo investigador que lo hizo con MD4, el señor Dobbertin, que consiguió crear colisiones en el sistema MD5, aunque por medio de ataques parciales. Pero lo peor es que también consiguió realizar ataques que comprometían la no-colisión, por lo que se podían obtener mensajes con igual hash que otro determinado. A pesar de todo esto, MD5 se sigue usando bastante en la actualidad.
SHA-1 (Secure Hash Algorithm): Desarrollado como parte integrante del Secure Hash Standar (SHS) y el Digital Signature Standar (DSS) por la Agencia de Seguridad Nacional Norteamericana, NSA. Sus creadores afirman que la base de este sistema es similar a la de MD4 de Rivest, y ha sido mejorado debido a ataques nunca desvelados. La versión actual se considera segura (por lo menos hasta que se demuestre lo contrario) y es muy utilizada como algoritmo de firma, como en el programa PGP en sus nuevas claves DH/DSS (Diffie-Hellman/Digital Signature Standar). Destacar también que, en la actualidad, se están estudiando versiones de SHA con longitudes de clave de 256, 384 y 512 bits.
6. Certificación de Llave Publica
El problema de la suplantación de llaves se puede resolver si alguien de confianza nos asegura que la llave pública de A realmente pertenece a A.
140
CARERRAS PROFESIONALES CIBERTEC
En el caso de la guía telefónica, nos creemos que el teléfono que aparece junto al nombre del abonado realmente pertenece a ese abonado. ¿En qué se basa esa creencia? Simplemente, en que confiamos que la empresa editora de la guía no nos engaña. Un nivel de confianza aún más alto podría venir de una certificación ante notario, ya que suponemos que el notario es una persona de confianza y que lo que él afirma es cierto. En el mundo digital, nos aprovechamos del hecho de que se puede firmar cualquier archivo o documento digital, incluida una llave pública. A fin de cuentas, una llave pública ha de ser guardada en la computadora en la forma de un archivo. ¿Por qué no se va a poder firmar ese archivo? La criptografía de clave pública contribuye así a reparar su propia debilidad. El proceso para que A tenga la seguridad de poseer la llave pública auténtica de B sería el siguiente:
A obtiene la clave pública del notario.
A recibe la clave pública de B, firmada por el notario.
A verifica la firma digital del notario.
Si la verificación es correcta, A sabe que la llave de B es auténtica. En ese caso, se dice que la llave es válida. Esta validez proviene de la confianza depositada en el notario.
Este último paso se justifica considerando que el notario no firmará ninguna llave, si no ha verificado antes que realmente pertenece a su dueño. Es como en el mundo de papel. Yo puedo firmar un contrato de hipoteca con el banco directamente. La intervención de un notario, sin embargo, le da mayor confianza a la transacción, ya que la firma del notario certifica muchas cosas: que los firmantes son efectivamente quienes afirman ser, que están legalmente capacitados para realizar la transacción, que han firmado el contrato libre y voluntariamente, que entienden lo que éste significa, etc. El primer punto sigue siendo algo más escabroso. Necesitamos la llave pública del notario para verificar todo lo que éste firma, pero ¿cómo estar seguros de que no se trata de una llave falsa? A fin de cuentas, ¿cómo se que el notario frente al que me encuentro es realmente quien dice ser y no un falso notario? La paranoia no tiene límites, y como vemos la seguridad absoluta no existe. En la práctica, suponemos que hay una forma razonablemente segura de obtener la llave pública verdadera del notario. Tal vez nos la ha entregado él personalmente, o quizá la hemos descargado de una página web segura. Pero tenemos una ventaja crucial: somos nosotros quienes decidimos cuánta confianza otorgar al notario. De hecho, podemos sustituir la palabra "notario" por "persona de confianza" Una firma digital que atestigua la autenticidad de una llave pública se denomina genéricamente Certificado digital. Habitualmente, un certificado digital consta de tres elementos: la llave pública que está siendo certificada,
SERVIDORES DE ALTA DISPONIBILIDAD 141
CIBERTEC CARRERAS PROFESIONALES
la información sobre el usuario y la firma digital (o firmas digitales) del notario o persona de confianza. Eso es lo que estamos acostumbrados a hacer. Saque usted su DNI o pasaporte. ¿Qué contiene? Básicamente, información sobre el titular junto con ciertos elementos (marca de agua, firma policial, códigos diversos) que permiten verificar la autenticidad del documento. El mundo digital sigue las mismas pautas, aunque con ciertas peculiaridades.
Certification Authority (CA): Actua como un notario verificando la identidad de las personas y emitiendo un certificado que garantice una llave pública a un nombre individual.
7. PKI El acrónimo PKI deriva de "Public Key Infrastructure" (Infraestructura de Clave Pública) y es la forma común de referirse a un sistema complejo, necesario para la gestión de certificados digitales y aplicaciones de la Firma Digital. Una PKI bien construida debe proporcionar:
Autenticidad – La firma digital tendrá la misma validez que la manuscrita (Algoritmos hash, firmas digitales).
Confidencialidad – de la información transmitida entre las partes (Encriptación de datos).
Integridad – Debe asegurarse la capacidad de detectar si un documento firmado ha sido manipulado (Firmas digitales, certificados).
No Repudio – de un documento firmado digitalmente (Firmas digitales, rgistros de auditoria).
Disponibilidad – Redundancia.
7.1. Autoridad de registro (CA)
En toda PKI deben establecerse los mecanismos para que los usuarios soliciten su propio certificado, de tal forma que se asegure la identidad de dicho usuario. A este procedimiento se le denomina "Proceso de registro" y se realiza a través de la denominada "Autoridad de Registro". Existen dos tipos principales de registro:
Registro clásico. El solicitante acude en persona a una "Oficina de registro", donde, tras acreditar su identidad, se le proporciona de forma segura su clave privada y su certificado.
Registro remoto. El usuario, a través de Internet, realiza una solicitud de certificado. Para esto, empleará un software (p.e. un navegador) que generará el par de claves y enviará su clave
142
CARERRAS PROFESIONALES CIBERTEC
pública a la autoridad de registro para que sea firmada por la autoridad certificadora y le sea devuelto su certificado.
La validez de la firma digital estará condicionada por la calidad del proceso de registro, siendo obligatorio para asegurar la validez legal de la firma, algún tipo de registro "Cara a cara", ya que es el único que asegura la identidad del solicitante. Por otra parte, la validez de la firma digital también estará condicionada a la firma manuscrita de un "contrato" por el que el solicitante acepta su certificado y las condiciones de uso del mismo. La autoridad de registro se compondrá de una serie de elementos tecnológicos (hardware y software específico) y unos medios humanos (los Operadores de Registro). Es el punto de comunicación entre los usuarios de la PKI y la autoridad certificadora.
7.2. Componentes de una PKI Los sistemas anteriormente descritos deben englobarse en un único sistema, al que se denomina "Infraestructura de Clave Pública" (PKI). Existen multitud de componentes adicionales, y cada elemento es un sistema complejo en si mismo. Los componentes básicos pueden resumirse en:
La autoridad de certificación. La pieza central y la que proporciona la base de confianza en la PKI. Constituido por elementos hardware, software y, evidentemente, humanos.
Publicación de certificados. El repositorio de certificados permite a los usuarios operar entre ellos (Por ejemplo, para la validación de una firma digital), y es un requisito legal que cuente con una total disponibilidad de acceso.
Soporte de la llave privada. La elección de un buen soporte para que los usuarios custodien su clave privada es un punto esencial y complejo en si mismo (Por ejemplo, si la clave está en una SmartCard, es necesario diseñar el Sistema de Gestión de SmartCards que permita la emisión y distribución de las tarjetas a los usuarios).
Aplicaciones "PKI-Enabled". Se denomina así a las aplicaciones software capaces de operar con certificados digitales. Estas aplicaciones son las que dan el valor real de la PKI de cara al usuario.
Políticas de certificación. Deben diseñarse una serie de políticas, o procedimientos operativos, que rigen el funcionamiento de la PKI y establecen los compromisos entre la autoridad certificadora y los
SERVIDORES DE ALTA DISPONIBILIDAD 143
CIBERTEC CARRERAS PROFESIONALES
usuarios finales. Estos documentos tendrán un carácter tanto técnico como legal.
El proceso de construcción de una PKI deberá siempre partir de la definición de las políticas operativas y contemplar como requerimiento esencial el asegurar la calidad y seguridad de las operaciones que los usuarios finales realizan con sus claves privadas (por ejemplo, firma digital de documentos).
8. PGP El sistema PGP (Pretty Good Privacity - Intimidad Bastante Buena) fué diseñado especialmente por Philip Zimmermann en 1991 para proporcionar una forma segura de intercambio de correo electrónico. Implementa tanto el cifrado del correo y ficheros como la firma digital de documentos. Para la encriptación del documento, usa una algoritmo de llave simétrica con intercambio de clave mediante sistema de llave pública, normalmente RSA; y para la firma digital suele utilizar la función hash MD5. No obstante, es un sistema ámpliamente configurable, que permite al usuario elegir entre diferentes sistemas asimétricos, funciones hash y longitudes de clave. Para usarlo hay que comenzar generando un par de claves, una pública y otra privada, siendo posible en ese momento la elección de la longitud de clave deseada. También hay que fijar una clave personal, que se usará luego para proteger la llave privada de miradas indiscretas. Las claves pública y privada las genera automáticamente el algoritmo, mientras que la personal de protección la elige el usuario. Una vez generadas las claves, la privada se encripta con la personal mediante un algoritmo simétrico, siendo posteriormente necesario desencriptarla cada vez que deseemos usarla. En cuanto a la llave pública, se deposita en un archivo especial, de tipo ASCII (sólo texto), denominado certificado de llave, que incluye el identificador de usuario del propietario (el nombre de esa persona y algún dato único, como su dirección de e-mail), un sello de hora del momento en el que se generó el par de llaves y el material propio de la clave. Cuando se desea mandar un correo o archivo encriptado, PGP lo encripta usando un sistema simétrico, generalmente IDEA o DES, usando una clave aleatoria, que posteriormente se encripta con RSA. Se envían el documento cifrado con la clave aleatoria y, ésta, encriptada con la llave RSA privada del destinatario. Cuando éste recibe el correo y deséa desencriptarlo, su programa PGP, primero, descifra la clave simétrica con su llave privada RSA y, luego, descifra el documento usando la clave desencriptada.
144
CARERRAS PROFESIONALES CIBERTEC
Normalmente, el sistema PGP viene implementado mediante alguna aplicación específica, que se instala en la computadora del usuario. Esta aplicación se integra perfectamente con los programas de correo más comunes, permitiendo al usuario el uso directo del sistema PGP, con tan sólo pulsar los botones que aparecerán en la barra de menús de la aplicación de correo. Para desencriptar un mensaje basta con seleccionar el icono correspondiente (o mediante el botón derecho del ratón), siendo necesario en ese momento introducir la clave personal, para que el programa pueda acceder a la clave pública encriptada. Para firmar un correo se procede de forma análoga. En el caso de querer enviar un e-mail encriptado a otra persona, es necesario, en primer lugar, que la misma tenga un programa PGP instalado y, después, que nosotros tengamos la llave pública del destinatario. Si es así, basta con seleccionar la opción correspondiente en el menú, con lo que se nos pedirá la clave pública del destinatario, y el programa se encargará de todo lo demás. Si tenemos la necesidad de cifrar mensajes para muchos destinatarios diferentes nos encontraremos con el problema de gestionar los distintos archivos de llave pública. Para ello, los programas PGP facilitan el denominado llavero, que es un pequeño módulo de software que se encarga de administrar dichos archivos. Cuando recibamos uno de ellos, basta con colocarlo en el llavero para tenerlo disponible siempre que deseemos. Puede interesarnos, en un momento dado, enviar un correo cifrado o vernos en la necesidad de comprobar la autenticidad de un correo que nos llega firmado por parte de un destinatario del que no conocemos su llave pública. Podemos obtener ésta dirigiéndonos directamente a dicha persona y pidiéndosela, pero para facilitar esta tarea, y puesto que el objeto de las llaves públicas es ser difundidas lo más posible, se han habilitado diferentes servidores que poséen bases de datos con las claves públicas de los usuarios de PGP. Basta acudir a los mismos y solicitar el archivo de clave correspondiente a la persona que nos interesa.
SERVIDORES DE ALTA DISPONIBILIDAD 145
CIBERTEC CARRERAS PROFESIONALES
Autoevaluación
1. ¿Qué es una VPN? 2. ¿Cuál es un componente PKI?
(a) Autenticidad (b) CA
(c) Registro clásico
(d) Registro remoto
(e) Llave privada
146
CARERRAS PROFESIONALES CIBERTEC
Virtual private networks II
TEMA Configurar una VPN.
OBJETIVOS ESPECÍFICOS Comprender el funcionamiento de la VPN
Implementar una VPN
CONTENIDOS Virtual Private Networks (VPN)
Openvpn
S E M A N A
14
SERVIDORES DE ALTA DISPONIBILIDAD 147
CIBERTEC CARRERAS PROFESIONALES
VIRTUAL PRIVATE NETWORKS (VPN) Las VPN’s son sesiones en un canal de comunicaciones autenticado y encriptado en una red pública, como es el caso de Internet. Considerando que las redes son inseguras, la encriptación y autenticación son utilizados para proteger los datos en tránsito. VPN es considerado un servicio independiente ya que toda información es transmitida a lo largo de un canal encriptado. En la siguiente figura, se muestra un esquema de este tipo de conexiones:
Fig. 1. Esquema de una conexión basada en VPN
En el diagrama mostrado se muestra que los dispositivos están conectados a través de un túnel configurado en los ruteadores. Para que se pueda establecer una sesión VPN, ambos equipos deben tener configurados los mismos parámetros: tamaño de las llaves, método de encriptación, etc. De esta manera, si se coloca un analizador de protocolos entre ambos rutedores, sólo se verá tráfico encriptado. El analizador verá el tráfico con direcciones IP origen y destino de los ruteadores. Dentro de los paquetes encriptados, van encapsulados los paquetes con las verdaderas direcciones IP origen y destino que van de una red a otra.
148
CARERRAS PROFESIONALES CIBERTEC
A este proceso se le llama tunneling. Esto ayuda a evitar que un atacante pueda conocer qué direcciones establecen conexiones entre si. Esta característica también puede utilizarse en beneficio propio, ya que son los ruteadores los que realizan el túnel con sus direcciones públicas, se pueden utilizar direcciones de red privadas para que vayan encapsulados en el tráfico encriptado. Las VPN´s fueron diseñadas y desarrolladas para reemplazar lo siguiente:
Grupos de módems
Enlaces WAN dedicados 1.1. Tecnologías de VPN
Entre las tecnologías de VPN´s tenemos: A. Point-to-Point Tunneling Protocol (PPTP)
PPTP trabaja en el nivel de la capa de enace del modelo OSI. Está diseñado para conexiones de clientes individuales a un servidor VPN y habilita una sola conexión punto a punto por sesión. Este protocolo es muy común con conexiones asíncronas que utilizan clientes Windows XP/2000/2003. PPTP utiliza el protocolo de autenticación nativo de Point to Point y sus servicios de encriptación.
B. Layer 2 Tunneling Protocol (L2TP)
L2TP es una combinación de PTP y el protoclo Layer 2 Fordwarding Protocol (L2F) que trabaja en la capa de enlace, similar a PPTP. Este protoclo es muy utilizado en los enlaces VPN que se realizan vía dial-up. Este estándar fue diseñado para conexiones simples cliente/servidor. Por esta razón, se pueden encapsular múltples protoclos.
C. IPSec
IPSec opera en la capa de red y habilita túneles múltiples y simultáneos, a diferencia de la conexión simple de los estándares anteriores. IIPSec tiene la funcionalidad de encriptar y autenticar datos IP. Forma parte del nuevo estándar IPv6. Modo de operación:
Modo túnel – El paquete completo es encriptado y encapsulado en un paquete IPSec. No soporta tráfico que ha sufrido NAT.
Modo Transporte – Sólo el datagrama es encriptado dejando visible la dirección IP.
1.2. Escenarios típicos de VPN´s
Interconexión de redes privadas a tráves de Internet
SERVIDORES DE ALTA DISPONIBILIDAD 149
CIBERTEC CARRERAS PROFESIONALES
Ejemplo: conexión de dos oficinas de una empresa o Se establece una VPN entre dos gateways, cada uno de una
red privada. o Las máquinas de las redes utilizan esos gateways como routers. o Cuando un gateway recibe un paquete dirigido a la red privada
del otro extremo, lo envía a través de la VPN de modo seguro. o El tráfico sólo es protegido por la VPN en el recorrido entre los
dos gateways.
Road Warriors Ejemplo: trabajadores remotos o Cada persona con permiso puede conectarse desde cualquier
lugar. o La computadora debe contar con un cliente VPN, que establece
una conexión al concentrador de VPNs de la red corporativa. o A partir de ese momento, todo el tráfico, desde la computadora
a la red corporativa, queda protegido por la VPN.
2. OPENVPN OpenVPN es un excelente producto de software creado por James Yonan en el año 2001 y que ha estado siendo mejorado desde entonces. Ninguna otra solución ofrece una mezcla semejante de seguridad a nivel empresarial, seguridad, usabilidad y riqueza de características. Es una solución multiplataforma que ha simplificado mucho la configuración de 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. Caracteristicas:
Solución VPN SSL flexible
Software libre bajo licencia GPL
Espacio de usuario, alta portabilidad
Multiplataforma: GNU/Linux, *BSD, Mac OS X, Windows Funcionalidad:
Establece túneles de nivel 2 o 3 sobre un puerto UDP o TCP.
Permite establecer balanceo de carga entre varios servidores.
Confidencialidad, autenticidad e integridad usando OpenSSL
Interfaz gráfica de configuración en Windows y Mac OS X
150
CARERRAS PROFESIONALES CIBERTEC
Interfaz tun
Un interfaz tun es un adaptador de red virtual.
El sistema operativo lo ve como una conexión punto a punto.
Un programa de espacio de usuario puede abrir el interfaz tun y leer y escribir paquetes IP en la interfaz.
Un interfaz tap es similar, pero a nivel Ethernet.
SERVIDORES DE ALTA DISPONIBILIDAD 151
CIBERTEC CARRERAS PROFESIONALES
2.1. Configuración VPN – Road Warrior (Host to LAN)
Fig. 2. VPN Road Warrior
2.1.1. Preparación del servidor VPN
(1) Se debe tener instalado los siguientes paquetes: pam, openssl, lzo, openvpn. # rpm -q pam
pam-0.99..6.2-3.14.el5
# rpm -q openssl
openssl-0.9.8b-8.3.el5
# rpm -q lzo
lzo-1.08-4.2.el5.rf
# rpm -q lzo2
lzo2-2.02-3-el5-rf
# rpm -q openvpn
openvpn-2.0.9-1.el5.rf
(2) Comprobamos el funcionamiento de Openvpn
# openvpn --genkey --secret key
# openvpn --test-crypto --secret key
152
CARERRAS PROFESIONALES CIBERTEC
Fig. 3. Verificando el correcto funcioanmiento de Openvpn
(3) Revisemos las direcciones IP pública y privada: # ifconfig
eth0 Link encap:Ethernet HWaddr 00:0F:3D:CB:7B:74
inet addr:190.12.79.79 Bcast:190.12.79.255
Mask:255.255.255.0
inet6 addr: fe80::20f:3dff:fecb:7b74/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2764 errors:0 dropped:0 overruns:0 frame:0
TX packets:682 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1362998 (1.2 Mb) TX bytes:100959 (98.5 Kb)
Interrupt:185 Base address:0xb800
eth1 Link encap:Ethernet HWaddr 00:15:E9:B0:22:7C
inet addr:192.168.1.250 Bcast:192.168.1.255
Mask:255.255.255.0
inet6 addr: fe80::215:e9ff:feb0:227c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:330 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:33440 (32.6 Kb) TX bytes:1822 (1.7 Kb)
Interrupt:169 Base address:0xb400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:322 errors:0 dropped:0 overruns:0 frame:0
TX packets:322 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:23316 (22.7 Kb) TX bytes:23316 (22.7 Kb)
2.1.2. Configuración del servidor VPN
(1) Creamos el directorio /etc/openvpn/easy-rsa (2) Copiamo el directorio /usr/share/doc/openvpn-2.0.9/easy-rsa-
2.0/ hacia /etc/openvpn/easy-rsa (3) Trasladamos al directorio /etc/openvpn/easy-rsa (4) Definimos permisos de ejecución en los scripts.
SERVIDORES DE ALTA DISPONIBILIDAD 153
CIBERTEC CARRERAS PROFESIONALES
(5) Inicializamos las variables para poder trabajar con los scripts para la generación de las variables.
(6) Inicializamos el directorio de las claves.
Fig. 4. Configurar CA
(7) Procedemos a generar el certificado CA. Se nos pedirá una
serie de información sobre nuestra red/empresa que debemos llenar lo más fielmente posible. # sh build-ca
La variable que debemos explícitamente llenar es: Common Name.
Fig. 5. Generación del certificado CA
(8) Generación del certificado y de la clave de encriptación para
el servidor. # sh build-key-server server
154
CARERRAS PROFESIONALES CIBERTEC
Fig. 6. Generación del certificado de servidor. En este paso, también, se nos pedirá nuevamente información sobre el certificado propio del servidor. Ingresar en Common Name un nombre diferente al anteriormente escogido. En este ejercicio: server
(9) El paso anterior nos generó dos archivos en el directorio
/etc/openvpn/easy-rsa/keys/ que se copiarán dentro del mismo servidor hacia /etc/openvpn.
SERVIDORES DE ALTA DISPONIBILIDAD 155
CIBERTEC CARRERAS PROFESIONALES
Fig. 7.
(10) Generando certificados y claves privadas para los clientes.
Cada cliente debe tener su propio certificado y clave de seguridad. Para cada cliente que tengamos, deberemos repetir el siguiente paso: los archivos obtenidos debemos copiarlos hacia el directorio /etc/openvpn/ de los clientes. En el caso de que nuestros clientes estén en Windows, debemos copiarlos hacia el directorio c:\program files\openvpn\
Para generar el certificado y claves privadas para el cliente, ejecutamos en nuestro servidor, dentro del directorio /etc/openvpn/easy-rsa/ # cd /etc/openvpn/easy-rsa/
# sh build-key client1
En el ejemplo anterior, generamos la clave y el certificado para un cliente llamado cliente1. Debemos hacer notar que al ejecutar el programa sh build-key, le pasamos como parámetro el nombre del cliente (cliente1 en el ejemplo anterior), el cual debe ser diferente para cada cliente. En el common name, ponemos el nombre del cliente (cliente1 en éste ejemplo) tal y como le pasamos de parámetro.
(11) Se pueden generar tantas claves como sean necesarias, para cada cliente: # sh build-key cliente2
# sh build-key cliente3
Esto nos generará dos claves y certificados más, para cliente2 y cliente3; por favor, en common name debemos poner client2 ó client3 para cada caso.
156
CARERRAS PROFESIONALES CIBERTEC
Fig. 8. Generación del certificado del cliente
(12) El parámetro de Diffie-Hellman debemos generarlo:
# sh build-dh
SERVIDORES DE ALTA DISPONIBILIDAD 157
CIBERTEC CARRERAS PROFESIONALES
Fig. 9.
(13) Archivos a copiar al servidor VPN: Hacia el directorio /etc/openvpn del servidor copiamos los siguientes archivos: ca.crt, ca.key y dh1024.pem estos archivos están presentes en el siguiente directorio /etc/openvpn/easy-rsa/keys/ # cd /etc/openvpn/easy-rsa/keys/
# cp ca.crt ca.key dh1024.pem /etc/openvpn
# ls /etc/openvpn/
Fig. 10.
(14) Archivos a copiar al equipo del cliente
Hacia el directorio /etc/openvpn de cada cliente, copiamos los siguientes archivos: ca.crt, clientX.crt y clientX.key Tenga en cuenta que 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, quizá mediante scp o algún medio magnético seguro. No deben enviarse por mail, puesto que contienen la clave (.key) de encriptación del cliente. Estos archivos están presentes en /etc/openvpn/easy-rsa/keys del servidor.
158
CARERRAS PROFESIONALES CIBERTEC
Este paso lo realizamos netamente desde el equipo del cliente:
# scp 190.12.79.79:/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn
The authenticity of host '190.12.79.79 (190.12.79.79)' can't
be established.
RSA key fingerprint is
8f:38:bb:2a:7b:74:02:71:6c:40:0f:b0:3d:a2:d1:b0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '190.12.79.79' (RSA) to the list
of known hosts.
Password:
ca.crt 100% 1265 1.2KB/s 00:00
# scp 190.12.79.79:/etc/openvpn/easy-rsa/keys/client1.crt
/etc/openvpn
Password:
client1.crt 100% 3583 3.5KB/s 00:00
# scp 190.12.79.79:/etc/openvpn/easy-rsa/keys/client1.key
/etc/openvpn
Password:
client1.key 100% 887 0.9KB/s 00:00
(15) Configuración del servidor. Creamos el archivo /etc/openvpn/server.conf; debe quedar como se muestra: port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
#Direcciones que se asignaran a los
#clientes, el server es .1
server 192.168.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt
#Ruta para que los clientes alcancen la red local
del server (1.0/24)
push "route 192.168.1.0 255.255.255.0"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 4
Como podemos ver, hay nuevos parámetros, los más importantes son:
un push de la ruta hacia la red local interna del servidor. Esa ruta estática permitirá que el road warrior vea a las máquinas de la red interna.
server: Indica el rango de direcciones que se asignará a los clientes que se conecten, deben ser direcciones no similares a las de la red local.
SERVIDORES DE ALTA DISPONIBILIDAD 159
CIBERTEC CARRERAS PROFESIONALES
(16) Configuración en el equipo del cliente:
En este caso, la configuracion es en el directorio /etc/openvpn/ del equipo cliente. Crearemos el archivo /etc/openvpn/cliente.conf, así quedaría el archivo de configuración: client
dev tun
proto udp
remote 190.12.79.79 1194
resolv-retry infinite
nobind
#Las dos siguientes opciones no van en windows
user nobody
group nobody
persist-key
persist-tun
ca ca.crt
cert cliente1.crt
key cliente1.key
comp-lzo
verb 4
Las configuraciones más interesantes son:
Client: indica que algunas configuraciones las tomará del servidor.
nobind: que no actúe como servidor, que solamente vaya como cliente.
Recordar que cert y key deben ser únicas para cada cliente
(17) Iniciamos el servicio openvpn en el lado del servidor # cd /etc/openvpn/
# openvpn server.conf &
160
CARERRAS PROFESIONALES CIBERTEC
Fig. 11.
(18) Revisemos la nueva dirección IP de la tarjeta tun0 del servidor VPN # ifconfig tun0
Fig. 12.
(19) Ahora iniciamos el servicio openvpn en el equipo del cliente
VPN # cd /etc/openvpn/
# openvpn cliente.conf &
(20) Revisemos la nueva dirección IP de la tarjeta tun0 del cliente VPN # ifconfig tun0
SERVIDORES DE ALTA DISPONIBILIDAD 161
CIBERTEC CARRERAS PROFESIONALES
Fig. 13.
(21) Del lado del equipo cliente, realizo un ping a las direcciones
IP del servidor VPN # ping -c3 192.168.1.250
# ping -c3 192.168.3.1
Fig. 14.
162
CARERRAS PROFESIONALES CIBERTEC
Autoevaluación
1. ¿Qué es el proceso tunneling? 2. ¿Cuál no es una tecnología de VPN?
(a) PPTP (b) L2TP
(c) L2F
(d) IPSec