Secure Linux Iptables

Cómo proteger su escritorio Linux con Iptables

Linux puede tener una reputación de seguridad, pero no es perfecto. Muchas distribuciones tampoco tienen los mejores valores predeterminados de seguridad, por lo que es mejor implementar algunas de las mejores prácticas de seguridad. Un ejemplo de ello es el uso de un cortafuegos.

Hay algunas opciones para los cortafuegos en Linux, pero la mayoría son solo envoltorios alrededor de iptables. Para esta guía, le mostraremos cómo trabajar directamente con iptables.

¿Qué es Iptables?

Iptables es el cortafuegos del kernel de Linux. Viene con todas las distribuciones de Linux y es la forma más directa de controlar el tráfico que entra y sale de su computadora.

Iptables tiene fama de ser complejo, y puede serlo. Sin embargo, no necesita saber todo sobre iptables para usarlo de manera efectiva en su escritorio. Solo necesita algunos conocimientos básicos de cómo funciona y cómo se estructuran sus reglas.

Estructura de mando

Todas las reglas de iptables siguen la misma estructura básica. Cada regla es un comando de una sola línea para iptables que le indica cómo manejar el tráfico en un puerto específico. Eche un vistazo al siguiente ejemplo:

-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 80 -j ACCEPT

Eso puede parecer mucho, pero es realmente simple cuando lo desglosas. En primer lugar, esta regla comienza con -A porque se agregará a las reglas de iptables.

A continuación, el -i flag especifica la interfaz para la que es la regla. En este caso, es eth0. Cuando escriba sus propias reglas, asegúrese de saber a través de qué interfaz está conectado a su red.

La siguiente bandera, -p, nombra el protocolo. Esta regla es para tcpque es el tráfico web.

los -m La bandera es un poco diferente. Se utiliza para afirmar que existe una condición que debe cumplirse para que el tráfico no sea rechazado. La condición en esta regla es el estado.

El estado es en realidad la siguiente bandera. tienes que dar --state una lista de estados aceptables escritos en mayúsculas y separados por comas. Esta regla acepta tanto conexiones nuevas como establecidas.

La penúltima bandera aquí es --sport. Significa «puerto de origen» y le dice a iptables de dónde proviene el tráfico. También hay una --dport bandera que significa «puerto de destino». Es usado para OUTPUT reglas para manejar de qué puerto llega el tráfico.

Finalmente, está el -j bandera. Le dice a iptable a qué acción «saltar». En este caso debería ACCEPT el tráfico que cumpla las condiciones anteriores.

Usando un archivo

Puede ingresar sus reglas en iptables manualmente una por una. Eso es increíblemente tedioso y es muy fácil perder la noción de dónde estás y qué estás haciendo. Es mucho mejor crear un archivo de reglas que pueda importar a iptables de una sola vez.

No importa dónde crees el archivo. La gente incluso los hace en el /tmp porque iptables almacena el resultado después de importarlo.

Crea tu archivo. Esta guía va a utilizar /tmp/iptables-ip4. En el archivo agregue las siguientes dos líneas. Todas sus reglas irán entre ellos.

*filter
 
# Your Rules Here
 
COMMIT

Crea tus reglas

Puede comenzar a configurar sus reglas. Estas son solo sugerencias. Obviamente, si está ejecutando otros servicios o necesita abrir otros puertos, ciertamente puede modificar algunas cosas o agregar sus propias reglas.

Bucle invertido

La interfaz loopback es una interfaz interna que utiliza Linux.

-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

Silbido

Esta es una cuestión de preferencia. A muchas personas no les gusta permitir ping en absoluto en sus escritorios. Sin embargo, puede ser útil tenerlo para probar las conexiones. Si desea permitir el ping, agregue las reglas a continuación. Si no lo hace, exclúyalos.

-A INPUT -i eth0 -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT
-A INPUT -i eth0 -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o eth0 -p icmp -j ACCEPT

La web

Obviamente, desea poder conectarse a la Web. Por otro lado, no desea permitir conexiones que se originen en Internet.

-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 443 -j ACCEPT
 
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -j ACCEPT

También necesitará permitir conexiones DNS para que su computadora pueda usar URL en lugar de solo direcciones IP porque eso no sería muy conveniente. Sustituya la dirección IP de su enrutador por la utilizada aquí.

-A INPUT -i ens3 -s 192.168.1.1 -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o ens3 -d 192.168.1.1 -p udp --dport 53 -m udp -j ACCEPT

Tiempo

La mayoría de los escritorios Linux usan NTP para establecer y mantener la hora del sistema desde Internet. Debe permitir que su computadora se conecte a un servidor NTP para obtener la hora.

-A INPUT -i eth0 -p udp -m state --state ESTABLISHED,RELATED --dport 123 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 123 -j ACCEPT

Impresión

A menos que esté utilizando una impresora USB o un servidor de impresión externo, debe habilitar las conexiones a CUPS.

-A INPUT -p udp -m udp --dport 631 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 631 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 631 -j ACCEPT

Correo electrónico

Probablemente también desee poder enviar y recibir correos electrónicos. El correo electrónico puede ser complicado. Los puertos permitidos aquí son los puertos de correo electrónico SSL. Si necesita usar correo electrónico no seguro, sustituya esos puertos.

# IMAP
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 993 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 993 -j ACCEPT
 
# POP3
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 995 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 995 -j ACCEPT
 
# SMTP
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED --sport 465 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 465 -j ACCEPT

SSH

Para utilizar completamente las conexiones SSH, debe permitir tanto la entrada como la salida a través de SSH.

# Input
-A INPUT -i ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 22 -j ACCEPT
-A OUTPUT -o ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT
# Output
-A OUTPUT -o ens3 -p tcp -m state --state NEW,ESTABLISHED --dport 22 -j ACCEPT
-A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT

DHCP

La mayoría de los escritorios Linux usan DHCP para recibir automáticamente una dirección IP de un enrutador. DHCP usa sus propios puertos, por lo que también deben ser accesibles. Si está utilizando una IP estática, no necesita estas reglas.

-A INPUT -i eth0 -p udp -m state --state ESTABLISHED,RELATED --sport 67:68 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 67:68 -j ACCEPT

Rechazar todo lo demás

Finalmente, le dirá a iptables que rechace absolutamente todo lo que no permitió explícitamente en las reglas anteriores.

-A INPUT -j REJECT
-A FORWARD -j REJECT
-A OUTPUT -j REJECT

Después de todo, sus reglas deberían parecerse a estas.

reglas de iptables

Importación de sus reglas

Ahora tiene una lista de reglas de iptables totalmente funcional. Solo necesita pasarlo a iptables para usarlo.

En caso de que se hayan agregado algunas reglas con el tiempo, bórrelas. Después de estos comandos, verá los valores predeterminados que permiten todo.

sudo iptables -F && sudo iptables -X

Iptables reglas claras

Una vez que se hayan ido, puede restaurar los nuevos desde el archivo que creó.

sudo iptables-restore < /tmp/itpables-ip4

Su computadora ahora está usando las nuevas reglas de iptables. Puedes echarles un vistazo.

Lista de reglas de Iptables

Sin embargo, aún no son permanentes. Si reinicia su computadora ahora, tendrá una De Verdad mal momento.

Hacerlos permanentes

Hay varias formas de hacer que las reglas sean permanentes. Son diferentes para cada distribución. Esta guía se centrará en los sistemas basados ​​en Debian y Ubuntu, ya que son los más populares.

Hay un paquete disponible, llamado iptables-persistant, que se encarga de guardar y restaurar iptables. Todo lo que tienes que hacer es instalarlo.

sudo apt install iptables-persistent

Guardar reglas de Iptables

Durante la instalación, el paquete le preguntará si desea guardar su configuración. Seleccione «Sí».

En el futuro, si desea agregar reglas, puede guardar nuevamente ejecutando el siguiente comando.

sudo service netfilter-persistent save

Ahora tiene el control del tráfico que fluye a través de su computadora. Ciertamente hay más que puede hacer con iptables, pero primero debe sentirse seguro con lo básico.

Deja un comentario

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

Experto Geek - Tu Guía en Tendencias Tecnológicas