#4sysadmins

Inicio » Configurar el Netfilter IPtables

Configurar el Netfilter IPtables

iptables : Herramienta que nos permitirá una administración eficiente del Netfilter IPtables. Podremos crear reglas en determinadas tablas y filtros, de manera que reenviemos información, filtremos paquetes, permitamos o deneguemos el acceso a conexiones, etc…

  • Ver todas las reglas actualmente configuradas en IPtables:
# iptables -L
  • Ver todas las reglas actualmente configuradas en la tabla FILTER de IPtables:
# iptables -t filter -L
  • Ver todas las reglas actualmente configuradas en la tabla NAT y cadena OUTPUT de IPtables:
# iptables -t nat -L OUTPUT
  • Eliminar todas las reglas definidas en una tabla concreta (-F) y además poner sus contadores a cero (-Z):
# iptables -t nat -F -Z

Nota: Podemos hacerlo para una cadena concreta indicando la cadena (por ejemplo INPUT) tas la -F y -Z

  • Insertar (-I) en la línea 3 una regla “compleja” en la que la acción (-j) es de rechazar (REJECT) las conexiones entrantes (INPUT), desde cualquier origen (-s 0.0.0.0) hacia una máquina concreta (-d 192.168.1.23) por el puerto 80 (–dport 80) con el protocolo tcp (-p tcp). Además le añadimos la opción de emitir una respuesta tipo tcp-reset (–reject-with tcp-reset):
# iptables -I 3 INPUT -p tcp --dport 80 -s 0.0.0.0 -d 192.168.1.23 -j REJECT --reject-with tcp-reset

Nota: hemos prescindido de la opción -t <tabla> pero se podría haber indicado. Para añadir una regla en la línea tres evidentemente antes tiene que existir la 1 y la 2. Las reglas mas permisivas se colocan en las primeras líneas de lo contrario no tendrán efecto.

  • En vez de insertar, vamos a añadir (-A) una regla más básica también en la tabla FILTER pero esta vez, indicándolo. En ella se aceptará todo el tráfico entrante hacia un segmento de red determinado:
# iptables -t filter -A INPUT -s 192.168.1.0/24 -j ACCEPT
  • Ahora vamos a eliminar esta regla concreta, que sabemos que se encuentra en la línea 2 de /etc/sysconfig/iptables:
# iptables -D INPUT 3
  • Si no sabemos su posición exacta:
# iptables -D INPUT -s 192.168.1.0/24 -j ACCEPT
  • Creamos una regla en la tabla NAT en la que haremos PREROUTING de manera que todo el tráfico entrante desde Internet por la interfaz eht0 (-i eth0) sea analizado y aquello que vaya dirigido al puerto 80 lo desvíe (DNAT, cambia la dirección IP destino) a un determinado host de nuestra red, por ejemplo un servidor web apache:
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 192.168.1.52
  • Crear la regla de oro, es decir, conectar todos los ordenadores de una red privada con Internet a través de un dispositivo que posee dos interfaces de red, una conectada hacia Internet y la otra hacia el switch de la red privada. Esto recibe el nombre de Source NAT o SNAT (cambia la dirección IP de origen, en este caso para convertirla en la IP pública de nuestro ISP):
    # iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 88.23.144.210

    Añadimos esta regla a la cadena POSTROUTING indicando el origen (-s) nuestra red privada. Solo se aplicará a los paquetes que salgan (-o, output) por la interfaz de red ‘eth0‘, la acción (-j) será SNAT y la nueva IP es 88.23.144.210 (la ofrecida por nuestro ISP). Existen diferentes formas de conocer nuestra IP pública, por ejemplo a través del router o de Internet, accediendo a direcciones como http://www.cualesmiip.com

    Aviso: Este tipo de regla es configurada de esta manera cuando la IP que nos ofrece nuestro ISP es estática. Suele ser un servicio extra ofrecido por la compañía mediante pago.

  • Ahora vamos a crear la misma regla pero para una IP dinámica, es decir, lo común en cuanto a las IP ofrecidas por los ISP.
    # iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

    Como vemos solo cambia la acción, que en este caso usamos MASQUERADE que lo que hace es usar la IP que tiene en esos momentos configurada nuestra interfaz eth0

 

ufw : Algunas distribuciones como Debian y sus derivados, traen preinstalados el paquete ufw (Uncomplicates Firewall) que no es mas que un front-end para IPtables, de manera que podamos crear reglas de una forma mas sencilla. Para los fanáticos del GUI existe GUFW que igualmente es un front-end (esta vez gráfico) para crear reglas IPtables.

Un uso sencillo de ufw podría ser el siguiente:

  • Denegar todo el tráfico entrante y permitir todo el saliente:
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
  • Abrir un puerto para un determinado servicio (bien por número o por nombre de servicio):
$ sudo ufw allow 139
$ sudo ufw allow samba

Nota: Para eliminar una regla añadimos delete entre ufw y allow

  • Comprobar los nombres de servicio que maneja ufw:
$ sudo ufw app list
  • Abrir un puerto y especificar el tipo de protocolo:
$ sudo ufw allow 443/tcp

Nota: Para abrir un rango usamos xxxx:yyyyy/protocolo

  • Crear una regla algo mas compleja (permitir todas las conexiones ssh a mi máquina cuyo origen se encuentra dentro de mi red)
$ sudo ufw allow from 192.168.1.0/24 to 127.0.0.1 app ssh
  • Ver la configuración actual:
$ sudo ufw status verbose
  • Resetear todas las reglas:
$ sudo ufw reset
  • Habilitar o deshabilitar el servicio al inicio:
$ sudo ufw enable/disable

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: