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

44
Filtrado de paquetes y NAT

Transcript of Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes NAT.

Page 1: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes NAT.

Filtrado de paquetes y NAT 

Page 2: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes NAT.

Aprendizajes esperados 

Contenidos: • Filtrado de paquetes • NAT 

Page 3: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 4: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 5: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 # 

Page 6: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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á. 

Page 7: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 8: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 

Page 9: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 10: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 11: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 (‐jDROP) todos los paquetes de entrada (INPUT),salida (OUPUT)   y   reenvío (FORWARD),respectivamente. 

Page 12: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 13: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 14: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 (‐s192.168.1.123) a través de FTP por el puerto 21 ( dport 21‐‐ ) sea descartado (‐j DROP). 

Page 15: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 16: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 17: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 18: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 

Page 19: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. Elenmascaramiento es una forma especializada de SNAT. 

Page 20: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes NAT.

Tipos de NAT 

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

Page 21: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes NAT.

Source NAT 

Page 22: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 23: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes NAT.

Destination NAT 

Page 24: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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‐ . 

Page 25: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 (para Source NAT, según los paquetes salen), y OUTPUT (para Destination NAT con los paquetes generados en la propia máquina). 

Page 26: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 27: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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),  unnombre (por ejemplo, www.duoc.cl), o una dirección  de  red (192.168.1.0 / 24 o192.168.1.0 / 255.255.255.0). 

Page 28: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 29: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 30: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 31: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 32: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 33: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 ‐‐ ‐

Page 34: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 ‐‐ ‐

Page 35: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 36: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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. 

Page 37: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes NAT.

Enmascaramiento 

• Enmascarar todo lo que salga por ppp0. 

# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 

Page 38: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 39: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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). 

Page 40: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 ‐‐ ‐

Page 41: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 ‐‐

Page 42: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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‐‐

Page 43: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes 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 ‐‐ ‐‐ ‐

Page 44: Filtrado de paquetes y NAT. Aprendizajes esperados Contenidos: Filtrado de paquetes NAT.

Configuración de un PROXY