Practica de Firewall Con Iptables Nat Pat
-
Upload
alan-juarez -
Category
Documents
-
view
146 -
download
3
description
Transcript of 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
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)
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)
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
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.
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/
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
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ó.
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
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
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
12 Carlos Andrey Montoya
Anexo 1 instalación de IIS
Clic
13 Carlos Andrey Montoya
Clic
Clic
14 Carlos Andrey Montoya
Anexo: adición de tarjetas de red en VMWare
Clic
Clic
15 Carlos Andrey Montoya
Clic
Clic