Вы находитесь на странице: 1из 56

Seguridad y Alta Disponibilidad

Unidad 7: Seguridad perimetral

En esta unidad aprenderás:

El concepto y los elementos básicos de la seguridad perimetral


El concepto de zona desmilitarizada
El concepto de cortafuegos, sus características y tipos.
Como configurar cortafuegos aplicando reglas de filtrado de paquetes.

1 de 56
Introducción

Objetivos

La Unidad 7 'Seguridad perimetral' está asociada al resultado de aprendizaje 4 del Real Decreto 1629/2009, de 30 de octubre, por el que se
establece el título de Técnico Superior en Administración de Sistemas Informáticos en Red (ASIR) y se fijan sus enseñanzas mínimas.

Resultado de aprendizaje -4-

"Implanta cortafuegos para asegurar un sistema informático, analizando sus prestaciones y controlando el tráfico hacia la red interna."

Los objetivos de esta unidad van encaminados a que el alumnado, dentro de las funciones de la administración segura de sistemas,
adquiera:

− El análisis de herramientas y técnicas de protección perimetral para un sistema.


− La instalación, configuración y prueba de cortafuegos y servidores «proxy» como erramientas básicas de protección perimetral.

Conocimientos previos

En esta unidad son imprescindibles los conocimientos adquiridos en las unidades anteriores, especialmente en la unidad 6.

Seguimos haciendo hincapié en la necesidad de disponer por parte de los alumnos de un nivel suficiente para desenvolverse en los
sistemas operativos anfitriones, especialmente en Ubuntu.

Contenidos

1. Elementos básicos de la seguridad perimetral.


2. Seguridad en la conexión con redes públicas.
3. Perímetros de red. Zonas desmilitarizadas.
4. Cortafuegos. Características y funciones principales.
5. Tipos de cortafuegos.
6. Cortafuegos sin estado: filtrado de paquetes.
7. Pasarelas de nivel de aplicación.
8. Cortafuegos de filtrado de paquetes TCP/IP. IPFW
9. Reglas de filtrado de cortafuegos.
10. IPTABLES
11. Cortafuegos libres.
12. Cortafuegos básico.

2 de 56
Elementos básicos de la seguridad perimetral

¿Qué es la seguridad perimetral?

En primer lugar, y en términos de redes, establecemos como perímetro el conjunto de máquinas y dispositivos que se sitúan en la frontera
de la red, justo donde la red interactúa con el exterior, es decir, con otras redes.

El objetivo de la seguridad perimetral es controlar esta frontera, vigilando las comunicaciones para evitar accesos no autorizados, salida de
datos desde el interior y ataques desde el exterior. (inteco.es)

Pero el término de seguridad perimetral ha tenido que ir evolucionando en la medida que han evolucionado las tecnologías. En la actualidad
es completamente normal que se permita el acceso desde el exterior de la red de forma remota, de forma inalámbrica y también incluso
desde dispositivos móviles. Esta situación hace mas complejo el control de las comunicaciones. Ya no podemos hablar de perímetros fijos y
estáticos, sino dinámicos, cambiantes.

Por este motivo cada vez es mas importante establecer medidas lógicas de control de acceso y establecer mecanismos de autenticación de
dispositivos para llevar un control y monitorización del uso que hacen de los recursos de la red corporativa o doméstica.

Seguridad perimetral

Arquitectura y elementos de red que proveen de seguridad al perímetro de una red interna frente a otra que generalmente es
Internet. (www.criptored.upm.es)

Entre los productos mas importantes que proporcionan la seguridad perimetral están los siguientes:

Cortafuegos
Sistemas de Detección y Prevención de Intrusos
Pasarelas antivirus y antispam
Honeypots
Redes privadas virtuales (VPN)

A continuación se muestra un ejemplo de arquitectura sin seguridad perimetral:

Red plana sin segmentar.


Publicación de servicios internos: base de datos.
No hay elementos de monitorización.
No se filtra tráfico de entrada ni salida.
No se verifica malware o spam en el correo electrónico.
Cliente remoto accede directamente a los servicios.

3 de 56
Cortafuegos

El objetivo de los cortafuegos es proteger los sistemas y dispositivos conectados a una red. Permiten establecer un perímetro de seguridad y
garantizar las comunicaciones seguras para evitar accesos no autorizados y ataques procedentes de redes externas y de Internet.

El cortafuegos, por tanto, asegura que las comunicaciones hacia y desde la red, corporativa o doméstica, cumplen las políticas de seguridad
establecidas. Para ello rastrean y controlan las comunicaciones, bloqueando el tráfico, detectando comportamientos extraños y ataques, y
evitando intrusiones no autorizadas.

Funcionalmente establecen una política de seguridad entre una red segura y otra insegura (Internet) y establecen los servicios que serán
accesibles desde el exterior y a los que se puede acceder desde el interior.

Cortafuegos

Elemento de red donde se define la política de accesos, permitiendo o denegando el tráfico según se definan sus reglas.

Los objetivos de los cortafuegos son:

Filtrar el tráfico que entra y sale de la red corporativa.


Permitir solamente el tráfico definido por la política de seguridad.

El cortafuegos solo sirve como defensa perimetral de las redes, no puede combatir los ataques de un usuario que ya esté dentro de la red
que se quiere proteger o de conexiones que no pasen por él.

Con los cortafuegos tenemos dos filosofías distintas de uso:

Política restrictiva (lista blanca): se deniega todo menos lo que se acepta explícitamente.

Política permisiva (lista negra): se acepta todo menos lo que se deniega explícitamente.

La siguiente figura muestra un ejemplo de cortafuegos instalado en una red bien protegida con un router externo que hace un primer filtrado
y dos cortafuegos:

Sistemas de Detección y Prevención de Intrusos (IDS/IDPS)

Sistemas de Detección y Prevención de Intrusos (IDS/IDPS)

Se basan en el uso de algún tipo de dispositivo que monitoriza y genera alarmas si se producen alertas de
seguridad.

Los IDS detectan las intrusiones pero los IDPS (Intrusion Detection and Prevention Systems) pueden llegar a bloquear el ataque evitando
que tenga efecto.

4 de 56
Sus principales funciones son:

Identificación de los posibles


ataques
Registro de eventos
Bloqueo del ataque
Informe a los administradores

Existen dos tipos de IDS:

HIDS: Host IDS, monitoriza cambios en el sistema operativo y aplicaciones a nivel de host únicamente.

NIDS: Network IDS, monitoriza el tráfico de la red.

Ejemplo: SNORT implementa un motor de detección de ataques y barrido de puertos que permite registrar, alertar y responder ante
cualquier anomalía que esté definida.

SNORT tiene licencia GPL, es gratuito y funciona en plataformas Windows y GNU/Linux.

Honeypots

Honeypot

Sistema configurado con vulnerabilidades usado para recoger ataques y estudiar nuevas técnicas.

Los tipos principales de honeypots son:

De baja interacción: aplicación que simula sistemas operativos no existentes en la realidad.


De alta interacción: trabajan sobre sistemas operativos reales y sus fines suelen ser de investigación.

También se usan para recoger muestras de virus o spam.

Han de permanecer especialmente controlados y desconectados de cualquier red.

La figura muestra un ejemplo de red con equipos tipo honeypot para 'absorber' posibles ataques de crackers:

5 de 56
Pasarelas Antivirus y AntiSpam

Pasarelas Antivirus y AntiSpam

Sistemas intermedios que filtran contenido malicioso en la entrada a la red.

Se utilizan para la detección de malware en pasarelas web y servidores de correo.

Redes Privadas Virtuales (VPN)

Red Privada Virtual

Es un tipo de red que utiliza una infraestructura pública (y por lo tanto no segura) para acceder a una red privada de forma
confiable.

Se suele utilizar para conectar usuarios remotos, sucursales u oficinas con su Intranet (punto a punto).

6 de 56
Características:

Incluyen autenticación y autorización, mediante gestión de usuarios, roles y permisos.


Preservan la integridad con el uso de funciones hash.
Aseguran la confidencialidad ya que la información es cifrada con DES, 3DES, AES, etc.
Garantizan el 'no repudio' ya que los datos se transmiten firmados.

Seguridad perimetral: ejemplo de arquitectura

El siguiente esquema muestra un ejemplo de arquitectura en el que se han instalado y configurado todos los elementos hard y soft para la
seguridad perimetral.

En concreto son:

1. Instalación de cortafuegos.

DMZ y Red Interna


Política restrictiva

2. Instalación de antispam y antivirus.

3. Instalación de NIDS en las tres interfaces.

4. Segmentación de servicios públicos: web y pasarela antivirus/antispam.

5. Servicios internos: base de datos y correo.

6. Clientes remotos usan VPN.

7 de 56
8 de 56
Perímetros de red. Zonas desmilitarizadas

Zona desmilitarizada (DMZ)

Zona desmilitarizada o DMZ

Diseño de una red local ubicada entre la red interna y la red externa (p. ej. Internet). (www.criptored.upm.es)

Las principales características de la DMZ son:

Utilizada para situar los servicios que se ofrecen al exterior (públicos): correo electrónico, dns, web, ftp, que serán
expuestos a los riesgos de seguridad.
Protegida mediante uno o dos cortafuegos que restringen el tráfico entre las tres redes.
Desde la DMZ no se permiten conexiones a la red interna.

9 de 56
Cortafuegos. Características y funciones principales.

¿Qué es un cortafuegos?

Incluimos dos definiciones por ser complementarias ya que cada una de ellas hace hincapié en un aspecto fundamental del cortafuegos.

Definición -1-

Combinación de técnicas, políticas de seguridad y tecnologías (hardware y software) encaminadas a proporcionar seguridad en la red,
controlando el tráfico que circula entre dos o más redes (y más concretamente, entre una red privada e Internet) (www.dte.us.es).

Definición -2-

Cualquier sistema (desde un simple router hasta varias redes en serie) utilizado para separar y asegurar una máquina o subred del
resto, protegiéndola de servicios y protocolos que puedan suponer una amenaza a la seguridad desde el exterior.

Cortafuegos = firewall o gateway de seguridad

¿Qué permite hacer un cortafuegos?

Proporciona un punto donde concentrar las medidas de seguridad.


Permite restringir el acceso (salida) hacia (de) determinadas máquinas.
Permite registrar información sobre el tráfico entre la red interna y el exterior.
Permite aislar secciones de la red interna.

¿Qué NO permite hacer un cortafuegos?

Proteger de amenazas que provienen de la propia red (insiders o enemigos internos). Es el caso de la la fuga de
información confidencial que no podría impedir un cortafuegos.
Proteger de amenazas que no pasan a través del cortafuegos.
Proteger contra nuevos ataques NO catalogados.
Proteger clientes o servicios que se admiten como válidos pero que resultan vulnerables (tunneling sobre HTTP,
SMTP...)
Impedir la entrada de virus.

¿Hasta qué nivel nos protege un cortafuegos?

El nivel de protección que ofrece un cortafuegos depende de las características del mismo, de la configuración
establecida y de las necesidades concretas.

Los cortafuegos deben combinarse con otras medidas de seguridad en redes con protocolos seguros.

Existen dos estrategias básicas de funcionamiento de los cortafuegos:

Permiso predeterminado (política permisiva o lista negra):

Las reglas de la lista negra impiden el paso de datos a la red interna.


Cualquier ordenador, etc., no incluido en las condiciones tiene permitido el acceso a la red interna.
Más fácil de configurar pero más inseguro.

Denegación predeterminada (política restrictiva o lista blanca):

Las reglas de la lista blanca permiten el paso de datos a la red interna.


Cualquier ordenador, etc., no incluido en las condiciones tiene denegado el acceso a la red interna.

10 de 56
Más difícil de configurar pero más seguro.

Los objetivos de un cortafuegos son:

Trasladar las direcciones IP de la red local a una sola dirección IP de salida.


Llevar a cabo un filtrado de paquetes de forma que sólo se acepten aquellos paquetes correspondientes a servicios permitidos.
Llevar a cabo la monitorización del tráfico de red.

El primer objetivo permite garantizar que no se va a poder acceder a los recursos de la red local desde el exterior. Por ejemplo, archivos
compartidos, impresoras de red, etc.

El segundo objetivo, basado en el filtrado de paquetes de entrada/salida, permite o deniega el acceso a determinadas direcciones, configura
determinadas direcciones IP y determinados puertos, etc.
El tercer objetivo permite, mediante la utilización de ciertas herramientas software, llevar un control sobre el tráfico de la red.

Funciones de un cortafuegos

Las funciones mas importantes de un cortafuegos son:

Controlar los accesos desde la red local hacia el exterior y desde el exterior hacia la red local permitiendo o denegando dicho
acceso.

Filtrar los paquetes que circulan, de modo que sólo los servicios permitidos puedan pasar.

Monitorizar el tráfico, supervisando destino, origen y cantidad de información recibida y/o enviada.

Almacenar total o parcialmente los paquetes que circulan a través de él para analizarlos en caso de problemas.

Componentes de un cortafuegos

Los componentes básicos de un cortafuegos son:

Filtros

son elementos hardware o software que permiten bloquear ciertos paquetes de forma selectiva.
normalmente se trata de routers con capacidad de filtrado o equipos con utilidades software de filtrado.

Nodos bastión (bastion host o gate)

son equipos seguros que sirven como punto de contacto entre la red local e Internet.
pero son máquinas vulnerables por estar expuestas directamente a Internet.
generalmente máquinas UNIX/Linux en las que se han extremado las medidas de seguridad y en las que sólo se instalan los
servicios que son absolutamente imprescindibles.

Técnicas aplicadas a cortafuegos

1. Filtrado de paquetes

se controla el tráfico de la red de forma selectiva al definir una serie de reglas que especifican qué tipos de paquetes pueden circular
en cada sentido y cuáles no y por lo tanto deben bloquearse.
las reglas para definir qué paquetes se permiten o no, se basan en las cabeceras de los paquetes.

2. Servicios delegados (proxy service)

son aplicaciones especializadas que funcionan en un cortafuegos (normalmente en el nodo bastión) y que hacen de intermediarios
entre los servidores y los clientes.
estas aplicaciones reciben las peticiones de servicios de los usuarios, las analiza (puede incluso modificar) y las transmiten a los
servidores reales.

11 de 56
Ubicación del cortafuegos

Un cortafuegos para filtrar el tráfico debe intercalarse físicamente entre la red a proteger y el resto de los dispositivos.

En función de donde se ubique el firewall respecto al perímetro interior y exterior tenemos las siguientes arquitecturas:

Dual Homed-Host.
Screened Host.
Screened-Subnet.

Dual Homed-Host

El cortafuegos (host bastión) se interpone entre la red exterior y la red interior, de forma que todas las conexiones deben pasar por él.

El cortafuegos actúa de proxy entre la red interna y la red externa.

Screened Host

Utiliza dos equipos, uno se encarga de hacer las funciones de proxy (host bastión) y el otro equipo se encarga de filtrar los paquetes (router).

Screened-Subnet

Utiliza además una zona DMZ o red intermedia.

En esta disposición, se utilizan dos routers, uno interior y otro exterior. El exterior filtra el tráfico entre la red interna y la red externa. El interior filtra
el tráfico entre la red interna y la DMZ.

La utilización de esta técnica descarga de responsabilidades al host bastión, ya que si un atacante se salta su seguridad tendrá todavía que
atravesar la red interna o se meterá en la DMZ que es de acceso público.

12 de 56
13 de 56
Tipos de cortafuegos

Clasificaciones

Los principios de diseño de los cortafuegos tienen como objetivos que:

El tráfico de la red interna que salga a Internet debe pasar por el cortafuegos.
Solamente el tráfico permitido en la política de seguridad debe ser capaz de atravesar el cortafuegos.
El control de accesos se hace mediante el control de servicios, direcciones y usuarios.

1ª Clasificación

Los cortafuegos diseñados para cumplir con estos objetivos se pueden clasificar según la tecnología utilizada en los siguientes:

De filtrado de paquetes
De nivel de aplicación
Híbridos

Los cortafuegos de filtrado de paquetes actúan en el nivel 3 de la arquitectura OSI y se basan en filtrar los paquetes según sus cabeceras
(IP origen y destino). Cuando los paquetes llegan al cortafuegos, la información se compara con un conjunto de reglas de filtrado, que
especifican las condiciones según las cuales se autoriza o deniega a los paquetes su acceso a la red. Un router básico es un ejemplo de
cortafuegos de este tipo.

Los cortafuegos de nivel de aplicación se ayudan de un proxy para gestionar el tráfico. Este cortafuegos interrumpe la ejecución de todas
las sesiones de red y crea una sesión aparte hacia el destino que se quiere, siempre y cuando reciba la autorización para ello. A
continuación transmite la información desde la conexión original hasta la segunda conexión creada.

Los cortafuegos híbridos utilizan las dos tecnologías, proxy para el establecimiento y filtro de paquetes en la transferencia de datos.

Ejemplos de cortafuegos

Router: Modelos CISCO avanzados hasta modelos sencillos (3COM 812 ADSL). Casi todos cuentan con de filtrado de
paquetes.
PC antiguo (i486) con dos o más tarjetas de red Ethernet y packet- drivers para filtrar a nivel MAC y trama Ethernet.
PC Windows y cualquier utilidad comercial (Wingate, Norton Firewall, Zone Alarm).
Un sistema GNU/Linux con IPTables.

TCP/IP es un estándar de facto, por lo que la clasificación habitual de los firewalls se hace respecto al nivel de la pila TCP/IP sobre el que
actúan.

14 de 56
2ª Clasificación

En función del área de influencia, los cortafuegos se pueden clasificar en:

Personales (para PC)


De pequeñas oficinas (SOHO)
Corporativos

Los cortafuegos personales son los incluidos por los equipos en el propio sistema operativo y controla el tráfico que entra y sale del equipo.
Ejemplos:

Iptables en Linux.
Ipfirewall en FreeBSD.
Mac OS x firewall en sistemas Apple Macintosh.
Firewall de Windows en Microsoft Windows

En pequeñas redes locales se utilizan productos llamados SOHO, entre ellos, y se utilizan cortafuegos que incorporan herramientas
adicionales como antivirus, filtrado IP, filtrado de contenidos web, o detección de intrusos.

Los cortafuegos corporativos controlan las conexiones de la red de una organización y soportan miles de conexiones. Su potencia y
capacidad de proceso deben ser mayores que las de las instalaciones personales o de pequeñas oficinas.

15 de 56
Cortafuegos de filtrado de paquetes

Introducción

Los cortafuegos de filtrado de paquetes (también llamados IPFW) analizan el tráfico a nivel de Red (capa 3, protoclos IP e ICMP) y
Transporte (capa 4, protocolos TCP y UDP).
Como criterios de filtrado tenemos los siguientes:

Dirección IP origen y destino.


Tipo de tráfico: ICMP, TCP, UDP...
Números de puertos origen y destino para una sesión.
Interfaz físico por donde entra y sale el paquete.

Estos cortafuegos tienen varias políticas de acceso:

2 listas de reglas: una de permisos y otra de denegaciones.


1 lista de reglas: en ella aparece lo que se permite o lo que no.
la acción por defecto puede ser aceptar o denegar.
la última acción puede ser la acción por defecto.

Otras características son:

Reconoce si el paquete es de inicio de una petición de conexión o no.


Su uso es totalmente transparente a las aplicaciones (por ejemplo, para un navegador web).

Ejemplos:

IPTables, núcleos del sistema operativo Linux a partir de la v2.4.


ACLs (Cisco), en routers con características de filtrado de paquetes.

La figura muestra un sistema sencillo formado por una red local que se conecta a Internet a través de un cortafuegos que hace el papel de
filtro de entrada y salida.

Los cortafuegos de filtrado de paquetes tienen la ventaja de ser rápidos y transparentes, además de baratos. Pero tienen varios
inconvenientes:

Inconvenientes:

configuración compleja y susceptibles de error en la implementación de las reglas.


fácilmente vulnerables mediante técnicas de spoofing.
no previenen contra ataques que exploten vulnerabilidades de aplicaciones.

Muy efectivos, como primera barrera, si se combinan con más medidas de seguridad.

16 de 56
Pasarelas de nivel de aplicación

Cortafuegos de nivel de Aplicación

Los cortafuegos de nivel de aplicación (pasarelas o gateway), como su nombre indica, realizan la comprobación en el nivel de aplicación.
Son también conocidos como proxys, actúan a un nivel más alto de la pila (a nivel de sesión, como los proxys socks, o a nivel de aplicación,
como los proxys de filtrado de contenido).

Características:

A diferencia de los cortafuegos de filtrado de paquetes, suelen ser siempre soluciones software.
La configuración no es transparente a las aplicaciones (los clientes necesitan de una configuración especial para poder hacer uso de
estos cortafuegos).
Además de actuar como “guardianes”, controlando el tráfico de red, este tipo de cortafuegos tiene otras aplicaciones:

permiten mejorar el tiempo de respuesta de algunas páginas pues actúan como caché y guardan copias de los
datos.
permiten el filtrado de contenidos y el registro de los lugares visitados por los distintos clientes web a los que se da
servicio.

Llevan un control del estado de las conexiones y números de secuencia de los paquetes.
Prestan servicios de Proxy para servicios de red como DNS, Finger, FTP, HTTP, HTTPS, LDAP, NMTP, SMTP y Telnet, e impiden la
comunicación directa entre red interna y externa.
Como ejemplo de esta familia de cortafuegos, tenemos Wingate en entornos Windows o Squid en entornos GNU/Linux.

Ventajas:

proporcionan registros del tráfico detallados.


el servicio de autenticación que proporcionan aseguran la red ante ataques de suplantación (spoofing).
aislan la red interna.
mayor flexibilidad de configuración (seguridad a alto nivel de los protocolos que inspeccionan y los servicios añadidos, como caché y
filtro de URL’s, que prácticamente todos implementan).

Inconvenientes:

menores prestaciones (- velocidad de inspección).


necesidad de contar con servicios específicos para cada tipo distinto de tráfico e imposibilidad de ejecutar muchos otros servicios en
él (puesto que escucha en los mismos puertos).
imposibilidad de inspeccionar protocolos como UDP, RPC y otros servicios comunes.
vulnerables ante ataques directos al SO sobre el que se suelen ejecutar.

17 de 56
Cortafuegos hardware

La mayoría de los cortafuegos utilizados son soluciones software que además vienen integradas en paquetes que ofrecen otras funcionalidades,
(antivirus, antispam, antitroyanos), pero también existen instalaciones que por su tamaño o por sus requerimientos funcionales, utilizan cortafuegos
implementados en hardware.

Un cortafuegos hardware es un dispositivo instalado en una red para hacer las funciones de cortafuegos y para acceder a él se utilizarán los
mismos mecanismos que para acceder a cualquier otro dispositivo (a través de su dirección de red). La apariencia de estos dispositivos es similar a
otros utilizados en las redes, con conexiones para poder administrarlos (Aux, Console) y conexiones para dar servicio a la red (Ethernet).

La configuración de un cortafuegos hardware no difiere de la de uno software, depende más del fabricante que de si está implementado en
hardware o software. La única diferencia está en el modo de acceso, (a un cortafuegos por hardware se accede a través de una conexión en red
desde otro equipo).

En la URL http://www.youtube.com/v/CByWWdC2Deo dispones del vídeo que muestra como se hace una configuración de un cortafuegos por
hardware. Este vídeo es una animación que representa el tráfico de paquetes en la red y los dispositivos que gestionan el tráfico, como
conmutadores, routers y cortafuegos. En la parte final se describe con mas detalle el funcionamiento del cortafuegos y la relación de los puertos y
los protocolos con el cortafuegos.

18 de 56
Cortafuegos de filtrado de paquetes TCP/IP.

Cortafuegos IPFW

En esta unidad como ejemplo de estudio de un cortafuegos nos centramos en los cortafuegos de filtrado de paquetes, en concreto aquellos
que funcionan sobre la pila de protocolos TCP/IP llamados IPFW.

La próxima unidad (UD -8-) tratará sobre cortafuegos de nivel de aplicación o proxys.

Los cortafuegos de filtrado de paquetes IP pueden ser:

Variantes hardware (Cisco):

Routers que incorporan utilidades de filtrado, como los IOS FW.

Máquinas cuyo propósito específico es actuar de cortafuegos.

Variantes software

Se apoyan en el propio sistema operativo.

Los IPFWs funcionan filtrando las comunicaciones en ambos sentidos entre sus interfaces internas (las que lo conectan a su red o redes) y
las externas.

El mecanismo de funcionamiento para realizar este filtrado es a través de una lista de reglas simples y encadenadas, de manera que un
paquete que atraviese el cortafuegos, tiene que haber satisfecho al menos una de sus reglas.

Como los IPFirewalls trabajan sobre la información de las cabeceras de los paquetes IP (no analizan el área de datos) las reglas van
condicionadas a este tipo de comportamiento. Por ejemplo, un cortafuegos de filtrado de paquetes NO puede evitar que un usuario envíe,
desde su equipo de trabajo, un mensaje de correo electrónico con información reservada a la competencia. Lo único que podría evitar es
que ese equipo acceda al servidor de correo, con lo que no permitiría mandar correo a nadie desde el. Para resolver este tipo de conflictos,
se utilizan proxys y filtros de contenido que veremos en la UD -8-.

En general, las reglas de un cortafuegos pueden ser de tres tipos:

aceptación
rechazo
denegación

La lista de reglas de entrada (del exterior hacia la red) es totalmente independiente de la lista de reglas de filtrado de salida (de la red hacia
el exterior).

Rechazo y denegación se diferencian en lo siguiente:

Cuando el cortafuegos rechaza una petición externa, envía una respuesta negativa diciendo que no acepta la comunicación, y
quien intentó establecer la comunicación sabe que fue rechazada.
Cuando el cortafuegos deniega una petición, no envía ningún tipo de respuesta, y quien intentó establecer contacto no sabrá
siquiera si la máquina existía o estaba encendida.

No se puede definir una regla de aceptación o rechazo para cada característica de cada paquete proveniente de cada una de las direcciones
IP posibles. Para ello se utilizan “comodines” o “máscaras” y así conseguir reglas generales.

Lo que se hace entonces es establecer la regla por defecto. Podemos establecer dos criterios en cuanto a la regla por defecto:

Política permisiva

Aceptar TODO por defecto y especificar aquello que se quiere rechazar.

Política restrictiva

Rechazar TODO por defecto y especificar aquello que se quiere aceptar.

Para poder asegurar un sitio mediante cortafuegos, debemos estudiar las reglas de entrada y de salida para la interfaz(es) interna(s) y
externa(s). Sin embargo, la parte más importante y donde se realiza el mayor esfuerzo en la elaboración de las reglas, es en la cadena de
entrada de la interfaz externa, ya que es por ahí por donde vendrá cualquier intento de ataque externo.

19 de 56
IPtables

Introducción

IPtables (módulo Netfilter) es la herramienta estándar actual de cortafuegos para sistemas GNU/Linux.

La elección de IPTables como ejemplo de un firewall IP, se debe a:

es Software Libre: está al alcance de cualquiera de forma gratuita y se distribuye el código fuente.
su calidad: no tiene nada que envidiar a cualquiera de las soluciones comerciales más extendidas como FireWall-1, de la empresa
israelí Check Point, o SunScreen Lite de SUN Microsystem, entre otros...

El módulo Netfilter es una herramienta de filtrado de paquetes (IPFW) que permite la construcción de reglas precisas haciendo un buen
aprovechamiento de los recursos. También integra funcionalidades de NAT y de manipulación (MANGLE).

En http://www.netfilter.org existe información completa y actualizada de las diferentes versiones del software IPtables.

¿Qué es NAT?

Antes de entrar en los tipos de tablas de IPTables es importante recordar qué es NAT y para qué sirve.

NAT (Network Address Translation, Traducción de Direcciones de Red).

La función de NAT es modificar las cabeceras de los paquetes IP (principalmente las direcciones) y mantener un registro de entrada y
salida de los paquetes modificados.

Las posibles aplicaciones de NAT son variadas, aunque la aplicación más conocida del NAT actualmente es lo que se conoce como
enmascaramiento (del inglés, “masquerading”).

El enmascaramiento se utiliza principalmente para conectar varios equipos utilizando solo una dirección IP. En lugar de instalar un servidor
proxy y configurar las aplicaciones para que hagan uso del proxy, se instala un router con NAT, y al trabajar en un nivel más bajo de la pila
de protocolos, resulta totalmente transparente y no hace falta configurar las aplicaciones.

Se suele utilizar en pequeñas LAN domésticas y, en general, en cualquier red con más equipos que direcciones IPs.

20 de 56
Filtros

Tablas y Cadenas asociadas

A continuación se explica cómo funciona el Filtrado de paquetes.

TCP está basado en la conexión: antes de enviar los paquetes de datos se envían paquetes de cabecera con información específica
para poder establecer la conexión.
El filtrado de paquetes analiza la cabecera y decide qué:
paquetes pueden pasar (accept).
paquetes se deniegan (deny).
paquetes se ignoran (reject).

El filtrado de paquetes en GNU/Linux se hace desde el propio núcleo (kernel) y se puede activar de dos formas: como módulo o de forma
estática. Como módulo sólo se carga en memoria cuando se necesita y de forma estática se carga siempre en el proceso de inicio o
arranque del sistema.

En concreto el filtro de red de los núcleos a partir de la familia 2.6.x utiliza las siguientes tablas o listas de reglas:

filter (filtrar)

Tabla utilizada para efectuar el filtrado de paquetes. Es la tabla por defecto.

nat (enmascaramiento)

Tabla utilizada para que otras máquinas se conecten a una serie de servicios a través de la IP de la máquina con el
cortafuegos. Para ello modifica la cabecera de los paquetes. No se realiza ningún tipo de filtrado en esta tabla.

mangle(manipulación)

Tabla utilizada para alterar el estado de un paquete. En este módulo no se va a estudiar por ser una tabla compleja que
supera el nivel de este curso.

Cada una de estas tablas tiene un grupo de cadenas internas que determinan las acciones que ejecutará el filtro de red sobre el paquete.

El orden en que se escriben (ejecutan) estas reglas es muy importante. No tiene sentido establecer una regla de deniegue cualquier tipo de
tráfico y mas adelante negar un trafico concreto hacia un puerto.

Si el paquete no cumple la primera regla pasa a la siguiente. Si la cumple, la regla decide qué se hace con el paquete recibido, y si no la
cumple pasa a la siguiente. Así sucesivamente, hasta que se llega a la última regla.

En función del tipo de tabla o lista de reglas utilizada, las cadenas internas son las siguientes:

filter

INPUT (entrada) filtra paquetes entrantes cuyo destino es el propio cortafuegos.

OUTPUT (salida) filtra paquetes generados en el propio host con destino externo.

FORWARD (reenviar) se emplea para decidir qué hacer con los paquetes que llegan al cortafuegos y tienen
como destino otro host (así podemos decidir si encaminarlos o no).

nat

El uso de NAT permite a un cortafuegos modificar las direcciones de origen y destino de los paquetes así
como los puertos a los que van dirigidos.

Principalmente, encontramos 2 tipos de reglas NAT:

1. Traducción de direcciones de red de destino: DNAT (cambiamos la IP destino del paquete)


2. Traducción de direcciones de red de origen: SNAT (cambiamos la IP origen del paquete)

Con IPtables hay que recordar unas cuestiones muy simples pero importantes (las cadenas las vemos en otro
apartado):

DNAT se utiliza con la cadena PREROUTING.


SNAT se utiliza con la cadena POSTROUTING.
Al modificar un paquete en el origen (SNAT), la cadenas INPUT, FORWARD y OUTPUT ven la
dirección de origen sin modificar.
Si modificamos el paquete en destino (DNAT), las cadenas FORWARD e INPUT ven la dirección
modificada.

21 de 56
Los paquetes recibidos o enviados desde un sistema GNU/Linux siempre deben cumplir las reglas de una tabla.

La tabla por defecto es filter.

La tabla nat se utiliza para modificar las direcciones origen y destino de un paquete.

Cuando un paquete cumple una regla particular en una de las tablas se le asigna un objetivo.

Los objetivos de IPtables son:

Objetivos Descripción

(Aceptar)
ACCEPT El paquete que coincida con el objetivo ACCEPT se salta el resto de las reglas y continua el
camino hacia su destino. Se permite el paso del paquete a través del cortafuegos.

(Denegar)
DENY Los paquetes que coincidan con el objetivo DENY no pueden llegar a su destino y van a la
basura. Deniega el paso a través del cortafuegos.

(Eliminar)

DROP Al paquete que coincida con el objetivo DROP se le niega el acceso al sistema y no se envía
nada a la máquina origen del paquete. Se diferencia de REJECT en que se continúa intentando
establecer la conexión hasta que se consuman los tiempos de espera.

(Rechazar)

REJECT Rechaza el paquete que coincide con el objetivo REJECT y se envía un mensaje ICMP, del tipo
'destino inalcanzable', a la máquina origen del paquete. Ante la duda es preferible, siempre,
utilizar DENY ya que con REJECT enviamos cierta información de nuestro sistema.

(Enmascarar)

MASQUERADE Sólo puede ser utilizado si el núcleo está compilado con opción de enmascaramiento. Se utiliza
con la tabla nat.

(Redirigir)

REDIRECT Sólo puede ser utilizado cuando el núcleo es compilado con soporte de Proxy Transparente. Los
paquetes enviados desde una máquina remota son redireccionados. Se utiliza con la tabla nat.

Al entrar al cortafuegos, el paquete experimenta un filtrado que permite modificar la dirección de


destino o el puerto. Una vez que el paquete pasa el prefiltro (PREROUTING), se le pregunta si va
PREROUTING
dirigido al propio equipo (pasaría a las reglas INPUT) o por el contrario va dirigido a otra máquina
(reglas FORWARD).

Las reglas de salida (POSTROUTING) pueden cambiar los datos del origen, y hacer que el
POSTROUTING
paquete salga con datos relativos a su dirección de origen diferentes.

22 de 56
Sintaxis

IPtables

La sintaxis de la orden IPtables es la siguiente:

iptables [ -t <nombre_tabla>] <comando> <nombre_cadena> <parámetro-1>/ <opcion-1> <parámetro-


n>/<opcion-n>

-t <nombre_tabla>: especifica la tabla a utilizar. Por defecto es la tabla filter.

<comando>: permite añadir o eliminar una regla dada en <nombre_cadena>.

<parámetro-1> / <opcion-1>: indica el objetivo, es decir, qué se hará cuando un paquete coincida con la regla.

La siguiente orden muestra una lista detallada de los comandos IPtables:

# iptables -h

Los comandos van siempre en mayúsculas y sólo puede haber un comando para cada <nombre_cadena>.

Las siguientes tablas muestran los comandos IPtables:

1. Comandos IPTABLES para manipular cadenas completas

Comando Descripción

(Política). Determina cuál será la política por defecto para una cadena concreta. En el ejemplo:

# iptables -P INPUT DROP


-P
la regla establece como política por defecto para la tabla filter rechazar cualquier paquete de
entrada.

(Vaciar). Dada una cadena, con -F se eliminan las reglas de dicha cadena para la tabla filter.Si
no se indica ninguna cadena se elimina cada regla de cada cadena.En el ejemplo todas las
-F reglas de la cadena OUTPUT de la tabla filter son eliminadas.

# iptables -F OUTPUT

2. Comandos IPTABLES para manipular reglas de una cadena dada

Comando Descripción

(Añadir). Dada una cadena, con -A se añade una nueva regla al final de dicha cadena. En el ejemplo
-A
se permiten las conexiones locales (lo: interfaz de loopback).
# iptables -A INPUT -i lo -j ACCEPT

(Borrar). Borra una regla de una cadena. En el ejemplo de la cadena INPUT se elimina la regla que
deniega el acceso al puerto destino 80 en la tabla filter.
-D
# iptables -D INPUT --dport 80 -j DENY

(Listar). Lista para la tabla dada, las reglas introducidas o vigentes en el cortafuegos. En el ejemplo:

# iptables -t filter -L INPUT


-L
para la tabla filter (por defecto y no hubiera hecho falta indicarla) lista todas las reglas para la cadena
INPUT. Se puede utilizar sin dar una cadena y entonces lista todas las reglas de la tabla dada.

Tabla de parámetros aplicables a las reglas. Estos parámetros indican qué hacer con el paquete cuando coincida con la regla.

Parámetros Descripción

(Jump, saltar). Indica al paquete qué objetivo debe ejecutar. Los objetivos vistos son: ACCEPT,
-j
DROP, DENY, REJECT...

(Source, origen). Indica la IP de la máquina origen de un paquete sobre el que se evalúa la regla.
Para una red se indica la máscara:
-s
N.N.N.N/M.M.M.M o N.N.N.N/M

23 de 56
(Destination, destino). Indica la IP de la máquina destino de un paquete sobre el que se evalúa la
regla. Para red se indica la máscara:
-d
N.N.N.N/M.M.M.M o N.N.N.N/M

(Input, entrada). Indica la interfaz de entrada, como eth0, lo o ppp0 sobre la que se evalúa la regla.
-i Se utiliza con las cadenas INPUT y FORWARD para la tabla filter y con la cadena PREROUTING
con nat.

(Output, salida). Indica la interfaz de salida, como eth0, lo o ppp0 sobre la que se evalúa la regla.
Funciona de forma similar a –i.
-o
Se utiliza con OUTPUT y FORDWARD para la tabla filter y la cadena POSTROUTING para la tabla
nat.

(Protocolo). Indica a la regla el protocolo IP del paquete. Puede ser icmp, tcp, udp. La opción por
defecto es all (todos los protocolos). Cada tipo de protocolo tiene sus propios modificadores. Para el
protocolo tcp existen los siguientes:
-p
-- sport: indica el puerto origen del paquete

-- dport: indica el puerto destino del paquete

24 de 56
Ejemplos de uso

Ejemplos de uso

1. Ver la reglas introducidas para la tabla filter:

# iptables -L

2. Borrar todas las reglas:

# iptables -F

3. Eliminar todos los paquetes de la entrada:

# iptables -A INPUT -j DROP

4. Eliminar todos los paquetes de la salida:

# iptables -A OUTPUT -j DROP

5. Permitir la salida de todos los paquetes:

# iptables -A OUTPUT -j ACCEPT

6. Aceptar conexiones al servidor web (80) y al servidor ftp (21) generando un registro de log (-l) cuando se aplica la regla :

# iptables -A INPUT -p TCP --dport 80 -j ACCEPT

# iptables -A INPUT -p TCP --dport 21 -j ACCEPT

7. Cuando se trabaja con cortafuegos se pueden establecer políticas por defecto de aceptación o denegación de paquetes recibidos y/o
enviados.

Si la política es de aceptación de paquetes recibidos se indica mediante la regla siguiente:

# iptables -P INPUT ACCEPT

Esta regla indica que se van a aceptar todos los paquetes que lleguen al cortafuegos. A partir de esta regla hay que incluir
otras reglas que vayan denegando la entrada a todos aquellos paquetes que no se quieran recibir.

Por ejemplo, si se quieren cerrar todos los puertos por debajo del 1024 y de esa manera impedir que lleguen por dichos
puertos paquetes TCP a través de la interfaz de red eth0, hay que escribir la regla siguiente:

# iptables -A INPUT -i eth0 -p tcp --dport 1:1024 -j DROP

La idea, como resumen es: Primero se acepta todo y luego se va denegando lo que no interese.

El problema que puede surgir con esta política es que queden 'agujeros abiertos' es decir, opciones que no se han llegado a
estudiar o de las que el administrador no es ni tan siquiera consciente.

Si la política es la de denegación en la entrada por defecto de todo. En este caso la regla correspondiente es:

# iptables -P INPUT DROP

Esta política es tan restrictiva que incluso se está negando el acceso de la máquina a sí misma a través de la interfaz de
loopback lo.

A partir de esta regla habrá que incluir otras que vayan aceptando todos aquellos paquetes de entrada que el cortafuegos
esté dispuesto a admitir. En el caso de la interfaz de loopback hay que habilitarla con la regla siguiente:

# iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

Esta regla está diciendo que se deje pasar todos los paquetes que procedan de la interfaz de loopback 127.0.0.1 (-s source)
hacia 127.0.0.1 (-d destination), es decir, ella misma.

8. Otra regla importante es la relacionada con el estado de las conexiones.

Si el tráfico de paquetes, tanto de entrada como de salida, pertenece a una conexión establecida (en estado ESTABLISHED)
o está relacionado con una conexión establecida (en estado RELATED) se aceptan y de esta forma se agiliza su paso por el
cortafuegos ya que no tendrá que pasar por otra serie de reglas IPtables.

# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

A la hora de aplicar las reglas es fundamental el orden ya que funcionan de forma secuencial. Si se define primero la regla

25 de 56
REJECT antes de la ACCEPT todos los paquetes serán rechazados.

El parámetro -m hace referencia a hacer 'match' y en este caso con el estado de la conexión (state).

26 de 56
Funcionamiento de NAT

Como ya hemos comentado:

NAT permite alterar el origen o destino de un paquete actuando sobre las cabeceras, cuando pasa por una máquina que tiene
activado el módulo nat de IPtables.

Además NAT mantiene un registro de entrada/salida de los paquetes modificados.

Uno de los objetivos de NAT es el enmascaramiento de direcciones IP. Es decir, la posibilidad de camuflar una red local detrás de una única
IP válida. En este caso, sólo el servidor tiene una dirección IP válida y al 'hacer nat' permite que el resto de equipos de la red local que está
detrás puedan acceder a Internet.

También puede cambiar el destino de los paquetes que entran en la red mediante el reenvío de puerto. Un ejemplo de ello sería la utilización
de NAT para crear proxys transparentes.

Estructura de una línea IPtables utilizando la tabla nat:

opción –t nat
-A con cadenas POSTROUTING o PREROUTING

Se puede indicar:

origen (-s)
destino (-d)

de los paquetes sobre los que se quiere hacer nat, seguido de una IP, nombre o dirección de red. Si no se indica origen y/o destino serán
válidas cualesquiera direcciones de origen y/o destino.

Se puede indicar:

la interfaz de red de entrada (-i) con la cadena PREROUTING.


la interfaz de red de salida (-o) con las cadenas OUTPUT y POSTROUTING.

Se puede indicar el protocolo con la opción –p que puede ser TCP, UDP e ICMP. La regla sólo se aplicará a paquetes de uno de estos
protocolos. Esta opción permite, a su vez, especificar los puertos origen (--sport) y destino (--dport). Estas opciones se suelen utilizar para la
redirección de peticiones web (puertos 80 / 8080) y el resto de paquetes no se alteran.

Partimos del supuesto que la máquina que tiene instalado el servidor con cortafuegos tiene dos interfaces de red:

eth0 para fuera de la LAN (hacia Internet u otro servidor)


eth1 para dentro de la LAN.

¿Cómo funciona NAT?

Cambio de origen SNAT

De clientes internos a servicios externos.


El cambio en la dirección de origen de la conexión se hace con POSTROUTING y con la opción --to se especifica una
dirección IP, rango de direcciones IP y un puerto o puertos.

Ejemplos:

1. Cambiar la dirección de origen por 192.168.0.4

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.0.4

2. Cambiar la dirección de origen a 192.168.0.4, 192.168.0.5 ó 192.168.0.6

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.0.4-192.168.0.6

3. La siguiente regla IPtables cambia la dirección de origen por la dirección IP 192.168.0.1 para los puertos 1-1023

# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 192.168.0.1:1-1023

4. Un caso especial de SNAT es el enmascaramiento detrás de una IP válida:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Esta opción de enmascaramiento se debe utilizar siempre que la dirección IP externa (la que utiliza para su conexión al
exterior) del servidor se obtenga dinámicamente. Es el caso de un cortafuegos instalado en un servidor cuya IP externa es

27 de 56
asignada dinámicamente por un router, por ejemplo, ADSL.

SNAT es lo opuesto a DNAT, mientras que DNAT modifica las direcciones y puertos destino de los paquetes,
SNAT lo hace con el origen de los mismos, es decir es la traducción de dentro hacia afuera. Observemos
que con MASQUERADE ya hacíamos esto de forma generalizada para todos los hots, pero si queremos
especificar debemos usar SNAT.

SNAT puede usarse para:

Comunicar con máquinas internas que no tienen enrutado con otras redes o con Internet
Permitir que varios hosts de la red interna compartan una dirección de salida.
Ocultar la verdadera IP de una máquina.

Cambio de destino DNAT

Acceso de clientes externos a servicios internos.

Los cambios de destino corresponden a la cadena PREROUTING cuando entra el paquete. Sólo se puede utilizar la opción
«-i» (interfaz de entrada).

Con la opción --to se especifica una IP, rango de direcciones IP y un puerto o puertos. Se puede utilizar la opción –i para
indicar la interfaz de entrada.

Ejemplos:

1. Cambiar la dirección de destino por 192.168.0.254

# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.0.254

2. Cambia la dirección de destino por 192.168.0.11 ,192.168.0.12 o 192.168.0.13

# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.0.11-192.168.0.13

3. Todo lo que llega por la interfaz eth1 cambia su destino a 192.168.0.1:8080

# iptables -t nat -A PREROUTING -p tcp -i eth0 -j DNAT --to 192.168.0.1:8080

4. Supongamos que tenemos un proxy en la dirección 192.168.0.1 y el puerto 3128 para las conexiones a servidores web de
internet. Con la siguiente regla en el gateway redirigiremos todas las peticiones que se realicen hacia un servidor web (puerto
80) hacia el puerto 3128 de la máquina 192.168.0.1.

Cambia la dirección de destino del tráfico web por 192.168.0.1 en el puerto 3128

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.1:3128

5. Hay un caso especial de DNAT que es la redirección utilizada en el proxy transparente:

# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT


--to-port 8080

Situando esta regla, en el equipo que hace de puerta de enlace y cortafuegos, se redirigen todas las peticiones hacia un
servidor web (puerto 80) al puerto 8080 de dicha máquina.

Recordar siempre:

DNAT SNAT

cadena PREROUTING cadena POSTROUTING

-i interfaz -o interfaz

modificar puertos y direcciones de destino: modificar puertos y direcciones de origen:

-d , --dport y -to-destination -s, --sport, --to-source

28 de 56
Pruebas de funcionamiento

El funcionamiento de un cortafuegos se puede probar comprobando qué puertos o servicios están habilitados. Para ello existen herramientas y en
muchos casos están incluidas en los propios sistemas operativos como ping, y otras un poco más complejas entre las que se pueden encontrar:

netstat
nmap
hping3

La herramienta netstat viene incluida en algunos sistemas operativos y tiene varios modificadores de comando que ayudan a analizar mejor la
información.

Sondeo

El sondeo de un cortafuegos va dirigido a testear el estado de los puertos (cerrado, abierto o filtrado). Una herramienta disponible para
poder hacerlo es hping3. Esta herramienta puede utilizar protocolos como TCP en lugar de ICMP para enviar paquetes y estudiar las
respuestas.

Se puede enviar un paquete al puerto 80 de un determinado destino para ver si está el servidor web activado:

# hping3 -c 5 -S -p 80 www.mecd.gob.es
HPING www.mecd.gob.es (usb0 81.45.8.26): S set, 40 headers + 0 data bytes
len=44 ip=81.45.8.26 ttl=56 DF id=0 sport=80 flags=SA seq=0 win=14600 rtt=1501.3 ms
len=44 ip=81.45.8.26 ttl=56 DF id=0 sport=80 flags=SA seq=1 win=14600 rtt=510.9 ms
len=44 ip=81.45.8.26 ttl=56 DF id=0 sport=80 flags=SA seq=2 win=14600 rtt=260.9 ms
len=44 ip=81.45.8.26 ttl=56 DF id=0 sport=80 flags=SA seq=3 win=14600 rtt=190.7 ms
len=44 ip=81.45.8.26 ttl=56 DF id=0 sport=80 flags=SA seq=4 win=14600 rtt=190.8 ms

--- www.mecd.gob.es hping statistic ---


5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 190.7/530.9/1501.3 ms

donde:

c: Indica el número de paquetes que se enviarán contra el puerto (5 en este caso).


S: Indica el tipo de señal que activará, en este caso con SYN indica la intención de iniciar una nueva conexión.
p: Especifica el número de puerto de destino (en nuestro caso 80).

De la respuesta se puede extraer que el puerto está activo ya que hay respuesta, y además ha sido exitosa la comunicación tal y como
indica la variable flags (SA=SYN+ACK), si el valor fuera RA, el puerto estaría cerrado (RST+ACK). Si el puerto estuviera filtrado, no se
recibiría nada.

Estos flags están en las cabeceras de los paquetes TCP, son variables de 1 bit que pueden estar activados (1) o desactivados (0).

Los valores posibles son SYN, AKC, RST, PSH, URG, FIN.

Con hping3 se puede variar el número de puerto sobre el que se lanzan los paquetes, el valor de los flags y observar, además de si está
activo o no. Si estas variables tienen diferentes valores para distintos puertos, se pueden deducir conclusiones como:

Un puerto puede estar protegido por un cortafuegos.


Un puerto puede estar redirigido a un host interno de la red o de otra red.

Para poder probar los puertos que filtra un cortafuegos se utilizan los flags en los paquetes que se envían, dependiendo del tipo de sondeo
que se quiera hacer:

-S: para saber si un puerto está abierto, todas las conexiones deben comenzar con SYN.
-A: para indicar si el equipo está disponible, se envía en el paquete ACK.
-F: para deducir si el puerto está cerrado, usando el paquete FIN y analizando la respuesta se puede deducir si el puerto está
cerrado (respuesta RST/ACK) o está abierto (no hay respuesta).

29 de 56
Registros de sucesos de un cortafuegos

Se pueden configurar los cortafuegos para que graben en un fichero todas las incidencias que creamos conveniente reflejar como consecuencia de
los filtrados hechos por el cortafuegos. Estos archivos se llaman archivos de logs.

Los registros de sucesos graban en un fichero todas las entradas y salidas del cortafuegos. Dependiendo del tipo de cortafuegos, el archivo donde
se guardan este tipo de sucesos puede variar de nombre y ubicación. En distribuciones GNU/Linux, cuando se utiliza IPtables, el registro se origina
introduciendo en las reglas de filtrado el modificador:

-j LOG

Además de este modificador se puede emplear - - log-prefix para poder interpretar mejor los registros del log.

Ejemplo:

# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "

Con la ejecución de la orden anterior una petición al puerto 80 desde la máquina local generará un registro en dmesg con el siguiente aspecto:

[4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 src=127.0.0.1


DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=58288 DF PROTO=TCP SPT=53981 DPT=80 WINDOW=32767 RES=0x00 SYN
URGP=0

El registro anterior también aparecerá en /var/log/messages, /var/log/syslog y /var/log/kern.log. Este comportamiento se puede cambiar editando el
archivo /etc/syslog.conf.

En el archivo syslog.conf, añadiendo una línea de código como:

kern.warning /var/log/iptables.log

Se consigue que todos los mensajes del kernel con un nivel superior o igual al de un mensaje tipo warning, se graben en el fichero iptables.log

En esta imagen se ve como con la primera regla se está aceptando solamente a la IP 192.168.10.10, si es cualquier otra IP, se graba el evento con
el mensaje 'INTENTO DE ACCESO A SSH ' en /var/log/iptables.log. Antes de intentar una conexión SSH el fichero iptables está vacío (resultado de
cat iptables.log) y después de hacer un intento de conexión aparece el mensaje del intento de acceso fallido.

Recordar que dmesg es "dmesg (diagnostic message, mensajes de diagnóstico) es un comando presente en los sistemas operativos Unix que lista
el buffer de mensajes del núcleo. Este buffer contiene una gran variedad de mensajes importantes generados durante el arranque del sistema y
durante la depuración de aplicaciones. La información ofrecida por dmesg puede guardarse en el disco duro mediante un demonio de registro, como
syslog." (http://es.wikipedia.org/wiki/Dmesg)

30 de 56
Cortafuegos libres

Firestarter (esta discontinuado)

Firestarter es una interfaz gráfica de IPtables de código abierto. Es mas cómodo y sencillo de utilizar que IPtables directamente, pero
no tiene todas las posibilidades que ofrece IPtables trabajando directamente.

Isafer (para windows)

Isafer dispone de una interfaz gráfica para agregar y quitar usos permitidos y negados, también permite que el usuario bloquee o
permita las conexiones basadas en su IP o puerto. También ofrece un explorador de puertos simple que explora puertos abiertos para
detectar malware.

Es GPL y su web es http://isafer.sourceforge.net

Otros cortafuegos para Windows (existen cientos...) son:

Agnitum Outpost Free

ZoneAlarm Free

AVS Firewall

SoftPerfect Firewall

Windows 7 Firewall Control (viene con el S.O)

31 de 56
Distribuciones libres para implementar cortafuegos en máquinas dedicadas

Una posible solución en cuanto a la seguridad de un sistema es utilizar una máquina específica de cortafuegos, es decir, una máquina dedicada.
Las distribuciones de software libre más usadas en máquinas dedicadas son las basadas en sistemas Unix/Linux, entre otras:

IPCop.
SmoothWall.
Zentyal.
ClearOS.

Se podría incluso arrancar lña máquina dedicada desde un CD e implementar de esta forma el cortafuegos. Una vez arrancada la máquina se
pueden deshabilitar todos los periféricos, incluso el monitor y controlar el cortafuegos accediendo a él desde otra máquina, como en el caso de
IPCop, por ejemplo, escribiendo la dirección https://ipcop:445 en el navegador.

En el curso no se va a entrar en este tipo de cortafuegos.

32 de 56
Cortafuegos básico

Ejemplo de cortafuegos básico

El equipo que va a hacer las veces de cortafuegos debe tener dos tj de red eth0 y eth1, y detras de él hay una red local que deberá salir a
Internet a través del equipo servidor.

Es decir:

eth1 escucha la red local (192.168.0.1)


eth0 conecta el servidor con el router

Se va a suponer que se utiliza como política por defecto denegar.

1. Limpiamos posibles reglas de cortafuegos anteriores:

# iptables -F

# iptables -t nat -F

2. Denegamos todos los paquetes de entrada, salida y reenvío:

# iptables -P INPUT DROP

# iptables -P OUTPUT DROP

# iptables -P FORWARD DROP

3. Aceptamos todos los paquetes de entrada y salida de la interfaz de loopback:

# iptables -A INPUT -i lo -j ACCEPT

# iptables -A OUTPUT -o lo -j ACCEPT

4. Permitimos todo a la interfaz de red interna del servidor

# iptables -A INPUT -s 192.168.0.1 -j ACCEPT

5. Aceptamos paquetes desde todas las conexiones establecidas:

# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

6. Dejamos a la máquina de la red local con dirección IP 192.168.0.2 conectar vía SSH (puerto 22):

# iptables -A INPUT -s 192.168.0.2 -p tcp --dport 22 -j ACCEPT

7. Si tenemos un servidor web instalado en la máquina 'servidor' dejamos abierto el puerto 80 para todos:

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

8. Permitimos el acceso a Webmin instalado en la máquina 'servidor' (puerto 10000) a toda la red:

# iptables -A INPUT -p tcp --dport 10000 -j ACCEPT

9. Abrimos el resto de puertos por debajo de 1024:

# iptables -A INPUT -i eth0 -p tcp --dport 1:1024 -j ACCEPT

Para que la regla 5 funcione correctamente se ha de activar el reenvío (forward). Para ello hay que modificar el contenido del archivo
/proc/sys/net/ipv4/ip_forward (/etc/sysctl.conf) que por defecto está a 0 (no activado el reenvío) y ponerlo a 1 (activado el
reenvío).

Ejecutar la orden siguiente antes de la regla 5:

# echo 1 > /proc/sys/net/ipv4/ip_forward

Con estas reglas se tiene un servidor GNU/Linux haciendo de cortafuegos para la entrada de paquetes.

Pero hay que observar que no existe ninguna regla que permita a cualquier máquina de la red local (eth1) poder conectarse a Internet. En
estas máquinas habrá que poner como puerta de enlace la IP del servidor.

Las reglas que hay que activar utilizan comandos de la tabla nat. Recordar que nat era la tabla que permitía enmascarar la dirección IP de
los paquetes enviados por las máquinas de la red local, como si fuesen todos ellos enviados por el servidor.

Las reglas que hay que incluir son:

33 de 56
1. Cargar el módulo NAT para poder utilizar a tabla.

# modprobe iptable_nat

2. Respecto a la política por defecto se utiliza ahora la política de aceptar para esta tabla nat:

#iptables -t nat -P PREROUTING ACCEPT

#iptables -t nat -P POSTROUTING ACCEPT

3. Se habilita la salida de la red local a través de la interfaz de red eth1:

# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

4. Se enmascara la red local a través de eth0: cualquiera de las dos serviría

# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Con esta regla decimos al cortafuegos que cuando pase una dirección origen de la LAN hacia el interfaz externa eth0 (por
ejemplo, 172.28.0.254) la enmascare con esa dirección (NAT) .

Añadiendo estas reglas a las anteriores se obtiene el conjunto de reglas que permitirá navegar a las máquinas de la red local por Internet,
junto con el resto de restricciones hechas en el ejemplo.

Hay que tener en cuenta que todas estas reglas hay que introducirlas cada vez que se conecta la máquina servidora que, en principio, no
tendría porqué apagarse, pero la realidad dice que todos los días se desconectan todos los equipos del aula. Así que, si cada día hay que
teclearlas resulta engorroso, además de introducir más posibilidades de error. Se puede, entonces, crear un guión-shell (script) ejecutable
que contenga todas las reglas y lanzarlo como un proceso más en la secuencia de arranque del sistema. Se le puede llamar 'guion_iptables'
y almacenarlo en /etc/init.d/. Este archivo debe ser propiedad de root y grupo root:

# chown root:root /etc/init.d/guion_iptables

# chmod 755 /etc/init.d/guion_iptables

Si se quiere lanzar el guión en el nivel de ejecución 2 ir a:

# cd /etc/rc2.d/

y crear un enlace simbólico hacia el guión 'guion_iptables' desde este directorio llamándole S20guion_iptables:

# ln -s /etc/init.d/guion_iptables S20guion_iptables

34 de 56
Otro ejemplo de cortafuegos

Ejemplo de cortafuegos: utilizando NAT

Supongamos que tenemos la topología siguiente:

Tenemos un firewall con 3 interfaces. Una dirigida hacia el router de salida a Internet, otra para la DMZ y una tercera para la LAN interna.
Nos olvidamos de toda la parte de la DMZ y nos centramos en la LAN.

Paso 1: Preparar el kernel para actuar como router

net.ipv4.ip_forward = 1 permite reenviar paquetes entre interfaces (eth0 <--> eth1)

Paso 2: Limpieza de IPtables


Eliminamos cualquier regla de cortafuegos y establecemos políticas por defecto.

iptables -F
iptables -t nat -F

Paso 3: Políticas por defecto


Hay dos opciones:

1. dejar la política por defecto a ACCEPT e ir cerrando acceso.


2. denegar por defecto e ir aceptando conexiones.

La opción más cómoda es la primera pero, a efectos de seguridad es mejor la denegación por defecto aunque suponga mucho más trabajo
al tener que ir habilitando lo necesario para tener una comunicación fiable (ICMP, DNS, SYN, MAIL, puertos específicos...).

1. Política permisiva por defecto

iptables -P INPUT ACCEPT


iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

2. Política restrictiva por defecto:

iptables -P INPUT DROP

35 de 56
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Paso 4: Escribir reglas del cortafuegos


Escogeremos la política permisiva por defecto y empezamos a filtrar...

Reenvío y enmascaramiento de la red interna

Para que los usuarios de la LAN puedan salir a Internet y obtener tráfico de vuelta, debemos establecer NAT ya que de lo
contrario al regreso en el router WAN se encontraría con una dirección de destino 192.168.0.x que no sabría redirigirla al ser
una red interna que desconoce.

Para ello enmascaramos la LAN:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 MASQUERADE

Con ello decimos al cortafuegos que cuando pase una dirección origen de la LAN hacia el interfaz externo eth0
(172.28.0.254) la enmascare con esa dirección (NAT).

Ahora está permitido el tráfico de la LAN a Internet, pero sin ningún tipo de filtrado y si la política es permisiva debemos filtrar
las conexiones, de modo que se acepten solo si se originaron desde dentro.

Para la LAN una primera aproximación sería denegar las conexiones que no estuviesen originadas desde dentro,
sustituyendo:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

por

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED, ESTABLISHED -j ACCEPT

Así la conexión desde fuera entrará solo si previamente fue establecida o relacionada con un conexión desde dentro.

Ejemplos:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source 172.28.0.254

Esta regla proporciona SNAT para toda la red LAN interna traduciendo la dirección origen (192.168.0.x) a 172.28.0.254, que será la
que vean los hosts con los que comunica. Esta regla es equivalente a MASQUERADE ya que no especificamos ningún host/puerto y
damos salida a toda la red.

Si solo quisiéramos que un host (92.168.0.25) saliera a internet (puerto 80), la regla a aplicar sería:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.25 -p tcp --dport 80 -j SNAT --to-source


172.28.0.254

Si queremos dar salida a todos los hosts y hay mucho tráfico puede que nos quedemos sin puertos si solo estamos dando una
dirección de salida. Podemos hacer NAT permitiendo varias:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source 172.28.0.250-172.28.254

36 de 56
Conceptos

Conceptos

Núcleo

El núcleo de un sistema operativo es el interfaz entre el software y el hardware del sistema. También se conoce con el
nombre de Kernel.

/proc

Los archivos que se encuentran en el directorio /proc son especiales ya que representan, en forma de pseudo-archivos,
información que en ese momento existe en memoria. Por eso no se pueden editar para su modificación.

NAT

NAT significa Traducción de direcciones de red y su misión es enmascarar direcciones, es decir cambiar la dirección de
origen o destino de un paquete, con el objetivo de ocultar una red privada detrás de un servidor con IP pública.

Cortafuegos

Un cortafuegos es un mecanismo, hardware o software, de protección de redes. Puede implementarse a través de un router,
un equipo que haga de cortafuegos e incluso una red cortafuegos. Al separar la red interna de la red externa (Internet) el
cortafuegos la protege ante posibles ataques a su seguridad. Además actúa como filtro de entrada/salida.

Netfilter

Netfilter es una funcionalidad del núcleo de GNU/Linux que permite (si está activada) realizar el filtrado de paquetes.

Proxy-caché

Es un servidor, con esta funcionalidad instalada, situado entre la máquina del usuario e Internet, que actúa como barrera de
protección y como zona caché para acelerar el acceso a una página web.

Host bastión

El 'host bastión' es realmente el cortafuegos que está entre las dos redes. Su misión es proteger la red interna y en él se lleva
a cabo la tarea de filtrado de paquetes. Debe disponer de altas medidas de seguridad.

Características básicas de un paquete

Las características básicas de un paquete, que van a servir para identificarlo son:

Dirección de origen

Indica quien es el emisor del paquete, de qué ordenador viene. Lo podremos especificar con una dirección IP, un nombre de
host o una dirección de red en formato CIDR (192.168.0.0/24) o en notación clasica (192.168.0.0/255.255.255.0). Con
IPtables podemos especificar la dirección origen con la opción "-s".

Si en una regla omitimos la dirección origen equivale a poner 0/0 es decir cualquier dirección. Por ejemplo "-s 192.168.0.0/24"
indicaría cualquier dirección con origen en la red de clase C (24 bits de red) 192.168.0.0. Si delante de la dirección añadimos
"!" entonces hacemos referencia a cualquier dirección salvo la especificada, es decir, que no sea esa dirección.

Dirección de destino

Indica a quien va dirigido el paquete, a qué ordenador via. También lo podremos especificar con una dirección IP, un nombre de host o
una dirección de red en formato CIDR (192.168.0.0/24) o en notación clasica (192.168.0.0/255.255.255.0). En iptables podemos
especificar la dirección destino con la opción "-d".

Si en una regla omitimos la dirección origen equivale a poner 0/0 es decir cualquier dirección. Por ejemplo "-s 192.168.0.0/24" indicaría
cualquier dirección con destino a la red de clase C (24 bits de red) 192.168.0.0. Si delante de la dirección añadimos "!" entonces
hacemos referencia a cualquier dirección salvo la especificada, es decir, que no sea esa dirección.

Protocolo

Podemos establecer filtros sobre protocolos concretos, será obligatorio si además especificamos algún puerto. La opción para
especificar un protocolo es "-p" y los valores posibles son TDP, UDP e ICMP. El signo "!" antes del nombre del protocolo también se
utiliza para negar.

Interfaz de entrada

Podemos especificar un dispositivo de entrada de red concreto con la opción "-i". Por ejemplo "-i eth0" indicaría un paquete que
proviene de eth0. Se puede usar un "!". Evidentemente no podremos usar un interfaz de entrada con una regla de salida (OUTPUT).

37 de 56
Interfaz de salida

Podemos especificar un dispositivo de salida de red concreto con la opción "-o". Por ejemplo "-o eth0" indicaría un paquete que sale
por eth0. Se puede usar un "!". Evidentemente no podremos usar un interfaz de salida con una regla de entrada (INTPUT).

Puerto origen

Mediante la opción "--sport" podemos especificar un puerto o un rango de puertos si los separamos por ":", por ejemplo [1024:65535]
indicaría desde 1025 hasta 65535. Los puertos los podemos especificar por su número o también por el nombre asociado en el fichero
/etc/services. Es necesario especificar -p TCP o -p UDP para poder especificar un puerto origen.

Puerto destino

Mediante la opción "--dport" podemos especificar un puerto o un rango de puertos. Las consideraciones son iguales que para el puerto
origen.

38 de 56
Enlaces

Webs de interés

https://wiki.archlinux.org/index.php/Iptables_%28Espa%C3%B1ol%29
http://www.pello.info/filez/firewall/iptables.html

39 de 56
Bibliografía

Bibliografía básica recomendada

Enciclopedia de la Seguridad Informática. Alvaro Gómez Vieites. Edit. Ra-Ma, 2006


Seguridad informática para empresas y particulares. Gonzalo Álvarez Marañon. Edit. Mc Graw-Hill. 2004
Administración de sistemas operativos en Red. Colobran Huguet, Miguel. (2002). Barcelona: Universidad Oberta de Catalunia.
Internet y derecho penal: Hacking y otras conductas ilícitas en la red. Moron Lerma, Esther. (2002). Editorial Aranzadi, S.A.
Seguridad en UNIX y redes. Versión 2.1, http://www.rediris.es/cert/doc/unixsec/. Villalón Huerta, Antonio. (2002).
Inseguridad.doc,http://www.acis.org.co/archivosAcis, Jeimy Cano, 2004
“Seguridad en las Comunicaciones y en la Información”, G. Díaz Orueta y otros. Ed. UNED
“Software Libre. Herramientas de Seguridad”. Tony Howlet. Ed. Anaya Multimedia.
“Hackers 2”. J. Scambray, S. McClure y G. Kurtz. ED. Osborne-McGraw-Hill.
“Extreme Exploits”. V. Oppleman, Brett Watson. Ed. Anaya Multimedia.

Webs de interés

http://www.infospyware.com/
http://hak50.blogspot.com/2009/04/denial-of-
services-attacksdos-attacks.html

40 de 56
Casos prácticos

Objetivos

Unidad -7-

La unidad -7- de Seguridad perimetral tiene 4 casos prácticos que hay que resolver siguiendo las indicaciones. El objetivo es conocer el
funcionamiento y configuración de diferentes cortafuegos tanto libres como propietarios.

Los casos 1, 2 y 4 se realizan en Ubuntu y el caso 3 en Windows.

IMPORTANTE

Prepara un archivo (.odt, .docx, .doc) con todas las capturas de TODOS los casos prácticos de la unidad indicando el apartado
correspondiente para cada uno de ellos. El archivo se llamará Nombre_Apellido1_Apellido2_UD6.zip.

Añade explicaciones a los apartados si lo consideras interesante o indica dudas o cuestiones que se te hayan planteado en su ejecución.

41 de 56
CP -1- Utilización de IPtables

Caso práctico -1- Utilización de IPTables

Introducción

Supongamos que en el aula disponemos de un servidor y se quiere que la máquina 'servidor' haga la función de cortafuegos básico de una
red local a la que accede desde la interfaz de red eth1 utilizando la política por defecto de Denegar.

Recordar que el servidor deberá disponer de dos interfaces. La interfaz de red eth0 es la utilizada para la conexión del servidor con el router
y la interfaz eth1 es la utilizada para escuchar dentro del aula. Habrá que hacerlo en virtual.

Tarea

1. Activar, a nivel de sistema, el reenvío de paquetes.

2. Realizar las siguientes acciones:

Limpiar posibles reglas de cortafuegos anteriores.


Establecer política de denegación para la entrada y salida y política de aceptación para el reenvío (forward).
Establecer política de aceptación para la tabla nat de los paquetes que salen de la red local y a los que se les cambia
el origen (POSTROUTING).

3. Realizar las siguientes acciones:

Permitir a la interfaz localhost el tráfico de paquetes tanto de entrada como de salida.


Permitir a la interfaz de red del servidor la entrada y salida de paquetes.

4. Realizar las siguientes acciones:

Habilitar la salida de la red local a través de la interfaz de red eth1.


Enmascarar la red local a través de eth0.
El servidor está funcionando como servidor web. Dejar entrar las peticiones web y dejar salir los paquetes
relacionados con dichas peticiones.

5. Crear un guión-shell llamado guion_iptables_no, con todas las reglas y probar su funcionamiento siguiendo las
indicaciones dadas anteriormente.

42 de 56
CP -2- Utilización de Firestarter

Caso práctico -2- Utilización de Firestarter

Firestarter (http://www.fs-security.com/) es un programa con interfaz gráfica para la configuración de cortafuegos de código abierto.

Las principales características son:

Sencilla interfaz gráfica


El monitor en tiempo real muestra los intentos de intrusión mientras ocurren.
Permite definiur políticas de acceso para la entrada y salida.
Permite abrir o no puerto.
Permite ver las conexiones de red activas.
etc...

Es importante tener en cuenta que: Firestarter no es un cortafuegos en sí mismo, sino una interfaz gráfica de IPtables.
Más información:

1. Instalación

Desde Synaptic o ejecutando la orden en terminal:

sudo apt-get install firestarter

Acceder a Firestarter desde Ubuntu > Aplicaciones:

Esta es la ventana de bienvenida de Firestarter. Pulsar Adelante para continuar la configuración.

2. Configuración inicial

Hay que elegir el dispositivo mediante el cual se hará la conexión a Internet.

El mismo instalador indica cuál se debe elegir en la descripción.

43 de 56
Si se quiere compartir la conexión Internet (utilizar NAT) activar la casilla correspondiente. Pulsar Adelante.

Termina la configuración. Pulsar en Guardar y marcar la casilla activar cortafuegos.

La interfaz gráfica que muestra Firestarter es la siguiente:

44 de 56
3. Arranque de Firestarter al inicio del sistema

Firestarter debe arrancar automáticamente al iniciar Ubuntu.Para ello editamos el archivo /etc/sudoers y añadimos la
siguiente línea para nuestro usuario:

$ visudo -f /etc/sudoers

Incluir la línea siguiente al final del mismo,

nombre_usuario ALL=NOPASSWD: /usr/sbin/firestarter

Guardar el archivo y salir de la terminal.

A continuación ir a: Botón de parada del Sistema > Aplicaciones al Inicio y pulsar en Añadir.

En la ventana Añadir programas al inicio escribimos lo siguiente:

Nombre: Cortafuegos Firestarter


Orden: sudo firestarter --start-hidden
Comentario: Cortafuegos

quedando de la forma siguiente:

45 de 56
Al iniciar la sesión (no es necesario reiniciar el equipo) aparece un icono azul con una flecha negra en el área de notificación
Tray, es el indicador de que el cortafuegos está funcionando. Haciendo clic en ese botón se abre la ventana de Firestarter.

4. Configurar la interfaz de Firestarter

En la barra de menús de Firestarter ir a Editar > Preferencias.

En la sección Interfaz marcar las dos casillas de verificación: Activar icono en el área de notificación y Minimizar el área de
notificación al cerrar la ventana.

En la sección Cortafuegos desmarcar Iniciar/Reiniciar el cortafuegos al arrancar el programa y dejar marcados Iniciar el
cortafuegos al marcar al exterior y Iniciar/Reiniciar el cortafuegos al renovar la cesión DHCP.

Esto hace que Firestarter arranque después de establecerse la conexión a Internet por wifi.

En Eventos:

Saltar entradas redundantes: marcando esta pestaña no se listarán en la pestaña "Eventos" las conexiones
bloqueadas que sean consecutivas e idénticas.
Saltar entradas donde el destino no es el cortafuegos: no se listarán las conexiones bloqueadas cuya dirección IP de

46 de 56
destino no sea la misma que la del cortafuegos, generalmente mensajes de broadcast.

En Opciones Avanzadas:

Método de rechazo de paquetes preferente: se puede elegir entre que los paquetes se rechacen con un mensaje de
error (puerto cerrado/closed) o en silencio (puerto bloqueado/invisible/stealth).
Tráfico de difusión: se puede bloquear desde aquí todo el tráfico de difusión broadcast.

Podemos tambien cambiar la configuración de las interfaces de red y establecer determinados filtros como el de mensajes
ICMP (pings).

La interfaz tiene 3 pestañas:

Estado: muestra el estado del cortafuegos.


Eventos: muestra las conexiones que el cortafuegos ha rechazado.
Normativa: muestra las reglas que se han definido para configurar el cortafuegos

5. Utilización

Por defecto Iptables y su interfaz gráfica Firestarter permite todas las conexiones salientes y deniega todas las conexiones
entrantes.

En la pestaña Normativa es donde vamos añadiendo las reglas de IPtables.

1. Tráfico saliente:

Existen dos políticas diferentes para el tráfico saliente.

Permisivo: todo el tráfico saliente está permitido, solo los puertos o direcciones de la lista serán bloqueados.
Restrictivo: todo el tráfico saliente será bloqueado, solo el tráfico entre los puertos y direcciones de la lista serán
permitidos.

Existen tres tipos de lista para Denegar o Permitir según estemos en modo Permisivo o Restrictivo.

Para añadir una regla en alguna de las listas, hacer click con el botón derecho del ratón en el espacio libre de la lista en la
que se quiera incluir una regla, ya sea para una dirección IP o una dirección IP de nuestra red o una regla donde se puede
especificar el tipo de servicio/puerto y el origen de la conexión.

47 de 56
El programa ya trae algunos servicios predefinidos por defecto que se pueden seleccionar desde el menú desplegable
"Nombre".

Las distintas listas con reglas para cada modo son guardadas independientemente de que cambiemos de un modo a otro, por
que podemos tener perfectamente configurado tanto el modo Restrictivo como el Permisivo y cambiar de una configuración a
otra si así lo necesitamos.

Cuando se incluyen reglas o se modifican las existentes se activa el botón de Aplicación ( V verde ) y habrá que pulsar en él
para activar los cambios.

Si ahora vamos a la pestaña Eventos, allí quedarán registrados todos los intentos de conexión bloqueados por el cortafuegos,
excepto aquellos que se han descartado mediante la configuración.

48 de 56
Desde el menú Eventos, se pueden seleccionar las columnas de información que se mostrarán en la ventana, así como las
opciones para Limpiar la lista, Guardar la lista y Recargar la lista previamente limpiada.

Tráfico entrante

Solo hay una política: todo lo que no está permitido, será bloqueado.

Para crear una regla que permita la conexión se hace igual que en las conexiones salientes.

6. Configurar el cortafuegos desde la lista de eventos.

Una de las ventajas de Firestarter, es que se pueden crear reglas para las conexiones usando la lista de eventos.

Para crear una regla basándose en los parámetros de la conexión que ha sido bloqueada, hacer click con el botón derecho
en el evento y seleccionar el tipo de regla que se quiere crear.

También se pueden añadir de este modo puertos o direcciones IP para que no sean listados, estos puertos y direcciones, se
añadirán automáticamente a la lista que existe en "Preferencias" para este fin.

49 de 56
El menú variará dependiendo de si la conexión es entrante o saliente.

Dependiendo del tipo de política seleccionada se puede seleccionar bloquear/permitir las conexiones para esa dirección, para
el puerto y cualquier dirección o para el puerto y la dirección en concreto, la regla se añadirá en su sección correspondiente.

Posibles errores:

1. Mensaje de error: "Fallo al abrir los archivos de bitácora del sistema"

Solución:

Editar el archivo /etc/rsyslog.d/50-default.conf y cambiar el grupo de líneas:

#*.=info;*.=notice;*.=warn;\
# auth,authpriv.none;\
# cron,daemon.none;\
# mail,news.none -/var/log/messages

Quitar las # dejando las siguientes:

*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages

Ahora reiniciar el servicio de logs rsyslog:

sudo service rsyslog restart

Tarea:

Las reglas creadas se probarán sobre la propia máquina, teniendo en cuenta que ésta deberá tener dos interfaces de red.

1. Aplicar la política de denegar todo el tráfico saliente y adjuntar capturas que muestren que se ha perdido la conectividad.
Adjuntar una captura con la configuración correspondiente de Firestarter.

2. Crear una regla que impida acceder a páginas web que no sean seguras. Adjuntar capturas para la configuración y que
muestren la prohibición.

3. Crear una regla que impida el acceso a google. Adjuntar capturas para la configuración y que muestren la prohibición.

4. Desde un evento a partir de la prohibición establecida en el punto 3 desactivar los eventos provenientes del origen.

5. Existe en Ubuntu una interfaz gráfica para IPtables llamada gufw. Instala y ejecuta. Compara con firestarter y justifica con
cual de las dos te quedarías. Adjunta al menos dos capturas de creación de alguna regla para gufw y su aplicación.

50 de 56
CP -3- Cortafuegos de Windows 7

Caso práctico -3- Cortafuegos

1. Introducción

Windows 7 incorpora un cortafuegos que, aún estando por detrás de los cortafuegos profesionales gratuitos ha mejorado bastante con
respecto al cortafuegos incluido en otras versiones anteriores de Windows.

Para acceder al cortafuegos ir a: Panel de Control > Firewall de Windows.

Esta es la configuración básica inicial y muestra las ubicaciones de red a las que podemos estar conectados.

La primera son redes domésticas o del trabajo, que son privadas. Aquí nos indica que el firewall está activado, que va a bloquear todas las
conexiones a los programas que no estén permitidos y que nos notifique cuando bloquee un nuevo programa.

También informa que NO estamos conectados a una red doméstica o de trabajo y en cambio estamos conectados a ninguna red pública.
Esta situación dependerá de caso concreto.

En la parte izquierda de la pantalla están las opciones disponibles para el firewall:

Cambiar la configuración de notificaciones


Activar o desactivar Firewall de Windows
Configuración avanzada

Podemos personalizar la configuración del firewall. Ir a Activar o desactivar el Firewall y muestra las opciones disponibles:

51 de 56
Las opciones por defecto son que el cortafuegos esté habilitado tanto para las redes públicas como para las redes privadas y que estén
habilitadas las notificaciones para cuando un nuevo programa quiera conectarse a Internet. Es posible deshabilitar el cortafuegos para cada
una de las redes -publica o privada-, manteniendolo habilitado para la otra red; pero es una opción que no recomendamos ya que para
navegar seguro por Internet conviene tener siempre un cortafuegos activado.

Si se quiere habilitar la opción de Bloquear todas las conexiones entrantes, incluidas las de la lista de programas permitidos, sería
prácticamente lo mismo que no estar conectado a Internet, ya que no podría llegar información al sistema y, entre otras cosas, no se podría
recibir las actualizaciones de los programas que haya instalados en el equipo.

Cada vez que un nuevo programa se quiera conectar a Internet, aparecerá un mensaje del cortafuegos de Windows preguntando si se
quiere permitir la conexión de este programa y si esta conexión se permite para redes públicas o privadas.

Además se puede configurar la conexión de un programa para que funcione cuando el ordenador está conectado a una red privada, pero
NO cuando el ordenador está conectado a una red pública.

En la Seguridad avanzada es donde se pueden ver, manipular y crear nuevas reglas tanto para la entrada como para la salida:

La captura muestra la sección de Información General. Mas abajo está la sección de Introducción desde donde podemos ver las reglas
actuales del cortafuegos, así como crear nuevas reglas.

52 de 56
Observar como el usuario puede crear nuevas reglas o puede seleccionar alguna de las disponibles en la lista desplegable de Predefinidas.
Este es un asistente que guía al usuario para la creación de reglas.

2. Controlar puertos

Ir a Panel de Control > Firewall de Windows.

Ya en la interfaz del Firewall ir a Configuración avanzada > Reglas de entrada > Nueva Regla.

En la interfaz Tipo de regla > seleccionar Puerto > Siguiente.

En Protocolo y puertos, seleccionar TCP y en Puertos locales especificos indicar al que queremos permitir la conexión y pulsar Siguiente.

53 de 56
En la pantalla Acción seleccionar Permitir la conexión y pulsar Siguiente.

En la pantalla Perfil seleccionar las tres opciones y pulsar Siguiente.

54 de 56
En la pantalla Nombre asignar un nombre cualquiera a la regla y pulsar en Finalizar.

Habrá que repetir el proceso para abrir el puerto UDP y hay que tener en cuenta que habrá que abrir el puerto en el router. Esto último ya
depende de cada marca y modelo de router particular.

Tarea:

1. Repetir el proceso de creación de una regla de entrada. Hacer una captura donde aparezca la nueva regla en el conjunto de reglas de
entrada.

2. Crear una regla de salida que impida la conexión del equipo local a una web o servicio que decida el alumno.

Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto con las explicaciones que
correspondan.

55 de 56
CP -4- Filtro de MAC con IPtables

Caso práctico -4-

Introducción

La tecnología inalámbrica permite el uso del filtro de MAC como herramienta para seleccionar qué equipos permitimos que se conecten a la
red inalámbrica. Pero esto no nos asegura que no puedan tener acceso, simplemente que tendrán que trabajar lo suficiente como para que
se deje de intentar por cansancio.

Para el caso práctico se supone que la WLAN del equipo se llama wlan0, y que la MAC es 00:c0:ca:19:62:23.

El cortafuegos deberá tener las siguientes reglas, y teniendo siempre en cuenta que no interfieran con otras reglas que tengamos ya
establecidas.

La política de entrada será impedir cualquier intento de entrada. La primera linea es para impedir el acceso a nuestro equipo.

iptables -P INPUT DROP

iptables -t nat -P PREROUTING DROP

La segunda es para impedir el acceso a otros equipos que formen parte de la red a la que tenemos acceso, y que no nos utilicen como
puente.

Ahora permitimos la salida de la WLAN a la red:

iptables -A OUTPUT -o wlan0 -j ACCEPT

Y solo permitimos que entre nuestra MAC:


iptables -A INPUT -m mac --mac-source 00:c0:ca:19:62:23 -j ACCEPT
iptables -t nat -A PREROUTING -m mac --mac-source 00:c0:ca:19:62:23 -j ACCEPT

La primera linea es para que tenga acceso a nuestro equipo, y la segunda es para permitir el acceso a otros equipos que formen parte de la
red que tenemos acceso, es decir, permitir que nos utilicen como puente.

Tarea:

Introducir estas reglas en nuestro cortafuegos y probar su funcionamiento. Adjuntar al menos una captura que muestre que cualquiera otra
MAC diferente a la nuestra no se permite el acceso a nuestra red. La captura se llamará UD7_cp4_1.png.

Se necesitará un equipo portátil con tj. inalámbrica o una antena wifi o router wifi.

56 de 56

Вам также может понравиться