Practica de Firewall Con Iptables Nat Pat

15
1 Carlos Andrey Montoya Guía de NAT + FW Utilización de Linux Nivel: Avanzado Objetivos: - Aprender a utilizar el comando iptables como modificador de paquetes en ambientes Linux - Conocer las utilidades de iptables en cuanto a adición y eliminación de reglas - Identificar opciones que les permitan establecer las políticas de seguridad en sus empresas - Configurar una política de un firewall con base en las necesidades de conexión Requerimientos W2K3 Server (REAL) Acrobat Reader Máquina virtual de Linux (Fedora 7) o (Ubuntu) Vmware Client Convenciones Consejo Información Advertencia Tarea Extrema precaución Ejecución en una Terminal de Linux o Windows Metodología Durante el desarrollo de la guía primero se indicará lo que se necesita hacer y después como se hará, de esta manera el estudiante está en la libertad de hacer la guía basado en el que, siempre y cuando conozca como lo va a hacer

description

Guía de NAT + FW Utilización de Linux Nivel: AvanzadoObjetivos:-Aprender a utilizar el comando iptables como modificador de paquetes en ambientes Linux-Conocer las utilidades de iptables en cuanto a adición y eliminación de reglas Identificar opciones que les permitan establecer las políticas de seguridad en sus empresas-Configurar una política de un firewall con base en las necesidades de conexiónRequerimientos• • • •W2K3 Server (REAL) Acrobat Reader Máquina virtual de Linux

Transcript of Practica de Firewall Con Iptables Nat Pat

Page 1: Practica de Firewall Con Iptables Nat Pat

1 Carlos Andrey Montoya

Guía de NAT + FW

Utilización de Linux

Nivel: Avanzado

Objetivos:

- Aprender a utilizar el comando iptables como modificador de paquetes en ambientes

Linux

- Conocer las utilidades de iptables en cuanto a adición y eliminación de reglas

- Identificar opciones que les permitan establecer las políticas de seguridad en sus

empresas

- Configurar una política de un firewall con base en las necesidades de conexión

Requerimientos

• W2K3 Server (REAL)

• Acrobat Reader

• Máquina virtual de Linux (Fedora 7) o (Ubuntu)

• Vmware Client

Convenciones

Consejo

Información

Advertencia

Tarea

Extrema precaución

Ejecución en una Terminal de Linux o Windows

Metodología

Durante el desarrollo de la guía primero se indicará lo que se necesita hacer y después como se hará, de

esta manera el estudiante está en la libertad de hacer la guía basado en el que, siempre y cuando conozca

como lo va a hacer

Page 2: Practica de Firewall Con Iptables Nat Pat

2 Carlos Andrey Montoya

Pasos Previos

• La máquina real con W2K3 server debe tener instalado el IIS WEB y FTP ver anexo: instalación

de IIS

• Descargue el putty de ftp://ftp.icesi.edu.co/cmontoya/tools/putyy.zip

Para descargar un archivo desde el Internet Explorer de W2K3 server, primero debe agregar el

sitio como un sitio de confianza, para ello trate de descargarlo y haga clic en botón Add agregue el

sitio y trate de descargarlo de nuevo.

• La máquina virtual de Linux debe tener dos tarjetas de red antes de arrancar: Ver anexo: adición

de tarjetas de red en VMWare

• Asegúrese de iniciar la máquina virtual de Linux Fedora 7 o Ubuntu

• Inicie con el usuarios root, password Password1

• Pruebe el servicio de Secure Shell en Linux

• Pruebe el Servicio de DNS en Linux (Asegúrese de que el servicio esté corriendo)

Page 3: Practica de Firewall Con Iptables Nat Pat

3 Carlos Andrey Montoya

Esquema de laboratorio:

Configuración de la Red

Configuración de W2K3 Server

1. Configure las direcciones ip eth0

a. Dir IP: 192.168.2X1.2/24

b. DNS: 192.168.100.23

c. Default Gateway: 192.168.2X.1

Configuración de Linux

1. Configure las direcciones ip eth0

a. Dir IP: 192.168.130.11X/24

b. DNS: 192.168.100.23

c. Default Gateway: 192.168.130.1

2. Configure las direcciones ip eth1

a. Dir IP: 192.168.2X.1/24

b. DNS: 192.168.100.23

c. Default Gateway: NINGUNO

1 X se refiere al número de equipo que le corresponde (verifíquelo sobre el monitor)

Page 4: Practica de Firewall Con Iptables Nat Pat

4 Carlos Andrey Montoya

Si está en Fedora 7, asegúrese de que cada interfaz tenga su propia dirección MAC

Si las descripciones de las Interfaces (eth0/eth1) no le coinciden exactamente (eth1/eth2) no es

problema simplemente identifíquelas y tenga en cuenta cual le corresponde para la resolución de la

guía.

/24 se refiere a la cantidad de bits que se deben de poner en uno para la máscara, por ejemplo /24

tendría una máscara 11111111.11111111.11111111.0 si cuenta el número de 1’s le daría 24 �

255.255.255.0. es una manera rápida de especificar la máscara de subred. /23 � 255.255.254.0,

/16 � 255.255.0.0

En la configuración de eth1 no se configura Default Gateway debido a que a ese lado de la red no

existen otras redes hacía donde se pueda enrutar paquetes, mientras que en la eth0 si se debe

configurar Default Gateway ya que la información se puede enrutar hacia las redes Icesi, Internet.

La dirección MAC (Media Access Control address) es un identificador hexadecimal de 48 bits que

se corresponde de forma única con una tarjeta o interfaz de red2

Abra la ventana Network Configuration haciendo clic en System ���� Administration ���� Network

Antes de configurar la dirección ip es necesario verificar que la dirección MAC Asignada a la

tarjeta sea correcta

Cuando una máquina virtual cambia su identificador, su dirección MAC también cambia; sin

embargo, el sistema operativo no se da cuenta de esto y sus archivos de configuración siguen

siendo iguales, incluyendo los archivos donde se referencia la dirección MAC de la tarjeta de red.

2 Tomado de Wikipedia

Page 5: Practica de Firewall Con Iptables Nat Pat

5 Carlos Andrey Montoya

Para verificar que los archivos de configuración tienen la dirección MAC correcta, entraremos a

la ventana de Network Configuration En el tab Devices, seleccionaremos la interfaz de red eth0

y haremos clic en edit, en el tab de Hardware Device se encuentra la dirección MAC que tienen

registrada los archivos de configuración. Copie la dirección MAC haga clic en el botón Probe y

compare las dos direcciones

Las interfaces en Linux tienen una referencia más un identificador de cantidad. Eth# es el nombre

más común a la tarjetas de red, sin embargo pueden existir otros nombres, dependiendo del

sistema operativo y el tipo de interfaz de red. Por ejemplo: hme0, bge0

Un equipo no debe tener dos default gateway configurados, debido a que el sistema operativo no

sabría por donde responder las solicitudes que le hagan y se podrían tener resultados inesperados

en cuanto a las comunicaciones de red se refiere

Antes de empezar con la configuración de las reglas pruebe, haga una lista de chequeo:

Desde Windows

No se preocupe si nono le funcionan algunas cosas, esto se debe a que hasta el momento no se han

creado las reglas de NAT

� Accesar las páginas de la Universidad

� Accesar páginas de Internet

� Resolver Nombres de Internet

� Accesar las páginas Internas de sus compañeros 192.168.130.11Y3.lab.net

� Accesar el servidor Linux por SSH

Para accesar Linux a través de ssh, descomprima el putty y ejecute putty.exe (haga doble clic). En

el campo de IP Address escriba la dirección IP del servidor Linux 192.168.2X.1.

Ubuntu: usuario:usuario � Password:Password1.

Fedora 7: usuario:root � Password:Password1.

El servicio de ssh permite hacer gestión remota a través de una terminal a un servidor con linux de

una forma segura.

Desde Linux

� Accesar las páginas de la Universidad

� Accesar páginas de Internet

� Resolver Nombres de Internet

3 Y se refieres a los números de equipo de sus compañeros.

Page 6: Practica de Firewall Con Iptables Nat Pat

6 Carlos Andrey Montoya

� Accesar las páginas Internas de sus compañeros 192.168.130.11Y

Lo primero que haremos será permitir que el equipo con Windows 2K3 pueda salir a las redes de la

Universidad e Internet.

En este momento el equipo con W2K3 Server no puede navegar en Internet porque la red

192.168.2X.0 no está publicada en la Red de la Universidad y por esto ninguno de sus enrutadores

podrá enrutarla hacia Internet. Por esta razón debemos hacer NAT hacia la red del laboratorio

192.168.130.0/24 a través del equipo con Linux.

Para configurar el traslado de direcciones en el equipo con Linux4 trabajaremos con iptables5, asegúrese de

estar como el usuario root en las terminales.

iptables -L permite listar las reglas actuales que se tienen en las cadenas INPUT, OUTPUT y

FORWARD y el Default Disposition de cada una

Default Disposition se refiere a la acción predeterminada que debe cumplir el firewall cuando no

encuentre una regla que coincida con el paquete procesado

iptables -L

iptables -F permite limpiar las reglas que se encuentran en todas las cadenas de la tabla FILTER,

estas cadenas son: INPUT, OUTPUT y FORWARD. Solo se limpian las reglas no se afecta el

Default Disposition.

iptables -F

Con los siguientes comandos se está establecerá el Default Disposition para las cadenas INPUT,

OUTPUT y FORWARD a DROP, lo que va a obligar a que se descarten todos los paquetes que

lleguen hacia el equipo excepto los que explícitamente permitamos, que es lo que haremos a

continuación.

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

La opción -P se utiliza para establecer la política predeterminada para una cadena DROP,

ACCEPT…

Pruebe si puede hacer SSH hacia el servidor Linux desde Windows y desde Linux

4 Las siguientes instrucciones no dependen del sistema operativo, Fedora 7 o Ubuntu, ya que son propias de iptables

5 Para mayor información sobre iptables visite http://www.netfilter.org/

Page 7: Practica de Firewall Con Iptables Nat Pat

7 Carlos Andrey Montoya

Ahora permitiremos que no tenga restricciones a través de las interfaces de loopback

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

la opción -A es para adicionar al final de una cadena la regla

la opción -i y -o especifican la interfaz de entrada y salida respectivamente

la opción -j especifica una acción en este caso como estamos permitiendo los paquetes a través de

la interfaz de loopback (lo) es ACCEPT

como no se especificó ningún protocolo y por ende ningún puerto quiere decir que se está

permitiendo todo entre las interfaces de loopback.

Ahora le permitiremos que el equipo con W2K3 pueda hacer SSH al equipo con Linux

iptables -A INPUT -p tcp -i eth1 -d 192.168.2X.1 -s 192.168.2X.0/24 --sport 1024:65535 --dport

22 -j ACCEPT

iptables -A OUTPUT -p tcp -o eth1 -s 192.168.2X.1 -d 192.168.2X.0/24 --dport 1024:65535 --

sport 22 -j ACCEPT

la opción -p especifica el protocolo

las opciones -s y -d especifican la dirección fuente y destino respectivamente

las opciones --sport y --dport especifican los puertos fuente y destino

el puerto 22 es el que se utiliza para el servicio de ssh y los puertos desde el 1024 hasta el 65535

son los utilizados por los clientes cuando se quieren comunicar con cualquier servicio, a menos

que se configure en un caso particular lo contrario.

En este momento ya puede volver hacer ssh hacia el servidor de Linux desde Windows

Las reglas van de acuerdo a las cadenas, es fundamental que se respete las opciones según la

cadena ya que cuando es la cadena de INPUT es porque el paquete le va a llegar al equipo con

Linux y cuando se refiere a la cadena de OUTPUT es porque el paquete sale desde el equipo con

Linux

Ahora crearemos las reglas que nos permitirán utilizar el servicio dns

iptables -A INPUT -p udp --sport 1024:65535 --dport 53 -j ACCEPT

iptables -A OUTPUT -p udp --dport 1024:65535 --sport 53 -j ACCEPT

Si tiene bien configurado el servicio dns pruebe resolver un nombre de dominio por el que él

mismo responda (por ejemplo lab#.com) y pruebe resolver el nombre www.cnn.com para probar la

resolución de nombres utilice en windows:

nslookup NOMBRE 192.168.2X.1

El comando anterior le permite resolver el nombre NOMBRE preguntándole al servidor dns �

192.168.2X.1

iptables -A INPUT -p udp --dport 1024:65535 --sport 53 -j ACCEPT

iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53 -j ACCEPT

Page 8: Practica de Firewall Con Iptables Nat Pat

8 Carlos Andrey Montoya

Note que las cuatro reglas son diferentes, las dos primeras son para permitir que los clientes dns

puedan preguntarle al servidor dns (Linux) y las dos últimas son para que el servidor dns (Linux)

le pueda preguntar a otros servidores dns sobre los nombres que él no conoce. Por esta razón no le

resolvió el nombre www.cnn.com. Después del comando anterior ya se lo debe resolver.

iptables -A FORWARD -s 192.168.2X.0/24 -d 192.168.130.111 -p udp --sport 1024:65535 --dport

53 -j ACCEPT

iptables -A FORWARD -d 192.168.2X.0/24 -s 192.168.130.111 -p udp --dport 1024:65535 --sport

53 -j ACCEPT

Este será dns común para el laboratorio, con estas reglas tendremos acceso a él posteriormente

La cadena FORWARD se refiere a los paquetes que no van para el equipo Linux sino que les tiene

que hacer reenvío o enrutar.

Note que siempre se necesitan dos reglas una para hacer las solicitudes y otra para las respuestas.

Hasta este momento no necesitamos enrutar ningún paquete entre W2K3 y otros equipos debido a que todo

lo estábamos trabajando entre dos equipos que pertenecían a la misma red. Sin embargo no es posible

enrutar los paquetes entre el W2K3 y el Linux hacía las redes de la Universidad: ya que, como se había

mencionado, los enrutadores de la Universidad no conocen la red 192.168.2X.0/24. Por esta razón haremos

NAT con el equipo de Linux hacía la red 192.168.130.0/24, con esta subred si funciona debido a que es

conocida por los enrutadores de la red de la Universidad.

Antes de configurar las reglas para traslado de paquetes con el iptables debemos de garantizar que el equipo

con Linux permita enrutar paquetes (reenvío de paquetes o forward de paquetes)

Para activar el envío de paquetes solo se debe poner un “1” en un archivo lo que activará el bit de

reenvío de paquetes

Antes de activar el bit haga un ping -t 192.168.130.11X desde el equipo con W2K3 el resto de

comandos los ejecuta en Linux

ping -t 192.168.130.11X

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

iptables -t filter -A INPUT -p icmp -j ACCEPT

iptables -t filter -A OUTPUT -p icmp -j ACCEPT

verifique el ping en el equipo con W2K3

note que en esta regla se especificó la opción -t que permite indicar sobre que tabla se va a

trabajar, si no se especifica la opción -t se refiere a la tabla de filter por eso en las otras reglas se

obvió.

Page 9: Practica de Firewall Con Iptables Nat Pat

9 Carlos Andrey Montoya

antes de empezar a trabar con las reglas de NAT debemos asegurarnos que no tenga ninguna regla

por lo que limpiaremos la tabla y colocaremos el Default Disposition de FORWARD en ACCEPT,

esto con el fin de validar, por ahora, solo las reglas de NAT.

iptables -t nat -F

iptables -P FORWARD ACCEPT

la opción -t nat especifica que el Flush (vaciado) se hará solo sobre la tabla nat

ahora configuraremos la regla que nos permitirá enmascarar la dirección privada 192.168.2X.0/24

hacia una válida para la Universidad 192.168.130.11X y definiremos dos variables que nos

permitirán ejecutar reglas relacionadas con las interfaces sin preocuparse por la eth0, eth1, eth2…

Antes de ejecutar los comandos de las variables asegúrese de tener muy claro cual es su interfaz

Ethernet (eth) interna (LAN) y externa (acceso hacia Internet)

ETH_INT=“eth1”

ETH_EXT=“eth0”

iptables -t nat -A POSTROUTING -s 192.168.2X.0/24 -o $ETH_EXT -j MASQUERADE

en la tabla de nat se realizarán todos los cambios en paquetes por ejemplo dirección ip fuente, en

la cadena de POSTROUTING entrarán todos los paquetes después de haber sido enrutados, pero

solo se activarán las reglas que cumplan con las condiciones, para este caso todos los paquetes que

tengan como dirección fuente (-s) una dirección perteneciente a la red 1923.168.2X.0/24

la opción -j MASQUERADE especifica la opción en mascarar la dirección fuente del paquete con

una de las direcciones de la interfaz para este caso 192.168.130.11X

Al utilizar variables en la definición de las reglas de la política permite tener independencia del

HW, por ejemplo si se modifican las interfaces en algún momento y se dejan de llamar eth0 y

eth1, solo habría que cambiar las variables.

En este momento el equipo con W2K3 puede navegar por Internet sin ningún problema.

Ahora empezaremos a restringir la navegación de los clientes, para ello primero debemos cambiar

el Default Disposition de la cadena FORWARD en la tabla filter a DROP

iptables -P FORWARD DROP

pruebe navegar de nuevo

iptables -A FORWARD -s 192.168.2X.0/24 -p tcp --sport 1024:65535 --dport 80 -o $ETH_EXT -

j ACCEPT

iptables -A FORWARD -d 192.168.2X.0/24 -p tcp --dport 1024:65535 --sport 80 -i $ETH_EXT -j

ACCEPT

pruebe navegar de nuevo

en este momento se permitió el tránsito de paquetes por el puerto 80 si hay una página que

necesita un puerto diferente para navegar no se podrá visualizar hasta que se le permita

Page 10: Practica de Firewall Con Iptables Nat Pat

10 Carlos Andrey Montoya

si quisiéramos negar el acceso a una página en particular, necesitaríamos una regla que pueda

negar el acceso a esa página antes de que se le permita al resto. Como ya definimos la regla que se

permite a cualquier destino por el puerto 80 necesitaríamos vaciar las reglas de la cadena

FORWARD y poner nuestras nuevas reglas con las nuevas especificaciones.

Ahora negaremos el acceso a la página de donatello.icesi.edu.co antes de permitir el acceso a

todos por el puerto 80.

iptables -F FORWARD

iptables -A FORWARD -d 200.3.192.124 -j DROP

iptables -A FORWARD -s 192.168.2X.0/24 -p tcp --sport 1024:65535 --dport 80 -o $ETH_EXT -

j ACCEPT

iptables -A FORWARD -d 192.168.2X.0/24 -p tcp --dport 1024:65535 --sport 80 -i $ETH_EXT -j

ACCEPT

trate de navegar por páginas en Internet, incluyendo la página de Donatello

ahora eliminaremos esa regla solamente, pero primero necesitaremos saber cuál es el número de

esa regla, para esto ejecute:

iptables -L FORWARD --line-number

Verifique el número de la regla donde hace DROP hacia la 200.3.192.124

En la siguiente regla debe colocar el número que le corresponde a la regla que desea borrar, sin

incluir el símbolo #

iptables -D FORWARD #

Trate de ver la página de Donatello

Ahora negaremos el acceso a una página sin tener que hacer el flush de las reglas, básicamente no

añadiremos uan regla sino que la insertaremos en la posición que necesitamos. Antes de ejecutar

las siguientes reglas, pruebe entrar a www.univalle.edu.co

nslookup www.univalle.edu.co

tenga en cuenta la dirección ip que resuelve el dns para meterla en la regla.

iptables -I FORWARD 1 -d 200.26.133.5 -j DROP

pruebe navegar incluyendo www.univalle.edu.co

Ahora crearemos las reglas que nos permitirán que desde afuera de la red puedan tener acceso a servicios

internos, esto se llama hacer NAT reverso y consiste en trasladar las direcciones destino, de esta manera se

pueden prestar servicios en Internet con equipos que tienen direcciones IP inválidas.

Los servicios que prestaremos serán WWW y FTP, los cuales fueron previamente instalados

En esta ocación no colocaremos las reglas de las respuestas de los paquetes ya que utilizaremos

una regla que nos permitirá identificar los paquetes que ya tienen establecidas las conexiones

Iniciaremos con web

Page 11: Practica de Firewall Con Iptables Nat Pat

11 Carlos Andrey Montoya

iptables -t nat -A PREROUTING -d 192.168.130.11X -p tcp --dport 80 -j DNAT --to

192.168.2X.2:80

iptables -A FORWARD -i $ETH_EXT -d 192.168.2X.2 -p tcp --sport 1024:65535 --dport 80 -j

ACCEPT

iptables -A FORWARD -p tcp -m state --state RELATED,ESTABLISHED -o $ETH_EXT -j

ACCEPT

A la cadena de PREROUTING llegan todos los paquetes antes de ser enrutados y se ejecutarán las

acciones para los que cumplan las condiciones. Por ejemplo en el primero de los tres comandos

anteriores la condición es que sea dirigido a 192.168.130.11X por el puerto 80, si el paquete

cumple esa condición se trasladará la dirección destino a 192.168.2X.2 por el puerto 80

En la tercera regla se va verificando el estado de los paquetes para ver si ya tiene una

conexión establecida o si la piensa iniciar, de esta manera podremos seguir habilitando

puertos con una sola regla, en vez de las dos que veníamos utilizando hasta el momento.

Ahora habilitaremos el servicio de FTP

Tenga en cuenta que debe deshabilitar el modo ftp passivo en el internet explorer para que le

pueda funcionar Herramientas � opciones de Internet � Opciones avanzadas � Usar FTP Pasivo

iptables -t nat -A PREROUTING -d 192.168.130.11X -p tcp --dport 20:21 -j DNAT --to

192.168.2X.2

iptables -A FORWARD -d 192.168.2X.2 -p tcp --dport 20:21 --sport 1024:65535 -i $ETH_EXT -j

ACCEPT

note que esta ocasión solo se precisó de una regla en la tabla de filter para activar el servicio de

FTP en el firewall

pruebe entrar al servicio ftp y web de sus compañeros utilizando el nombre equipoY.lab.net

Page 12: Practica de Firewall Con Iptables Nat Pat

12 Carlos Andrey Montoya

Anexo 1 instalación de IIS

Clic

Page 13: Practica de Firewall Con Iptables Nat Pat

13 Carlos Andrey Montoya

Clic

Clic

Page 14: Practica de Firewall Con Iptables Nat Pat

14 Carlos Andrey Montoya

Anexo: adición de tarjetas de red en VMWare

Clic

Clic

Page 15: Practica de Firewall Con Iptables Nat Pat

15 Carlos Andrey Montoya

Clic

Clic