Aprende a usar Iptables (Parte 1)

como usar iptables

En esta ocasión os enseñaré a dominar Iptables a nivel de principiante, mostrando su uso de la forma más práctica posible.

 

como usar iptables
Iptables. Crédito: www.webvigo.com

¿Qué es Iptables?

Si has llegado aquí desde Google quizá esta no sea la primera pregunta que ronda tu cabeza, pero allá vamos ;). ¿Cómo usar iptables? Iptables es un Firewall interno del Kernel de Linux el cual puedes gestionar a través de la consola de forma muy eficiente. A diferencia de otros Firewall, Iptables se diferencia por ser muy eficiente, por ser customizable al 100%, por sus diversas opciones y por el hecho de que viene integrado en el Kernel Linux, lo cual brinda una gran comodidad, ya que solo tendríamos que activarlo, no sería necesario instalarlo aparte. como usar iptables

 

¿Para qué podemos usar Iptables?

Iptables tiene una infinidad de usos, pero principalmente se enfoca en filtrar paquetes. En este tutorial de iniciación vamos a ver el filtrado de paquetes de entrada, osea, los paquetes que nosotros recibimos. Vamos a poder filtrar los paquetes de las siguientes formascomo usar iptables

  • “Dropeando” por defecto todos los paquetes y creando excepciones (lista blanca)
  • Aceptando todos los paquetes por defecto y creando excepciones (lista negra)

En el caso de que dropearamos cada paquete que nos llega por defecto (lo cual, bajo mi punto de vista es lo más seguro), tendríamos que crear excepciones para, por ejemplo, recibir paquetes por el puerto HTTP o poder interactuar con conexiones que hayamos establecido nosotros mismos, es decir: Si yo entro a www.google.es, YO he establecido una conexión con Google. Si no estableciéramos una regla que nos permita entrar los paquetes con los que hayamos interactuado, no se nos mostrará Google. Advierto de que si quieres seguir este tutorial, tendrás que tener una noción básica de Redes (Puerta de enlace, máscara de subred, puertos)

como usar iptables
Firewall

 

Sintaxis de Iptables

Lo primero es lo primero, y si no sabemos los comandos básicos de Iptables, no llegaremos muy lejos 😛

En Iptables existen algunos comandos básicos para: como usar iptables

  • Mostrar la configuración actual
  • Borrar una regla en concreto
  • Aceptar todo el tráfico por defecto
  • Denegar todo el tráfico por defecto
  • Filtrar paquetes dependiendo del protocolo (tcp o udp) y puerto de entrada
  • Filtrar paquetes dependiendo de la fuente (de donde vengan)
  • Borrar todas las reglas anteriores

 

Para mostrar la configuración actual, basta con escribir sudo iptables -nL. La n viene de numeric (para mostrar las IP en formato numérico) y la L de List (listar).

 

Para borrar una regla en concreto, bastará con escribir sudo iptables -D INPUT 1 (número de regla). INPUT porque estamos trabajando en la cadena que filtra los paquetes de entrada y el número de la regla pues lo dicho, el número que ocupe dicha regla en nuestra lista. (Si quieres saber el número, tan solo escribe sudo iptables -nL --line- number)

 

Si quieres aceptar todo el tráfico por defecto, para hacer una lista blanca, entonces escribiremos sudo iptables -P INPUT ACCEPT. La P viene de Policy (política). Aquí estamos diciendo que la política predeterminada para el tráfico entrante sea aceptar (ACCEPT) dicho tráfico. como usar iptables

 

Si quieres dropear todo el tráfico por defecto, para hacer una lista negra, bastará con escribir sudo iptables -P INPUT DROP. Con esto le estaríamos diciendo a Iptables que la cadena de entrada (INPUT) dropee los paquetes por defecto.

 

Para filtrar paquetes dependiendo del puerto de entrada, escribiremos sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT.  -A viene de Append, osea, adjuntar. -p viene de protocol, que en nuestro caso hemos puesto el protocolo tcp para que entre tráfico a través de tcp en vez de udp. –dport significa destiny port, puerto de destino, en nuestro caso, el puerto 80 para poder recibir tráfico http, y -j viene de Jump, osea, que un paquete que cumpla con esas condiciones, “salte a” ACCEPT (Aceptar). Si en vez de ACCEPT pusiéramos DROP, el paquete se dropearía. Básicamente con este comando estamos diciéndole a iptables que cualquier paquete que venga por el protocolo tcp y el puerto 80, lo aceptemos.

 

Para filtrar paquetes dependiendo de la fuente, escribiremos sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT. -s viene de Source. En este caso, estamos diciéndole a Iptables que cualquier paquete que provenga de la red local 192.168.1.0/24, sea aceptado. Si en vez de 192.168.1.0, pusiéramos 0.0.0.0, querría decir que aceptamos tráfico de cualquier IP, sea una red local o no.

 

Para borrar todas las reglas anteriores, escribiremos sudo iptables -F

 

como usar iptables
Firewall

 

Ejemplo de uso de Iptables

Imaginemos que seguimos el ejemplo de decidir dropear todo el tráfico, osea, hacer una lista blanca, para que sólo puedan entrar los paquetes que nosotros decidamos. Excelente elección amigo mío, ¡Vamos allá!

Imaginemos que tenemos un servidor SSH utilizando el puerto 5921, y que nuestro uso habitual del PC es descargar por torrent a través del puerto 2141 y navegar por la web. ¿Cómo configuraríamos una lista blanca de Iptables?

En primer lugar, ajustaríamos la política por defecto de la cadena INPUT a DROP. sudo iptables -P INPUT DROP

A continuación, añadiríamos la primera excepción para el puerto 5921, que utilizaría el protocolo TCP. sudo iptables -A INPUT -p tcp --dport 5921 -s 0.0.0.0 -j ACCEPT

Después, añadiríamos la excepción del puerto 2141, suponiendo que sea UDP. sudo iptables -A INPUT -p udp --dport 2141 -s 0.0.0.0 -j ACCEPT

Por último, para poder navegar en la web con conexiones que ya hayan sido establecidas previamente por mí (peticiones enviadas al servidor de Google por ejemplo, para aceptar su respuesta), tendríamos que escribir lo siguiente.  sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT. Con esta regla, estamos permitiendo que el tráfico que hayamos establecido o esté relacionado con éste, nos pueda enviar paquetes y nosotros aceptarlos.

 

¡Extra!

Si tras esta larga explicación aún no has terminado de pillarlo no te preocupes, tengo un vídeo que te solucionará todas tus dudas 😉

 

Conclusión

Personalmente, a día de hoy uso Iptables para una serie de programas y procesos en ejecución que tengo en el Sistema, como pueden ser SSH, un servidor Samba, y mis programas favoritos de torrent. Cuando utilizaba CentOS en otra máquina que utilizaba de servidor, he llegado a usar Iptables para filtrar el tráfico de un juego y así evitar posibles ataques. Iptables quizá no es algo que todos vayamos a utilizar, pero bien es cierto que para momentos claves te puede salvar de un apuro, nunca está de más saber algo nuevo.

About Kevin 26 Articles
Fanático de Linux ante todo. Técnico en Sistemas Microinformáticos y redes. Soy curioso por naturaleza, me gusta investigar sobre aquello que no sé, en especial sobre tecnología. La sabiduría es poder.

Be the first to comment

Leave a Reply

Tu dirección de correo no será publicada.


*