Filtrado de paquetes y NAT
This presentation is the property of its rightful owner.
Sponsored Links
1 / 44

Filtrado de paquetes y NAT PowerPoint PPT Presentation


  • 76 Views
  • Uploaded on
  • Presentation posted in: General

Filtrado de paquetes y NAT. Aprendizajes esperados. Contenidos :. • Filtrado de paquetes. • NAT. Filtrado de paquetes.

Download Presentation

Filtrado de paquetes y NAT

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Filtrado de paquetes y nat

Filtrado de paquetes y NAT


Filtrado de paquetes y nat

Aprendizajes esperados

Contenidos:

• Filtrado de paquetes

• NAT


Filtrado de paquetes y nat

Filtrado de paquetes

• Cada regla especifica un conjunto de condiciones que un paquete debe cumplir, y lo que haremos si cumple dichas condiciones (efectuaremos una “acción”). Por ejemplo,

puede que quieras hacer DROP de los paquetes ICMP provenientes de la dirección 127.0.0.1. En este caso definiremos el protocolo como ICMP, la dirección de origen como 127.0.0.1 y la acción será DROP.


Filtrado de paquetes y nat

Filtrado de paquetes

•127.0.0.1 es la interface de “loopback” que tendrá en su máquina incluso si no dispone de una conexión real a la red. Puede hacer un “ping” para generar dichos paquetes.

• un ping simplemente envía paquetes ICMP del tipo 8 (petición de eco - echo request) que todos los hosts operativos deberán responder con un paquete ICMP de tipo 0 (respuesta del eco - echo reply).


Filtrado de paquetes y nat

Filtrado de paquetes

# p# ping –c 1  127.0.0.1 ing -c 1  127.0.0.1

PING 127.0.0.1 (127.0.0.1): 56 data bytes

64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms

‐‐‐ 127.0.0.1 ping statistics ‐‐‐

1 packets transmitted, 1 packets received, 0% packet loss round‐trip min/avg/max = 0.2/0.2/0.2 ms

# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP # ping -c 1  127.0.0.1

PING 127.0.0.1 (127.0.0.1): 56 data bytes ‐‐‐ 127.0.0.1 ping statistics ‐‐‐

1 packets transmitted, 0 packets received, 100% packet loss #


Filtrado de paquetes y nat

Filtrado de paquetes

• Agregamos (‐A) a la cadena INPUT una regla especificando que los paquetes que vengan de 127.0.0.1 (‐s 127.0.0.1) con el protocolo ICMP (‐p icmp) deberán tomar la acción DROP (‐j DROP).

• Una vez hecho esto, probamos la regla con un segundo ping. El programa esperará una respuesta que nunca llegará.


Filtrado de paquetes y nat

Filtrado de paquetes

• Podemos eliminar esta regla de dos formas. La primera, ya que sabemos que es la única regla en la cadena INPUT, podemos utilizar su número para borrarla:

#iptables -D INPUT 1

• La segunda forma es igual a la del comando ‐A, pero sustituyendo ‐A por ‐D.


Filtrado de paquetes y nat

Filtrado de paquetes

• Esto es útil cuando tiene varias reglas complejas y no quieres tener que contarlas hasta encontrar la que buscabas. Para estos casos usaremos:

# iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP


Filtrado de paquetes y nat

Filtrado de paquetes

• La sintaxis de‐D debe ser exactamente igual a la de ‐A (o ‐I o ‐R). Si hay múltiples reglas iguales en la misma cadena, sólo la primera será eliminada.


Filtrado de paquetes y nat

Filtrado de paquetes

# iptables‐F

• Para “vaciar” (Flush) todas las cadenas. # iptables ‐X

• Borrar

la

cadena definida‐por‐usuario

(opcional) especificada.

# iptables‐Z

• Poner a cero (Zero) los contadores de bytes y paquetes de todas las cadenas.


Filtrado de paquetes y nat

Filtrado de paquetes

# iptables -A INPUT -j DROP # iptables -A OUTPUT -j DROP # iptables -A FORWARD -j DROP

• Agregar

(‐A) una regla para descartar

(‐j

DROP) todos los paquetes de entrada (INPUT),

salida

(OUPUT) y reenvío

(FORWARD),

respectivamente.


Filtrado de paquetes y nat

Filtrado de paquetes

# iptables -A INPUT -p udp -j DROP

• Agregar (‐A) una regla a la cadena de INPUT en la tabla FILTER (la tabla por defecto cuando la opción ‐t no se especifica) que descarte (‐j DROP) todos los paquetes UDP (‐p UDP).


Filtrado de paquetes y nat

Filtrado de paquetes

# iptables -A INPUT -p icmp -s 192.168.1.123 -j DROP

• Agregar (‐A) una regla a la cadena de entrada (INPUT)  para que cualquier paquete  ICMP (‐p icmp) con origen en 192.168.1.123 (‐s 192.168.1.123) sea descartado (‐j DROP).


Filtrado de paquetes y nat

Filtrado de paquetes

# iptables -A INPUT -p tcp -s

192.168.1.123 -dport 21 -j DROP

• Agregar (‐A) una regla a la cadena de entrada (INPUT) para que cualquier paquete TCP (‐p

tcp) con origen en

192.168.1.123

(‐s

192.168.1.123) a través de FTP por el puerto 21 (‐‐dport 21) sea descartado (‐j DROP).


Filtrado de paquetes y nat

Filtrado de paquetes

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

• Agregar (‐A) una regla a la cadena de entrada (INPUT) para aceptar (‐j ACCEPT) conexiones a nuestra máquina a través de SSH por el puerto 22 (‐‐dport 22).


Filtrado de paquetes y nat

¿Qué es NAT?

• Normalmente, los paquetes viajan en una red desde un origen determinado (por ejemplo, desde mi computador) a un destino específico (como por ejemplo www.google.com) a través de varios enlaces diferentes.

• Ninguno de estos enlaces alteran realmente los paquetes: simplemente lo envían un paso adelante.


Filtrado de paquetes y nat

¿Qué es NAT?

• Si uno de estos enlaces hiciera NAT, podría alterar el origen o destino de los paquete según pasa a través suyo.

• Normalmente, el enlace que esté haciendo NAT recordará cómo y qué modificó del paquete, para hacer la acción inversa con el paquete de respuesta, de manera que todo funciona como se esperaba.


Filtrado de paquetes y nat

Razones para usar NAT

• Remedio frente a la escasez de direcciones

• Simplificación de la gestión de redes

• Mejora de la seguridad

• Conexiones con módem a Internet

• Varios servidores

• Proxy transparente


Filtrado de paquetes y nat

Tipos de NAT

• Source NAT (SNAT, por origen), y Destination NAT (DNAT, por destino).

• Source NAT es cuando alteramos el origen del primer paquete: esto es, estamos cambiando el lugar de donde viene la conexión.

• Source NAT siempre se hace después del encaminamiento, justo antes de que el

paquete salga

por

el

cable.

El

enmascaramiento es una forma especializada de SNAT.


Filtrado de paquetes y nat

Tipos de NAT

• El enmascaramiento (masquerading) es una forma especializada de SNAT.


Filtrado de paquetes y nat

Source NAT


Filtrado de paquetes y nat

Tipos de NAT

• Destination NAT es cuando alteramos la dirección de destino del primer paquete: esto es, cambiamos la dirección a donde se dirige la conexión.

• DNAT siempre se hace antes del encaminamiento, cuando el paquete entra por el cable. El port forwarding (reenvío de

puerto), el balanceo de carga y el proxy transparente son formas de DNAT.


Filtrado de paquetes y nat

Destination NAT


Filtrado de paquetes y nat

Controlar el NAT

• Se necesitan crear reglas NAT que le digan al núcleo (kernel) qué conexiones cambiar, y cómo hacerlo.

• Para hacer esto se utiliza la muy versátil herramienta IPTABLES, y le diremos que altere la tabla de NAT usando la opción‐t nat.


Filtrado de paquetes y nat

Controlar el NAT

• La tabla de reglas NAT contiene tres listas llamadas “cadenas”: cada regla se examina por orden hasta que una coincide.

• Las tres cadenas se llaman PREROUTING (para Destination NAT, según los paquetes entran), POSTROUTING (paraSource NAT, según los paquetes salen), y OUTPUT (paraDestinationNAT con los paquetes generados en la propia máquina).


Filtrado de paquetes y nat

Controlar el NAT

• Para todas las operaciones de NAT, se debe usar‐t nat para especificar que se operará sobre la tabla NAT.

• Otra opciones importantes son‐A para añadir una nueva regla al final de una cadena (‐A POSTROUTING), o ‐I para insertarla al

principio (‐I PREROUTING).


Filtrado de paquetes y nat

Controlar el NAT

• Se puede especificar el origen (‐s o ‐‐source) y el destino (‐d o ‐‐destination) de los paquetes sobre los que se quiere hacer NAT.

• Estas opciones pueden ir seguidas por una IP

sencilla

(por ejemplo,

192.168.1.1), un

nombre (por ejemplo, www.duoc.cl), o una

dirección de red

(192.168.1.0

/

24

o

192.168.1.0 / 255.255.255.0).


Filtrado de paquetes y nat

Controlar el NAT

• Se puede especificar qué interfaz de entrada o de salida considerar con las opciones‐i o ‐‐in‐

interface

y

‐o

o

‐‐out‐interface,

respectivamente. Pero lo que se puede especificar depende de en qué cadena esté poniendo la regla: en PREROUTING sólo puede elegir la interfaz de entrada, y en POSTROUTING (y OUTPUT) sólo la de salida.


Filtrado de paquetes y nat

Controlar el NAT

• Si usa la equivocada, IPTABLES le avisará con un mensaje de error.

• También puede indicar un protocolo específico (‐p o ‐‐protocol), como TCP o UDP; sólo los paquetes de este protocolo coincidirán con la regla.


Filtrado de paquetes y nat

Controlar el NAT

• La razón principal para hacer esto es que especificar uno de los protocolos TCP o UDP permite más opciones: específicamente las

opciones

‐‐source‐port y

‐‐destination‐port

(abreviadas como

‐‐sport

y

‐‐dport,

respectivamente).


Filtrado de paquetes y nat

Source NAT

• Hacer Source NAT quiere decir que vamos a cambiar la dirección de origen de las conexiones a algo diferente.

• Source NAT se hace en la cadena de POSTROUTING, justo antes de que sea enviado. Este es un detalle importante, ya que significa que cualquier otro servicio de la máquina LINUX (encaminamiento, filtrado de paquetes) verá el paquete sin cambiar.


Filtrado de paquetes y nat

Source NAT

• También significa que se puede utilizar la opción‐o (interfaz de salida).

• El Source NAT se especifica indicando‐j SNAT, y la opción ‐‐to‐source especifica una dirección IP, un rango de direcciones IP, y un puerto o rango de puertos opcionales (sólo con los protocolos UDP y TCP).


Filtrado de paquetes y nat

Source NAT

• Cambiar la dirección de origen por 1.2.3.4 # iptables -t nat -A POSTROUTING -o eth0

-j SNAT ‐‐to 1.2.3.4

• Cambiar la dirección de origen a

1.2.3.4,

1.2.3.5 o 1.2.3.6

# iptables -t nat -A POSTROUTING -o eth0

-j SNAT ‐‐to 1.2.3.4‐1.2.3.6


Filtrado de paquetes y nat

Source NAT

• Cambiar la dirección de origen por 1.2.3.4, puertos 1‐1023.

# iptables -t nat -A POSTROUTING -p tcp

-o eth0 -j SNAT ‐‐to 1.2.3.4:1‐1023


Filtrado de paquetes y nat

Enmascaramiento

• Hay un caso especial de Source NAT que se denomina enmascaramiento (masquerading).

• sólo debería ser usado para direcciones IP asignadas de forma dinámica, tales como las de conexiones por llamada estándar (para

direcciones IP estáticas, se debe utilizar el SNAT descrito anteriormente).


Filtrado de paquetes y nat

Enmascaramiento

• No es necesario escribir la dirección de origen de forma explícita con el enmascaramiento: utilizará la dirección de origen de la interfaz por la que el paquete está saliendo. Pero más importante aún, si el enlace cae, las conexiones (que se iban a perder de todas maneras) se olvidan, lo que significa que habrá menos problemas cuando la conexión vuelva a la normalidad con una IP diferente.


Filtrado de paquetes y nat

Enmascaramiento

• Enmascarar todo lo que salga por ppp0.

# iptables -t nat -A POSTROUTING -o ppp0

-j MASQUERADE


Filtrado de paquetes y nat

Destination NAT

• Esto se hace en la cadena PREROUTING, según entra el paquete; esto significa que cualquier otro servicio de la máquina con LINUX (encaminamiento, filtrado de paquetes) verá el paquete yendo a su destino “real” (el definitivo).

• Esto significa que se puede utilizar la opción‐i (interfaz de entrada).


Filtrado de paquetes y nat

Destination NAT

• Para alterar el destino de un paquete generado de forma local (en la máquina que hace el NAT), se debe usar la cadena OUTPUT, pero esto es más inusual.

• Destination NAT se especifica utilizando‐j DNAT, y la opción ‐‐to‐destination especifica una dirección IP, un rango de direcciones IP, y un puerto o rango de puertos opcionales (sólo para los protocolos UDP y TCP).


Filtrado de paquetes y nat

Destination NAT

• Cambia la dirección de destino por 5.6.7.8

# iptables -t nat -A PREROUTING -i eth1 -j DNAT ‐‐to 5.6.7.8

• Cambia la dirección de destino por 5.6.7.8,

5.6.7.9 o 5.6.7.10.

# iptables -t nat -A PREROUTING -i eth1 -j DNAT ‐‐to 5.6.7.8‐5.6.7.10


Filtrado de paquetes y nat

Destination NAT

• Cambia la dirección de destino del tráfico web por 5.6.7.8, puerto 8080.

# iptables  -t  nat  -A PREROUTING -p tcp

‐‐dport 80 -i eth1 -j DNAT ‐‐to 5.6.7.8:8080

• Redirige los paquetes locales que van a 1.2.3.4 hacia el dispositivo loopback.

# iptables -t nat -A OUTPUT -d 1.2.3.4 -j DNAT ‐‐to 127.0.0.1


Filtrado de paquetes y nat

Configuración de un PROXY

• Vamos a suponer 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 se redirigirán todas las peticiones que se realicen hacia un servidor WEB (puerto 80) hacia el puerto 3128 de la máquina 192.168.0.1:

# iptables

-t nat

-A PREROUTING  -p tcp

‐‐dport 80 –j DNAT ‐‐to 192.168.0.1:3128


Filtrado de paquetes y nat

Configuración de un PROXY

• Envía el tráfico que entra dirigido al puerto 80 (web) a nuestro proxy squid (transparente).

# iptables  -t nat -A PREROUTING   -i eth1

-p tcp‐‐dport 80 -j REDIRECT ‐‐to‐port 3128


Filtrado de paquetes y nat

Configuración de un PROXY


  • Login