Administración de Sistemas Operativos en Red

 

 

 

 Práctica 11
Redes de Comunicaciones
31 /05/2004 Configuración de filtros de paquetes con knoppix e iptables.
 

Objetivo

Cuando se conecta un sistema a una red, una de las tareas que debe realizar el administrador del sistema es garantizar un mínimo de seguridad en su sistema. Una de las tareas que en esta práctica se pretende desarrollar, es que el alumno implemente filtros de paquetes para controlar el tráfico de su sistema.

Al finalizar la sesión dispondremos de un PC conectado a una red que tiene implemantado una política de filtros que lo harán más seguro dentro de la red de área local en la que está conectado.

Conocimientos previos

Aunque en clase de teoría ya se han impartido los puntos más importantes para poder efectuar esta práctica, como referencia, se puede usar la múltiple información que sobre cortafuegos en general, y sobre iptables, en particular, aparece en Internet.

Algunos documentos interesantes son:

Guía de administración de redes con Linux

En la dirección http://lucas.hispalinux.es/Manuales-LuCAS/GARL2/garl2/x-087-2-masq.configuration.html
, encontramos un manual con información para configurar el filtro de paquetes de linux.

Firewall-HOWTO

Documentación de linux sobre implementación y uso de cortafuegos.

Building Internet Firewalls
Guía escrita por D. Chapman y E. Zwicky de la editorial O'Reilly que explica cómo diseñar e instalar cortafuegos para Unix, Linux, ... y cómo configurar los servicios de Internet en función al cortafuegos establecido.

Firewalls and Internet Security
Escrito por W.Cheswick y S. Bellowin, en este libro, editado por Addison Wesley, se explica las diferentes metodologías para el diseño e implementación de un cortafuegos.

Para la realización de la práctica se va a utilizar el sistema operativo knoppix.

 

Conocimientos previos

Introducción

Conectar un sistema a una red supone exponerlo al peligro de ser atacado por los distintos sistemas que cohabitan con el nuestro y por todos aquellos que pueden alcanzar dicha red. Es por ello que un administrador de un sistema debe, como una de sus principales tareas, diseñar, implementar y configurar una política de seguridad que le dé unos niveles de fiabilidad aceptables.

Los mecanimos mínimos que todo administrador debe introducir en su sistema son los llamados preventivos y que, básicamente, consistirán en configurar adecuadamente tanto el núcleo y el sistema operativo que ejecuta nuestro equipo como los servicios y programas que están ejecutándose en él.

Otra característica que todo administrador debe introducir, y que es en la que nos centraremos en esta práctica, es la de filtrar los paquetes que llegan y salen de nuestro sistema. Para ello, en los últimas versiones de los núcleos de Linux, y también en knoppix, se dispone de la utilidad iptables que nos permite configurar reglas de filtrado de paquetes.

El filtrado de IP es simplemente un mecanismo que decide qué tipos de datagramas de IP serán procesados normalmente y cuáles serán descartados. Se pueden aplicar muchos criterios , y en diferentes ordenamientos, para determinar qué datagramas se desean filtrar; como por ejemplo:

Tipo de protocolo: TCP, UDP, ICMP, etc.

Tipo de datagrama: SYN/ACK, datos, petición de eco de ICMP, etc.

Dirección de origen del datagrama: de donde proviene

Dirección de destino del datagrama: a donde se dirige


El filtrado de IP es una utilidad en la capa de red. Esto significa que este mecanismo no entiende nada acerca de la aplicación que utiliza las conexiones de red, sólo sabe acerca de las conexiones mismas. Por ejemplo, se puede denegar el acceso a usuarios a la red interna por el puerto predeterminado de telnet, pero si se apoya únicamente en el filtrado de IP, no se podrá evitar que se utilice el programa de telnet en un puerto por el que se permite el paso a través del cortafuegos implementado.
El conjunto de reglas de filtrado de IP se construye a partir de combinaciones de los criterios enumerados anteriormente.

Net filter o iptables

En la figura se puede observar los diferentes pasos para procesar un paquete en Linux.

Las diferentes etapas por las que pasa el procesamiento de un paquete son:

.- Recepción del datagrama IP(1)

.- Análisis del datragrama para determinar su tipo de procesamiento (local o no) (3)

.- Si es local, se procesa en el sistema (2). Por otra parte, desde nuestro equipo se puede mandar datagramas a otros elementos de la red (4)

.- Si no es local, se manda al destinatario (5)

En Linux, el flujo 1->3->5 es el reenvío de paquetes entre nuestro sistema y un equipo alcanzable; el flujo 1->2 es el flujo de entrada de datos; 4->5 es el de salida y el 4->3->2 es el de loopblack.

En Linux, el filtro de paquetes se puede realizar en varias etapas del procesamiento de datagramas. Para iptables, la versión más reciente de cortafuegos para Linux, el filtro para Input, se aplica a la etapa 1 de la figura, la de reenvío se aplica a la 3 y la de salida a la 5.

Uso de las iptables

Para poder hacer uso del cortafuegos, primero debemos configurar el núcleo de Linux, que, para usar la versión de NetFilter, la versión del núcleo de Linux debe ser igual o superior a 2.4.0.

Las opciones que tenemos que seleccionar en el núcleo, tras ejecutar la orden make menuconfig en el directorio /usr/src/linux-version, son:

Networking options --->
[*] Network packet filtering (replaces ipchains)
IP: Netfilter Configuration --->
.
<M> Userspace queueing via NETLINK (EXPERIMENTAL)
<M> IP tables support (required for filtering/masq/NAT)
<M> limit match support
<M> MAC address match support
<M> netfilter MARK match support
<M> Multiple port match support
<M> TOS match support
<M> Connection state match support
<M> Unclean match support (EXPERIMENTAL)
<M> Owner match support (EXPERIMENTAL)
<M> Packet filtering
<M> REJECT target support
<M> MIRROR target support (EXPERIMENTAL)
.
<M> Packet mangling
<M> TOS target support
<M> MARK target support
<M> LOG target support
<M> ipchains (2.2-style) support
<M> ipfwadm (2.0-style) support

Sintaxis de iptables

Una vez que se tiene listo el núcleo, para configurar el filtro de paquetes basta con incluir una serie de reglas con el comando iptables.

La sintaxis de este comando es:

iptables orden especificación_de_regla extensiones

Para más detalles, consultar la ayuda del comando (iptables -h o man iptables) o la bibliografía mencionada.

Ejemplo

Vamos a suponer que queremos denegar todo el tráfico de reenvío (si nuestro equipo no es un router, no debería tener permitido esta opción) y que sólo va admitir que se use el servico de telnet desde la dirección 192.168.16.225. El resto estará denegado. La dirección local será 192.168.16.226. Además, mostraremos todos los paquetes rechazados.

# iptables -F FORWARD
# iptables -P FORWARD DROP
# iptables -F INPUT
# iptables -P INPUT DROP
# iptables -F OUTPUT
# iptables -P OUTPUT DROP
# iptables -A INPUT -m tcp -p tcp -s 192.168.16.225 --dport 23 -d 192.168.16.226 -j ACCEPT
# iptables -A OUTPUT -m tcp -p tcp -s 192.168.26.226 --sport 23 -d 192.168.16.225 -j ACCEPT

#iptables -A INPUT -m tcp -p tcp -j LOG

#iptables -A OUTPUT -m tcp -p tcp -j LOG

Enunciado

La práctica consistirá en configurar un filtro de datagramas IP para controlar el flujo de paquetes que entra y sale de nuestro sistema. Así, la política a implementar es:

Que me permita la comunicación con un servidor a través del puerto 22 (servicio ssh en init.d) de la dirección del router (para la L28 es 172.20.41.99).

Que permita la comunicación con un servidor web escuchando en nuestro puerto 80, desde cualquier dirección de nuestra red (la dirección de red del laboratorio L28 es 172.20.41.96/27)

Que permita acceder al puerto 53 (dns) del servidor 172.25.40.81, mediante UDP

Que permita acceso a cualquier dirección, si está dirigida al puerto 80.

Que deshabilite el resto del tráfico.

Que guarde logs del tráfico desechado.

 

 

Página mantenida por el Departamento de Tecnología Informática y Computación 
Última actualización: 14-Dic-2001 
página principal enviar correo