¿Cómo configurar el firewall en Linux?

¿Qué es un cortafuegos?
Firewall es un sistema de seguridad de red que filtra y controla el tráfico en un conjunto predeterminado de reglas. Este es un sistema intermediario entre el dispositivo e Internet.

NOTA: – Si ya conoce el funcionamiento de Firewall en Linux y solo desea conocer los comandos, vaya al final del tutorial.

Cómo funciona el cortafuegos de Linux:
la mayoría de las distribuciones de Linux se envían con herramientas de cortafuegos predeterminadas que se pueden usar para configurarlas. Usaremos «IPTables», la herramienta predeterminada provista en Linux para establecer un firewall. Iptables se utiliza para configurar, mantener e inspeccionar las tablas de las reglas de filtrado de paquetes IPv4 e IPv6 en el Kernel de Linux.

Nota : – Todos los comandos a continuación necesitan privilegios de sudo.

Strings :-

Las strings son un conjunto de reglas definidas para una tarea en particular.

Tenemos tres strings (conjunto de reglas) que se utilizan para procesar el tráfico: –

  1. Strings de ENTRADA
  2. Strings de SALIDA
  3. Strings ADELANTE

1. Strings de ENTRADA
Cualquier tráfico procedente de Internet (red) hacia su máquina local tiene que pasar por las strings de entrada. Eso significa que tienen que pasar por todas las reglas que se han configurado en la string de entrada.

2. Strings de SALIDA
Cualquier tráfico que vaya desde su máquina local a Internet necesita pasar por las strings de salida.

3. String FORWARD
Cualquier tráfico que provenga de la red externa y se dirija a otra red necesita pasar por la string Forward. Se utiliza cuando dos o más ordenadores están conectados y queremos enviar datos entre ellos.

Políticas diferentes: –

Hay tres acciones que las iptables pueden realizar en el tráfico

  1. ACEPTAR
  2. SOLTAR
  3. RECHAZAR

1. ACEPTAR
Cuando el tráfico pasa las reglas en su string especificada, iptable acepta el tráfico.
Eso significa que abre la puerta y permite que la persona entre al reino de Thanos.

2. DROP
Cuando el tráfico no puede pasar las reglas en su string especificada, iptable bloquea ese tráfico.
Eso significa que el cortafuegos está cerrado.

3. RECHAZAR
Este tipo de acción es similar a la acción de soltar, pero envía un mensaje al remitente del tráfico que indica que la transferencia de datos ha fallado.
Como regla general, use REJECT cuando quiera que el otro extremo sepa que el puerto es inalcanzable. Use DROP para conexiones a hosts que no quiere que la gente vea.


NOTA: –
Debe tener en cuenta una regla simple aquí: –
Las reglas que establece en las iptables se verifican desde la regla superior hasta la inferior. Cada vez que un paquete pasa cualquiera de las reglas principales, se le permite pasar el firewall. Las reglas inferiores no se comprueban. Así que tenga cuidado al establecer reglas.

Comandos básicos de iptables:

1. Enumere las reglas actuales de iptable:

Para enumerar las reglas de las iptables actuales: –

sudo iptables -L

La salida sería: –

Como puede ver, tenemos tres strings (INPUT, FORWARD, OUTPUT). También podemos ver los encabezados de las columnas, pero no son reglas reales. Esto se debe a que la mayoría de Linux vienen sin reglas predefinidas.

Veamos qué significa cada columna.

Destino: –
Esto define qué acción debe realizarse en el paquete (ACEPTAR, DROP, etc.)

prot:-
Esto define el protocolo (TCP, IP) del paquete.

fuente: –
Esto le dice a la dirección de origen del paquete.

destino:-
Esto define la dirección de destino del paquete

2. Borrar las reglas:

Si alguna vez desea borrar/eliminar todas las reglas existentes. Ejecute el siguiente comando:-

sudo iptables -F

Esto restablecerá las iptables.

3. Cambiar la política predeterminada de strings:

sudo iptables -P Chain_name Action_to_be_taken

Como puede ver en la imagen de arriba, la política predeterminada de cada una de las strings es ACEPTAR.

Por ejemplo:
Si ve la string de reenvío, verá «Chain FORWARD (política ACEPTAR)». Esto significa que su computadora permite que cualquier tráfico se reenvíe a otra computadora.

Para cambiar la política de reenvío a drop:-

sudo iptables -P FORWARD DROP

El comando anterior detendrá cualquier tráfico que se reenvíe a través de su sistema. Eso significa que ningún otro sistema puede su sistema como intermediario para pasar los datos.

Haciendo tu primera regla:

1. Implementando una regla DROP:

Ahora comenzaremos a crear nuestras políticas de firewall. Primero trabajaremos en la string de entrada, ya que es por donde se enviará el tráfico entrante.

Sintaxis:-

sudo iptables -A/-I chain_name -s source_ip -j action_to_take

Tomaremos un ejemplo para entender el tema.

Supongamos que queremos bloquear el tráfico proveniente de una dirección IP 192.168.1.3. Se puede usar el siguiente comando: –

sudo iptables -A INPUT -s 192.168.1.3 -j DROP

Esto puede parecer complicado, pero la mayor parte tendrá sentido cuando revisemos los componentes:-
-UNA ENTRADA:-

La bandera -A se usa para agregar una regla al final de una string. Esta parte del comando le dice a iptable que queremos agregar una regla al final de la string INPUT.

-I INPUT:-
En esta bandera las reglas se agregan al principio de la string.

-s 192.168.1.3:
– El indicador -s se usa para especificar el origen del paquete. Esto le dice a iptable que busque los paquetes que provienen de la fuente 192.168.1.3

-j DROP
Esto especifica lo que debe hacer iptable con el paquete.

En resumen, el comando anterior agrega una regla a la string INPUT que dice, si llega algún paquete cuya dirección de origen es 192.168.1.3, entonces descarte ese paquete, eso significa que no permita que el paquete llegue a la computadora.

Una vez que ejecute el comando anterior, puede ver los cambios usando el comando: –

sudo iptables -L

La salida sería: –

2. Implementando una regla ACEPTAR:

Si desea agregar reglas a puertos específicos de su red, puede usar los siguientes comandos.

Sintaxis:-

sudo iptables -A/-I chain_name -s source_ip -p protocol_name --dport port_number -j Action_to_take

-p nombre_de_protocolo:
esta opción se utiliza para hacer coincidir los paquetes que siguen al nombre_de_protocolo del protocolo.

-dport port_number:
esta opción solo está disponible si proporciona la opción -p protocol_name. Especifica buscar los paquetes que van al puerto “port_number”.

Ejemplo:
supongamos que queremos mantener abierto nuestro puerto SSH (supondremos en esta guía que el puerto SSH predeterminado es el 22) de la red 192.168.1.3 que bloqueamos en el caso anterior. Es decir, solo queremos permitir aquellos paquetes que vienen de 192.168.1.3 y que quieren ir al puerto 22.

¿Qué hacemos?
Probemos el siguiente comando:

sudo iptables -A INPUT -s 192.168.1.3 -p tcp --dport 22 -j ACCEPT

El comando anterior dice busca los paquetes que se originan en la dirección IP 192.168.1.3, que tiene un protocolo TCP y que quiere entregar algo en el puerto 22 de mi computadora. Si encuentra esos paquetes, acéptelos.

La salida para el comando es: –

Pero, hay un problema con el comando anterior. En realidad, no permite los paquetes. ¿Puedes adivinar qué es?
SUGERENCIA: – Está relacionado con la forma en que se accede a las reglas.

Recuerde, como discutimos anteriormente, las reglas que establece en las iptables se verifican de arriba hacia abajo. Cada vez que un paquete se procesa según una de las reglas superiores, no se comprueba con las reglas inferiores.

¡De acuerdo! Aquí está la respuesta: –
En nuestro caso, el paquete se verificó con la regla superior, que dice que iptable debe descartar cualquier paquete que provenga de 192.168.1.3. Por lo tanto, una vez que se accedió al paquete a través de esta regla, no pasó a la siguiente regla que permitía que los paquetes llegaran al puerto 22. Por lo tanto, falló.

¿Qué se podría hacer?
La respuesta más fácil es agregar la regla al principio de la string. Todo lo que necesita hacer es cambiar la opción -A a la opción -I. (En nuestro escenario, primero eliminamos la regla [consulte la siguiente sección] agregada en la sección anterior y luego agregamos la regla a continuación nuevamente)

El comando para hacer eso es: –

sudo iptables -I INPUT -s 192.168.1.3 -p tcp --dport 22 -j ACCEPT

Ahora verifique la configuración de iptable usando el comando -L. El resultado sería:

Por lo tanto, cualquier paquete que provenga de 192.168.1.3 se verifica primero si va al puerto 22, si no es así, luego se
ejecuta a través de la siguiente regla en la string. De lo contrario, se le permite pasar el firewall.

Ahora que ha entendido cómo bloquear y aceptar el tráfico entrante, veamos cómo eliminar reglas:

3. Eliminar una regla de la iptable:

Sintaxis:-

sudo iptables -D chain_name rule_number

Ejemplo:-
Si queremos eliminar la regla que acepta el tráfico al puerto 22 y que hemos agregado en la sección anterior, entonces:-

sudo iptables -D INPUT 1

Recuerde que el número de regla comienza desde 1
La salida : –

4. Guardando su configuración:

Esta parte es innecesaria si la está implementando en una computadora personal que no es un servidor, pero si
está implementando un firewall en un servidor, entonces hay muchas posibilidades de que su servidor se corrompa y
pierda todos sus datos. Por lo tanto, siempre es mejor guardar sus configuraciones.

Hay muchas maneras de hacer esto, pero la forma más fácil que encuentro es con el paquete iptables-persistent . Puede descargar el paquete desde los repositorios predeterminados de Ubuntu:

sudo apt-get update
sudo apt-get install iptables-persistent

Una vez que se completa la instalación, puede guardar su configuración usando el comando:-

sudo invoke-rc.d iptables-persistent save

Bueno, este es el final del tutorial.
Resumamos todos los comandos que hemos aprendido hasta ahora: –

Resumen :

1. Enumere las reglas actuales de iptables:

sudo iptables -L

2. Para cambiar la política predeterminada:

sudo iptables -P Chain_name Action_to_be_taken

Ejemplo:-

sudo iptables -P FORWARD DROP

3. Para borrar/vaciar todas las reglas

sudo iptables -F

4. Para agregar una regla al final de la string:

sudo iptables -A

5. Para agregar una regla al comienzo de la string:

sudo iptables -I

6. Para implementar una regla ACEPTAR:-

sudo iptables -A/-I chain_name -s source_ip -j action_to_take

Ejemplo:-

iptables -A INPUT -s 192.168.1.3 -j ACCEPT

7. Para implementar una regla DROP:-

sudo iptables -A/-I chain_name -s source_ip -j action_to_take

Ejemplo:-

iptables -A INPUT -s 192.168.1.3 -j DROP

8. Reglas de implementación sobre puertos/protocolos específicos:-

sudo iptables -A/-I chain_name -s source_ip -p protocol_name --dport port_number -j Action_to_take

Ejemplo:-

sudo iptables -I INPUT -s 192.168.1.3 -p tcp --dport 22 -j ACCEPT

9. Para eliminar una regla:-

sudo iptables -D chain_name rule_number

Ejemplo:-

sudo iptables -D INPUT 1

10. Para guardar la configuración:-

sudo invoke-rc.d iptables-persistent save

Y ese es el final del tutorial. Hemos visto todos los comandos necesarios que necesita para implementar un firewall en su máquina local. Hay varias otras acciones que podemos hacer que nuestro firewall haga, pero es imposible cubrirlas todas en un solo artículo. Entonces, escribiré algunos artículos más explicando todos los comandos. Hasta entonces, ¡¡Sigue experimentando!!

Publicación traducida automáticamente

Artículo escrito por Naveen_Naidu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *