iptables

IPTables es una herramienta poderosa y flexible para administrar reglas de cortafuegos en sistemas Linux. Permite controlar y filtrar el tráfico de red entrante y saliente, lo que es esencial para mantener la seguridad y la integridad de un servidor. En este artículo, exploraremos cómo utilizar y aplicar IPTables correctamente en un entorno Linux.

1. Acceso al sistema

Antes de comenzar, asegúrate de tener acceso a un sistema Linux con privilegios de superusuario (root) o utiliza el comando sudo para ejecutar comandos con privilegios elevados.

2. Verificar si IPTables está instalado

En muchas distribuciones Linux, IPTables ya está preinstalado. Para verificar su estado, puedes usar el siguiente comando:

sudo iptables --version

Si IPTables no está instalado, puedes instalarlo utilizando el administrador de paquetes de tu distribución. Por ejemplo, en sistemas basados en Debian (como Ubuntu), puedes usar apt:

sudo apt-get install iptables

Y en sistemas basados en Red Hat (como CentOS), puedes utilizar yum:

sudo yum install iptables

3. Conociendo las tablas y las cadenas

IPTables organiza las reglas en "tablas" y "cadenas". Las tablas son categorías generales de reglas y las cadenas son listas de reglas específicas. Las tablas más comunes son:

  • filter: Utilizada para filtrar paquetes de red.
  • nat: Utilizada para redireccionar o modificar el tráfico de red.
  • mangle: Utilizada para modificar el contenido de los paquetes.

Las cadenas más comunes son:

  • INPUT: Para el tráfico entrante.
  • OUTPUT: Para el tráfico saliente.
  • FORWARD: Para el tráfico que pasa a través del servidor.

4. Visualización de las reglas actuales

Para ver las reglas de IPTables que están en vigencia, puedes usar el siguiente comando:

sudo iptables -L

5. Agregar reglas a IPTables

Para agregar reglas a IPTables, puedes usar el comando iptables. Por ejemplo, si deseas permitir el tráfico SSH (puerto 22) en un servidor, puedes utilizar el siguiente comando:

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

En este comando:

  • -A INPUT: Agrega la regla a la cadena INPUT.
  • -p tcp: Especifica el protocolo (en este caso, TCP).
  • --dport 22: Indica el puerto de destino (22 para SSH).
  • -j ACCEPT: Acción a realizar si la regla coincide (en este caso, permitir el tráfico).

6. Guardar las reglas

Las reglas de IPTables no se mantienen después de reiniciar el sistema, a menos que las guardes de manera permanente. Puedes utilizar el comando iptables-save para guardar tus reglas en un archivo:

sudo iptables-save > /etc/iptables/rules.v4

7. Restaurar reglas al reiniciar

Para cargar las reglas guardadas al reiniciar el sistema, puedes utilizar el comando iptables-restore. Por ejemplo:

sudo iptables-restore < /etc/iptables/rules.v4

8. Eliminar reglas

Para eliminar una regla de IPTables, puedes utilizar el comando iptables -D. Por ejemplo, si deseas eliminar la regla que permite SSH que agregamos anteriormente:

sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT

9. Denegar todo el tráfico y luego permitir explícitamente

Una buena práctica en seguridad es configurar IPTables para denegar todo el tráfico y luego permitir explícitamente lo que se requiere. Puedes lograr esto usando las siguientes reglas:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

Esto configurará las políticas predeterminadas para DROP en INPUT y FORWARD (denegando todo el tráfico) y ACCEPT en OUTPUT (permitiendo todo el tráfico saliente).

Luego, puedes agregar reglas para permitir el tráfico específico que necesitas, como SSH, HTTP, o cualquier otro servicio.

10. Guardar reglas de manera permanente

Para asegurarte de que tus reglas de IPTables se apliquen automáticamente después de cada reinicio, es importante guardarlas de manera permanente. Cada distribución Linux puede tener diferentes métodos para lograr esto. En sistemas basados en Debian, como Ubuntu, puedes utilizar el paquete iptables-persistent para guardar y cargar reglas automáticamente. En sistemas basados en Red Hat, como CentOS, puedes usar el comando iptables-save y iptables-restore en el inicio del sistema.

11. Ejemplo completo

Este ejemplo permite el tráfico SSH en el puerto 22 y el tráfico HTTP en el puerto 80 mientras deniega todo lo demás:

# Borrar todas las reglas existentes
sudo iptables -F
# Establecer políticas predeterminadas a DROP (denegar todo)
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
# Permitir el tráfico de loopback (localhost)
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
# Permitir el tráfico SSH (puerto 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Permitir el tráfico HTTP (puerto 80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Opcional: Permitir el tráfico HTTPS (puerto 443)
# sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Opcional: Permitir el tráfico DNS (puerto 53)
# sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
# sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT
# Denegar todo otro tráfico de entrada
# (Cualquier tráfico que no cumpla con las reglas anteriores será denegado)
# Guardar las reglas de manera permanente
sudo iptables-save > /etc/iptables/rules.v4
Este ejemplo comienza eliminando todas las reglas existentes y estableciendo políticas predeterminadas en DROP para INPUT y FORWARD (denegando todo el tráfico). Luego, se permiten explícitamente el tráfico de loopback, SSH y HTTP.

Puedes habilitar reglas adicionales según tus necesidades, como permitir el tráfico HTTPS o DNS, según las líneas comentadas en el ejemplo. Asegúrate de guardar las reglas de manera permanente con iptables-save para que se apliquen después de reiniciar el sistema. A medida que agregues más servicios y aplicaciones, deberás ajustar tus reglas de IPTables de acuerdo a tus necesidades específicas.

IPTables es una herramienta esencial para administrar la seguridad de un servidor Linux. Con una comprensión sólida de las tablas, cadenas y reglas, puedes controlar eficazmente el tráfico de red entrante y saliente. Recuerda que es importante seguir las mejores prácticas de seguridad y solo permitir el tráfico que sea necesario para el funcionamiento de tu servidor. Además, asegúrate de guardar tus reglas de manera permanente para que se apliquen de manera consistente después de cada reinicio del sistema.

 

Fuente: somoslibres

 

¿Quién está en línea?

Hay 2464 invitados y ningún miembro en línea