Está en la página 1de 16

Internet Firewalls

Linux ipchains.

I Parte. Firewalls
Introducción.

Actualmente, Internet es la principal vía para consultar y publicar información de


una forma sencilla, económica y revolucionaria. Del mismo modo, Internet ofrece la
posibilidad de contaminar y destruir esta información. Por esta razón las personas necesitan
instrumentar medidas de seguridad para proteger sus datos y recursos en Internet. Existen
diferentes enfoques para instrumentar dichas medidas, una de ellas es la seguridad de las
redes de datos. Una de las formas principales de implantar un sistema de seguridad en una
red de datos es a través de un firewall. Un firewall o “cortafuego” es un dispositivo que
permite a una red, tener conexión a Internet con cierto grado de seguridad.

Existe una gran variedad de ataques o formas de violentar la seguridad de un


sistema o red. Un firewall permite combatir diferentes tipos de "ataques" que son conocidos
en Internet:

Ø Intrusión. Es el mas común, con una intrusión, las personas pueden


utilizar un computador sin tener autorización para ello. Las formas de
realizar una intrusión en un sistema son muy variadas, desde "robarse" una
contraseña de una cuenta, hasta valerse de “errores" de algún componente de
software para obtener acceso a un computador sin poseer una cuenta en él.

Ø Negación de Servicios (Denial of Service). Este es un tipo de ataque que


busca inutilizar los servicios que presta un computador. La forma más
común de realizar este tipo de ataques es inundar un sistema o red con
mensajes, procesos o requerimientos de servicio, de tal manera que el
sistema o red es incapaz de satisfacer las solicitudes de los usuarios
legítimos.

Ø Robo de Información. Este ataque permite al intruso obtener información sin


haber utilizado directamente tu computadora. Generalmente estos ataques
explotan servicios de Internet que son utilizados para proveer información,
induciendo a estos servicios a dar mas información de la que deben
suministrar o dar información a personas equivocadas.

Un firewall es colocado generalmente en el punto donde la red interna se conecta a


Internet o red externa, tal como se muestra en la figura #1.

1
I nt ernet

Firewall

Figura #1. Firewall.

Al colocar el firewall de esta manera, todo el tráfico que proviene o va hacia


Internet pasa a través de él. De esta forma el firewall tiene la capacidad de cerciorarse que
este tráfico es conforme a las políticas de seguridad del sistema. Estas políticas definen la
accesibilidad y los niveles de restricción tanto de los servicios disponibles en Internet como
los que se ofrecen en la red interna. Estas políticas son controladas a través de un solo
punto central: el punto de conexión de la red con Internet.

Por ejemplo, un administrador de red podría definir como parte de las políticas para
el tráfico de red, deshabilitar el servicio telnet desde Internet hacia la red interna y no
utilizar servicios tales como NFS o NIS a través del firewall.

Puesto que todo el tráfico pasa a través del firewall, otra de las ventajas que
presenta, es que este se puede utilizar para recolectar información acerca de lo que ocurre
entre la red protegida e Internet.

Definiciones importantes.

Para poder entender todos los conceptos relacionados con firewalls, es necesario
conocer las siguientes definiciones:

Ø Bastión. Es un sistema de computación que debe ser altamente protegido


porque es vulnerable a ataques, usualmente porque está expuesto a Internet.
Ø Filtrado de Paquetes. Es la acción que realiza un dispositivo para controlar
selectivamente el flujo de datos que vienen desde y van hacia una red.
Ø Red Perimetral. Es una red que se encuentra entre la red protegida y la red
interna con el objetivo de agregar una capa adicional de seguridad.

2
Ø Servidor Proxy (gestor). Es un programa que interactúa con servidores
externos en nombre de clientes internos. Los clientes proxy se comunican
con servidores proxy o sucedáneos que a su vez retransmiten las solicitudes
legítimas a los servidores reales.

Tipos de Firewalls.

El concepto de firewall puede ser efectuado mediante:

Ø Filtrado de paquetes, que consiste en bloquear selectivamente el tráfico de


red.
Ø Servidores proxy, que realizan la comunicación de red en lugar del cliente.

Filtrado de paquetes.

Los sistemas de filtrado de paquetes enrutan los paquetes entre las máquinas de la
red interna y externa, pero, de forma selectiva dependiendo de las políticas que se tengan en
el sistema. A esste tipo de enrutadores que realizan filtrado de paquetes se les llama
"screening router".

Un firewall de filtrado de paquetes trabaja a nivel de paquetes. Estos firewalls son


diseñados para controlar el flujo de paquetes basándose en la dirección IP de origen y
destino, los puertos de origen y destino e información del tipo del paquete. Adicionalmente,
se puede controlar el flujo basándose en las interfaces de entrada o salida del paquete.

En la siguiente figura #2 se muestra la utilización de un "screening router" para


filtrar el flujo de paquetes entre una red interna e Internet.

I nt ernet

Screennig Router

Figura #2. Filtrado de paquetes.

3
Estos son algunos ejemplos de lo que se puede realizar con firewalls de filtrado de
paquetes:

Ø Bloquear todas las conexiones desde sistemas externos a la red interna,


excepto conexiones SMTP (correo).
Ø Bloquear todas las conexiones desde una red externa en particular.
Ø Permitir los servicios telnet o ftp desde la red interna, pero bloquear otros
como rlogin, rsh o tftp.

El filtrado de paquetes no toma decisiones basándose en el contenido en sí del


paquete sino en el encabezado. Por esta razón no se pueden tomar acciones tales como las
que se muestran en estos ejemplos:

Ø El usuario Pedro puede hacer telnet a la red interna, pero el usuario Juan no.
Ø Ud. puede transferir archivos tipo .wav pero no tipo mp3.

En los ejemplos anteriores se pretende tomar decisiones basándose en cierto tipo de


información que no pertenece al encabezado de los paquetes sino al contenido.

Reglas de filtrado.

Como se dijo anteriormente, el filtrado de paquetes utiliza la siguiente información


que poseen los paquetes para definir las reglas de filtrado:

Ø Dirección IP de origen
Ø Dirección IP de destino
Ø Puerto de Origen
Ø Puerto de destino
Ø Protocolo
Ø Tipo de paquete

Filtrado por dirección.

Esta es la forma más sencilla y más usada para realizar filtrado de paquetes. La
restricción del flujo de paquetes se realiza basándose en la dirección origen y/o destino del
paquete sin considerar qué protocolo está involucrado. Por ejemplo, si queremos bloquear
todo el tráfico proveniente de la red 10.10.10.0/24:

Flujo Dirección Origen Dirección Destino Acción


Entrante 10.10.10.0/24 - Denegar

El signo ‘-‘ indica cualquier dirección destino. Flujo indica si el tráfico manejado
por el enrutador es entrante o saliente. Acción indica qué hace el enrutador con el paquete.
Generalmente existen tres acciones a tomar con un paquete de red:

4
Ø Aceptar. Indica que este paquete pasó el criterio de filtrado y será reenviado
tal como lo hace un enrutador cualquiera.
Ø Denegar. Indica que este paquete no cumple con el criterio de aceptación y
será descartado.
Ø Rechazar. Indica que este paquete no cumple con el criterio de acetación y
será descartado, pero a diferencia de Denegar, se envía un mensaje ICMP a
la máquina origen informado lo ocurrido. Generalmente es un paquete ICMP
de destino inalcanzable o destino administrativamente inalcanzable. De
esta forma el que envía el paquete es avisado y no tratará de retransmitir el
paquete.

Filtrado por Servicio.

Este es un tipo de filtrado más complejo y más completo. Este filtrado permite
definir reglas basadas en servicios tales como telnet, SNMP, SMTP, etc. El software de
filtrado utiliza la información de los puertos, protocolo y tipo que contiene cada paquete
para realizar filtrado por servicio. Por ejemplo, en el servicio telnet desde una máquina de
la red interna 192.168.2.1, a una máquina en la red externa 10.10.10.1 (servicio saliente),
los paquetes que van desde la máquina interna poseen la siguiente información (paquete
saliente):

Ø Dirección origen: 192.168.2.1


Ø Dirección destino: 10.10.10.1
Ø Puerto origen: Un puerto aleatorio superior al 1023 (> 1023)
Ø Puerto destino: 23
Ø Protocolo: TCP
Ø Tipo de paquete: El primer paquete, el que establece la conexión, no tiene el
bit ACK activo, el resto sí lo tiene.

El bit ACK de los paquetes TCP permite identificar si se trata de un paquete de


solicitud de conexión (donde el ACK no está activado) o si es otro de los paquete de la
conexión (donde sí está activado).

De la misma forma un paquete entrante de una conexión telnet saliente posee la


siguiente información:

Ø Dirección origen: 10.10.10.1


Ø Dirección destino: 192.168.2.1
Ø Puerto origen: 23
Ø Puerto destino: El mismo puerto que se utiliza como origen en un paquete
saliente.
Ø Protocolo: TCP
Ø Tipo de paquete: De conexión, siempre tiene el bit ACK activo.

5
Con esta información podemos construir las reglas de filtrado que permiten
conexiones telnet salientes, pero nada más. Consideraremos la red externa como Internet y
la red interna como 192.168.2.0/24:

Regla Flujo Dirección Dirección Protocolo Puerto Puerto ACK Acción


Origen Destino Origen Destino
1 Saliente 192.168.2.0/24 - TCP >1023 23 - Aceptar
2 Entrante - 192.168.2.0/24 TCP 23 >1023 Si Aceptar
3 Ambos - - - - - - Denegar

La primera regla indica que se aceptan paquetes desde la red interna, a cualquier
servidor telnet en Internet.

La segunda regla indica que se aceptan paquetes de retorno desde el servidor telnet
de Internet a la red interna. Dado que esta regla chequea que el bit de ACK esté activado, se
prohíbe que se realicen conexiones entrantes desde el puerto 23 hacia cualquier puerto
superior al 1024. La regla final indica que si el paquete no cumple con ninguna de las reglas
anteriores, entonces es denegado.

Como último ejemplo, definamos las reglas de filtrado para cumplir con la siguiente
política en la red 192.168.1.0/24:

Ø Se permite conexiones telnet salientes.


Ø Se permite conexiones SMTP salientes.
Ø Se permite conexiones SMTP entrantes al servidor de correos de la red,
192.168.1.1.
Ø Se permite conexiones HTTP salientes.
Ø Se permite conexiones entrantes al servidor HTTP de la red, 192.168.1.2.

Regla Flujo Dirección Dirección Protocolo Puerto Puerto ACK Acción


Origen Destino Origen Destino
1 Saliente 192.168.2.0/24 - TCP >1023 23 - Aceptar
2 Entrante - 192.168.2.0/24 TCP 23 >1023 Si Aceptar
3 Saliente 192.168.2.0/24 - TCP >1023 25 - Aceptar
4 Entrante - 192.168.2.0/24 TCP 25 >1023 Si Aceptar
5 Saliente 192.168.2.0/24 - TCP >1023 80 - Aceptar
6 Entrante - 192.168.2.0/24 TCP 80 >1023 Si Aceptar
7 Entrante - 192.168.1.1 TCP >1023 25 - Aceptar
8 Saliente 192.168.1.1 - TCP 25 >1023 Si Aceptar
9 Entrante - 192.168.1.2 TCP >1023 80 - Aceptar
10 Saliente 192.168.1.1 - TCP 80 >1023 Si Aceptar
11 Ambos - - - - - - Denegar

Las reglas 1 y 2 permiten realizar telnet desde cualquier máquina de la red interna.
Las reglas 3 y 4 permiten enviar correo desde cualquier máquina de la red interna. Las
reglas 5 y 6 permiten conectarse a servidores WEB desde cualquier máquina de la red

6
interna. Las reglas 7 y 8 permiten que el servidor de correos reciba correos desde cualquier
dirección de origen. Las reglas 9 y 10 permiten que cualquier máquina se puede conectar al
servidor WEB de la red interna. Por último la regla 11 bloquea cualquier otro tipo de
paquete.

Servidores Proxy.
Los servicios proxy son aplicaciones especializadas que corren en una máquina
firewall: ya sea en el enrutador de la red o en una máquina bastión. Estas aplicaciones
toman los requerimientos de los clientes y los reenvían a los servidores verdaderos,
basándose en las políticas de seguridad del sistema.

En la figura # 3 se muestra un firewall con un servidor proxy. En un sistema como


éste, el servidor proxy evalúa las solicitudes de los clientes y decide si debe ser aprobada o
denegada. Si la solicitud es aprobada el servidor proxy contacta al servidor real y le reenvía
las solicitudes del cliente proxy al servidor y las respuestas del servidor real al cliente
proxy. Por el contrario si es denegada, entonces la solicitud es descartada.

Servidor
Real

I nt ernet

Servidor
Proxy
Firewall

Client e
Proxy

Figura #3. Servidor proxy.

Esta práctica se concentra principalmente en describir firewalls de filtrado de


paquetes. Por esta razón, los servidores proxy no serán descritos en detalle.

7
Arquitecturas de Firewalls.

A continuación se mostrara las dos maneras más comunes de colocar los


componentes de un firewall.:

Ø Enrutador con filtrado de paquetes.


Ø Firewall con red perimetral.

Enrutador con filtrado de paquetes.

En este tipo de firewall, el nivel primario de seguridad es provisto por el filtrado de


paquetes. En la figura #4 se muestra un ejemplo de esta arquitectura. El bastión es la
máquina que provee servicios tanto a la red interna como a la red externa. Por ejemplo, en
el bastión puede estar el servidor WEB de la red interna, que puede ser consultado desde
todo Internet. Adicionalmente, el bastión puede ser utilizado como servidor proxy.

I nt ernet

Screennig Rout er

Bast ion

Figura #4. Enrutador con filtrado de paquetes.

Todo intento de conexión a la red interna debe hacerse al bastión, por lo tanto, esta
máquina debe mantener un alto grado de seguridad. La configuración del filtrado de
paquetes en el enrutador puede realizarse de alguna de las siguientes formas:

Ø Permitir que otras máquinas de la red interna puedan conectarse a algunos de


los servicios de Internet.

Ø Bloquear todas las conexiones de las máquinas internas a Internet. Todos los
servicios deben ser solicitados al bastión configurado como servidor proxy.

8
Estos dos enfoques se pueden combinar en la configuración del firewall. Se pueden
permitir algunas conexiones directamente a Internet, mientras que otras deben ser
permitidas solo a través del servidor proxy.

Existen algunas desventajas en la utilización de esta arquitectura. La mayor de estas


desventajas es que, si se rompe la seguridad del bastión, no hay nada que proteja al resto de
la red interna. Además, el enrutador es un único punto de falla, si la seguridad del
enrutador se ve comprometida, entonces todo el resto de la red queda expuesta a los
ataques.

Red perimetral.

Esta arquitectura trata de evitar los problemas que existen con el enrutador de
filtrado. Esta arquitectura agrega una capa extra de seguridad, colocando una red perimetral
que aísla la red interna de Internet.

Por su naturaleza, el bastión es la máquina más vulnerable de la red. Esto es debido


a que esta máquina es la que permite conexión directa desde Internet y posee servicios que
pueden ser vulnerables. Para protegerlo, se aísla el bastión en la red perimetral. Esto reduce
el impacto de un ataque exitoso contra el bastión. En la figura #5 se muestra ésta
arquitectura.

I nt ernet
Bast ión

Enrut ador
ext erno

Enrut ador
Firewall int erno

Figura #5. Firewall con red perimetral.

9
II Parte. Linux ipchains

En Linux, el filtrado de paquetes es manejado en el kernel. ipchains es el código de


filtrado de paquetes que ofrece el kernel de las series 2.0 de Linux. ipchains permite ver el
encabezado de los paquetes que pasan por el sistema y decide qué hacer basándose en las
políticas de seguridad. ipchains puede tomar cualquiera de las siguientes decisiones:

Ø Denegar los paquetes, es decir, descartarlos como si nunca los hubiera


recibido.
Ø Aceptar los paquetes, es decir, dejar que pasen a través del firewall.
Ø Rechazar los paquetes, es como denegarlos pero se le informa al origen del
paquete lo que ocurrió.

Como instalar ipchains.

Para poder utilizar ipchains en Linux, el kernel debe contener IP firewall chains.
Una manera de verificar si el kernel actual tiene esta opción instalada, es cerciorándose de
que exista el archivo ‘/proc/net/ip_fwchains’ .

Las opciones de configuración que deben habilitarse en el kernel de las series 2.0 de
Linux son:

CONFIG_EXPERIMENTAL=y
CONFIG_FIREWALL=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_FIREWALL_CHAINS=y

Para el kernel de las series 2.1 y 2.2:

CONFIG_FIREWALL=y
CONFIG_IP_FIREWALL=y

Para poder manejar el filtrado de paquete que ofrece el kernel de linux, existe una
herramienta llamada ‘ipchains’ . Esta herramienta además de utilizarse para filtrado de
paquetes, sirve para controlar el enmascaramiento (masquerading) y la sustitución
transparente (transparent proxying). Estas dos capacidades adicionales al filtrado que posee
ipchains no serán cubiertas en esta práctica.

Cadenas para filtrado

El kernel de Linux contiene tres listas de reglas de filtrado, estas listas son llamadas
cadenas (chains). Estas listas son llamadas input, output y forward. Cuando un paquete
llega a la máquina que funciona como firewall por una de sus interfaces, el kernel utiliza la
cadena input para decidir su destino. Si el paquete supera este paso, el kernel decide adónde
enviar el paquete basándose en la tabla de enrutamiento. Si el paquete está destinado a otra

10
máquina, el kernel consulta la cadena forward. Por último antes de enviar el paquete, el
kernel consulta la cadena output.

Una cadena es una lista de reglas. Cada regla dice: si el paquete cumple con “esto”,
entonces haga “aquello” con el paquete. Si la regla no corresponde al paquete, entonces se
consulta la regla siguiente. Por último, si ninguna de las reglas es aplicable al paquete, el
kernel revisa la política por omisión de la cadena para decidir qué hacer. Esta política por
omisión puede ser cualquiera de las acciones; denegar, aceptar o rechazar.

La figura #6 muestra a grandes rasgos el camino de un paquete cuando pasa a través


de la máquina. En el grafico se omiten detalles tales como el enmascaramiento.

accept accept accept


input enrutamiento forward output

deny/ deny/ deny/


reject local reject
reject

Figura #6. Etapas del filtrado

Las etapas que se muestran en el gráfico son:

Ø En primer lugar el paquete es comprobado con la cadena input. Si la


decisión no es denegar o rechazar, el paquete continúa.
Ø Luego se realiza la decisión de enrutamiento basándose en el destino del
paquete. Con esto se decide si el paquete es para un proceso local o es para
otra máquina.
Ø Un proceso local puede recibir o enviar paquetes que pasan a través de la
etapa de decisión de enrutamiento.
Ø Si el paquete no fue creado por un proceso local, el paquete es enviado a la
cadena forward.
Ø La cadena forward se aplica a cada paquete que trata de pasar a través de
esta máquina hacia otra.
Ø Por último a todo paquete que sale de la máquina se le aplica la cadena
output.

Uso de ipchains.

ipchains es el comando que permite manejar las cadenas de firewalls en el kernel.


Existen opciones para manejar cadenas completas. Siempre se tienen inicialmente tres
cadenas que no se pueden eliminar. Las opciones para manejar las cadenas son:

11
Ø Crear una nueva cadena ( –N ).
Ø Borrar una cadena vacía ( -X ).
Ø Cambiar la política por omisión de una de las cadenas ( -P )
Ø Mostrar las reglas en una cadena ( -L ).
Ø Eliminar las reglas de una cadena ( -F )
Ø Iniciar los contadores de paquetes y bytes de todas las reglas de una cadena
( -Z ).

Para manipular las reglas dentro de las cadenas:

Ø Agregar una regla nueva a una cadena ( -A ).


Ø Insertar una nueva regla en alguna posición de la cadena ( -I ).
Ø Remplazar una regla en alguna posición de la cadena ( -R ).
Ø Eliminar una regla en alguna posición de la cadena ( -D ).
Ø Eliminar la primera regla que hace correspondencia en la cadena (-D).

Reglas

Al agregar una regla de filtrado a cualquiera de las cadenas, se especifica la


dirección IP origen con la opción –s y la dirección IP destino con –d. Para especificar la
acción a tomar si un paquete corresponde con la regla, se utiliza la opción –j. Si esta opción
es omitida, la regla es considerada como de contabilidad, que es utilizada simplemente para
contar ciertos tipos de paquetes. Usando ipchains –L –v se pueden ver los contadores
de bytes y paquetes asociados a cada regla. Por ejemplo si queremos que ninguno de
nuestros usuarios de la red interna se pueda comunicar con la máquina 192.168.2.1,
podemos utilizar la siguiente regla:

ipchains –A output –s 0.0.0.0 –d 192.168.2.1 –j DENY

Con este comando agregamos a la cadena output la regla que dice que cualquier
paquete cuyo destino sea 192.168.2.1 sea denegado. El origen 0.0.0.0 significa cualquier
origen. Las direcciones IP se pueden especificar de cuatro formas distintas:

Ø Con el nombre, tal como www.ula.ve


Ø Con la dirección IP, tal como 192.168.2.1
Ø Especificando un grupo de direcciones con formato CIDR, tal como
192.168.2.0/24
Ø Especificando la dirección de red y la máscara, tal como
192.168.2.0/255.255.255.0

Especificar interfaz.

Para especificar una interfaz en particular, se utiliza la opción –i. Por ejemplo,

ipchains –A output –s 0.0.0.0 –d 192.168.2.1 –i eth0 –j DENY

12
En este caso estamos denegando todo los paquetes que van a la dirección
192.168.2.1 y que salen por la interfaz ethernet eth0.

Especificar inversión.

Muchas de las opciones que se utilizan tal como –s o –i pueden ser precedidas por
‘!’, que indica no igual a la opción dada, por ejemplo:

! –s 192.168.1.0/24, corresponde a los paquetes cuyo origen no es 192.168.1.0/24

Especificar protocolo.

Con la opción –p se especifica el protocolo, por ejemplo:

ipchains –A input –s 192.168.1.2 –d 0.0.0.0 –p tcp –j DENY.

Esta regla especifica que todos los paquetes que provengan de la máquina
192.168.1.2 y con protocolo TCP sean denegados.

Especificar servicio.

Al especificar el protocolo UDP o TCP, adicionalmente se puede especificar el


puerto (servicio) o rango de puertos. Se especifica un rango utilizando el carácter ‘:’, por
ejemplo 0:1023, que incluye desde el 0 al 1023 inclusive. Si el limite superior es omitido,
este es considerado como 65535 y si el inferior es omitido este es considerado 0. Por
ejemplo para definir todos los paquetes cuyo protocolo es TCP y el puerto es menor a 1024:

-p tcp –s 0.0.0.0/0 :1023

Adicionalmente los puertos pueden ser especificados por su nombre. Por ejemplo,
para definir todos los paquetes TCP excepto los de telnet:

-p tcp –s 0.0.0.0/0 ! telnet

Especificar paquetes ICMP.

Los paquetes ICMP no poseen puertos, poseen un nombre o tipo de paquete ICMP.
Por ejemplo destination-unreachable es un tipo de paquete ICMP que es recomendable que
nunca se bloquee, puesto que esto permite que un intento de conexión no se bloquee
esperando por una respuesta.

Especificar tipo de paquetes.

En TCP existen diferentes tipos de paquetes que pueden ser identificados por la
cabecera del paquete, como por ejemplo los paquetes que utiliza TCP para solicitar una
conexión. Estos paquetes son llamados SYN puesto que la bandera SYN del encabezado

13
del paquete esta activada. Al identificar estos paquetes se puede restringir las conexiones en
una sola dirección. ipchains puede realizar esto utilizando la opción –y, por ejemplo:

-p TCP –s 192.168.2.1 –y –j DENY, especifica que los paquetes SYN (para solicitar
una conexión) provenientes de la máquina 192.168.2.1 son denegados. Con esto se está
restringiendo las conexiones provenientes de la máquina 192.168.2.1.

Información de bitácora.

La opción -l, ipchains permite enviar a la bitácora del sistema información de los
paquetes que corresponden con algunas de las reglas.

Comprobación de paquetes.

Con la opción –C, ipchains permite ver qué ocurre si un cierto tipo de paquete entra
a la máquina. Los detalles del paquete que se quiere probar se especifican del mismo modo
como se especifican las reglas. Por ejemplo, para ver si un paquete TCP recibido por la
interfaz eth0 y que fue enviado por la máquina 192.168.2.1 al puerto 23 es aceptado, se
utiliza el siguiente comando:

ipchains –C input –p tcp –s 192.168.2.1 –d 0.0.0.0/0 23 –i eth0

Si el paquete es aceptado, el comando retorna ‘packet accepted’

14
III Parte. Trabajo Practico

En esta práctica, se instalará un firewall de filtrado de paquetes utilizando ipchains


de Linux en un enrutador (screening router). Adicionalmente, cada participante podrá
probar ipchains en las máquinas internas de red. La topología de red que se utilizara para
realizar esta práctica se muestra en la figura #7.

Red A Red B

Red D Red C

Figura #7. Topología de red

A continuación se muestran los pasos que deben seguir los participantes para
realizar la práctica de firewalls.

Ø Verificar que ipchains esté instalado en el kernel de cada una de las


máquinas. Para ello cerciórese que el archivo:
‘/proc/net/ip_fwchains’ exista.
Ø Verificar que las cadenas por omisión que ofrece ipchains estén vacías. Para
ello ejecute el comando: ipchains –L , deberá obtener la siguiente salida:
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
Ø Definir las políticas de filtrado para cada una de las redes. En cada uno de
los enrutadores de las redes A, B, C, D se configurara ipchains para cumplir
con la siguiente política:
• Permitir conexiones HTTP y SMTP a una de las máquinas internas
que fungirá de servidor:
ipchains –A input –s 0.0.0.0/0 1024: –d serv_x 80 –p tcp –j ACCEPT
ipchains –A input –s 0.0.0.0/0 1024: –d serv_x 25 –p tcp –j ACCEPT

donde serv_x es una de las máquinas que fungirán como servidor.

15
• Permitir las conexiones al servicio indet de cada una de las máquinas
de la red:
ipchains –A input –s 0.0.0.0/0 1024: –d red_x 113 –p tcp –j ACCEPT

donde red_x es una de las redes A,B,C o D. El servicio ident es


utilizado por la mayoría de los otros servicios para identificar el
usuario que solicita el servicio.

• Bloquear todo el resto de las solicitudes de conexión:


ipchains –A input –s 0.0.0.0/0 –d red_x –p tcp –y –j DENY

• Permitir conexiones telnet desde las máquinas internas de la red al


exterior:
ipchains –A input –s 0.0.0.0/0 23 –d red_x 1024: –p tcp –j ACCEPT

• Bloquear todo el resto de los paquetes:


ipchains –A input –s 0.0.0.0/0 –d 0.0.0.0/0 –p tcp –j DENY -l
ipchains –A input –s 0.0.0.0/0 –d 0.0.0.0/0 –p udp –j DENY -l

de esta forma se bloquea todo el resto de los paquetes UDP y TCP


pero los paquetes ICMP son permitidos. Observe que al final de estas
dos reglas está la opción –l. Con esta opción se guarda información
de todos los paquetes que corresponden con esta regla en la bitácora
del sistema (logs). Verifique en el archivo ‘/var/log/messages’
las entradas correspondientes a ipchains.

• Listar las reglas instaladas en cada máquina con el comando


ipchains –L.

• Verificar que las reglas de filtrado están funcionando


adecuadamente, utilizando la opción –C de ipchains. Por ejemplo,
verifique que los paquetes entrantes al puerto 80 son aceptados:
ipchains –C input –i eth0 –s 0.0.0.0/0 puerto_x –d serv_x 80 –p tcp

donde puerto_x es cualquier puerto superior al 1023.

Nota: Este es un conjunto de reglas bastante sencillo donde se utiliza solo la cadena input,
es decir, solo se verifica el flujo de paquetes entrante.

Por último, cada uno de los participantes puede definir reglas de filtrado para cada
una de las máquinas internas de la red. Por ejemplo se puede definir una regla que evite que
las máquinas respondan a los ‘ping’:

ipchains –A input –p ICMP –s 0.0.0.0/0 –d máquina_x echo-request –j DENY

16

También podría gustarte