Configuración Práctica de Firewall con Iptables: Reglas Esenciales para Servidores Linux

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 8,62 KB

Configuración de un Firewall con Iptables: Preguntas y Respuestas

A continuación, se resuelven varias dudas comunes sobre la configuración de reglas en iptables, el firewall de línea de comandos para sistemas Linux, abordando escenarios prácticos para la administración de servidores.

¿Cómo permitir el acceso total desde una IP específica a nuestro firewall con una política por defecto de DROP?

Para permitir que una IP específica, por ejemplo 210.195.55.15, tenga acceso completo, necesitamos añadir reglas a las cadenas INPUT y OUTPUT para aceptar sus paquetes. Esto es útil para crear una excepción para una IP de administración.

# Permite todo el tráfico entrante desde la IP especificada
iptables -A INPUT -s 210.195.55.15 -j ACCEPT

# Permite todo el tráfico saliente hacia la IP especificada
iptables -A OUTPUT -d 210.195.55.15 -j ACCEPT

¿Qué función cumplen estas reglas de FORWARD para el puerto 80?

iptables -A FORWARD -d 211.34.149.2 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 211.34.149.2 -p tcp --sport 80 -j ACCEPT

Estas reglas permiten el reenvío (forwarding) de paquetes a través del firewall destinados al servidor web en la IP 211.34.149.2. La primera regla permite las peticiones entrantes al puerto 80 (HTTP), y la segunda permite las respuestas salientes desde ese mismo puerto.

¿Qué puertos se deben habilitar para un servidor de correo?

Para un servidor de correo electrónico estándar, es necesario habilitar los siguientes puertos:

  • Puerto 25 (SMTP): Para el envío de correos.
  • Puerto 110 (POP3): Para la recepción de correos mediante el protocolo POP3.
  • Puerto 143 (IMAP): Para la recepción de correos mediante el protocolo IMAP.

Nota: También es común utilizar las versiones seguras de estos protocolos, como SMTPS (465), POP3S (995) e IMAPS (993).

¿Cuáles serían las reglas de iptables para habilitar los servicios de correo?

Suponiendo que el servidor de correo está en la IP 211.34.149.3, las reglas genéricas para permitir el tráfico reenviado serían las siguientes, sustituyendo (número de puerto correspondiente) por 25, 110, 143, etc.

# Regla para el tráfico entrante al puerto del servicio
iptables -A FORWARD -d 211.34.149.3 -p tcp --dport (número de puerto correspondiente) -j ACCEPT

# Regla para el tráfico de respuesta saliente desde el puerto del servicio
iptables -A FORWARD -s 211.34.149.3 -p tcp --sport (número de puerto correspondiente) -j ACCEPT

¿Cómo se permite el acceso para la gestión SNMP desde una IP específica?

Para permitir que nuestra IP de gestión (210.195.55.15) acceda al servicio SNMP en el servidor 211.34.149.3, se utilizan las siguientes reglas. SNMP utiliza el protocolo UDP.

# Permite las peticiones SNMP desde nuestra IP al servidor
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p udp --dport 169 -j ACCEPT

# Permite las respuestas SNMP desde el servidor a nuestra IP
iptables -A FORWARD -s 211.34.149.3 -d 210.195.55.15 -p udp --sport 169 -j ACCEPT

Nota importante: Estas reglas abren el puerto 169/UDP. El puerto estándar para las peticiones SNMP es el 161/UDP y para las traps es el 162/UDP. Asegúrese de que el puerto 169 es el que su servicio SNMP está utilizando.

¿Cómo habilitar el acceso de gestión remota (SSH) desde nuestra IP?

Para gestionar remotamente el servidor 211.34.149.3 desde nuestra IP 210.195.55.15, típicamente se usa el protocolo SSH en el puerto 22.

# Permite la conexión SSH entrante desde nuestra IP
iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p tcp --dport 22 -j ACCEPT

# Permite el tráfico de respuesta de la sesión SSH
iptables -A FORWARD -s 211.34.149.3 -d 210.195.55.15 -p tcp --sport 22 -j ACCEPT

¿Cómo permitir el acceso a un servidor de noticias (NEWS/NNTP)?

Para habilitar el acceso al servidor de noticias (NNTP) en la IP 211.34.149.5, se pueden usar las siguientes reglas. El alias news generalmente corresponde al puerto 119/TCP.

# Permite el tráfico entrante al servidor de noticias
iptables -A FORWARD -d 211.34.149.5 -p tcp --dport news -j ACCEPT

# Permite el tráfico de respuesta saliente del servidor de noticias
iptables -A FORWARD -s 211.34.149.5 -p tcp --sport news -j ACCEPT

¿Cómo denegar el resto del tráfico a un servidor una vez abiertos los puertos necesarios?

Después de haber creado las reglas ACCEPT específicas para los servicios que queremos permitir (como el servidor NEWS), podemos añadir una regla al final de la cadena FORWARD para denegar todo el demás tráfico dirigido a ese servidor.

# Deniega (DROP) cualquier otro paquete reenviado al servidor 211.34.149.5
iptables -A FORWARD -d 211.34.149.5 -j DROP

Importante: Esta regla debe ser una de las últimas en la cadena para la IP de destino, ya que iptables procesa las reglas en orden. Las reglas de aceptación deben ir primero.

¿Cómo abrir los puertos FTP para una IP específica?

Para permitir el acceso FTP desde la IP 80.37.45.194 al propio firewall (cadena INPUT), se deben abrir los puertos 20 (datos) y 21 (control).

# Permite conexiones entrantes FTP desde la IP especificada
iptables -A INPUT -s 80.37.45.194 -p tcp --dport 20:21 -j ACCEPT

# Permite el tráfico de respuesta saliente hacia la IP
iptables -A OUTPUT -d 80.37.45.194 -p tcp --sport 20:21 -j ACCEPT

Nota: Esta configuración es para FTP en modo activo. Para FTP en modo pasivo, se requiere una configuración adicional y la carga del módulo de seguimiento de conexiones de FTP (nf_conntrack_ftp).

¿Qué acción se debe tomar con el puerto 80 en un servidor web?

El puerto 80 es el puerto estándar para el tráfico HTTP. Si el equipo funciona como un servidor web, este puerto debe estar abierto para permitir las conexiones entrantes de los visitantes.

Considerando la respuesta anterior, ¿cómo se implementan las reglas para el puerto 80?

Para abrir el puerto 80 (HTTP) a cualquier origen, se aplican las siguientes reglas en las cadenas INPUT y OUTPUT del firewall.

# Permite todas las conexiones entrantes al puerto 80 (HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Permite todo el tráfico de respuesta saliente desde el puerto 80
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

¿Qué efecto tiene el comando `iptables -A INPUT -p tcp --dport 1:1024 -j DROP`?

Este comando añade una regla a la cadena INPUT que deniega (DROP) todos los paquetes TCP entrantes destinados a los puertos del 1 al 1024 (conocidos como puertos privilegiados o del sistema) desde cualquier dirección IP de origen (0.0.0.0/0 es un alias para cualquier IP).

iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP

En la práctica, bloquea el acceso a todos los servicios estándar que operan en ese rango de puertos.

¿Es posible permitir todo el tráfico del localhost?

Sí, y es una práctica de configuración fundamental y muy recomendada. Se debe permitir todo el tráfico que se origina y destina a la interfaz de loopback (lo), ya que muchos servicios locales dependen de ella para comunicarse.

# Permite todo el tráfico entrante en la interfaz de loopback
iptables -A INPUT -i lo -j ACCEPT

# Permite todo el tráfico saliente en la interfaz de loopback
iptables -A OUTPUT -o lo -j ACCEPT

¿Cómo habilitar el acceso a una base de datos desde una IP autorizada?

Para permitir que una IP conocida, como 231.45.134.23, acceda a un servicio de base de datos (por ejemplo, MySQL/MariaDB que usa el puerto 3306 por defecto), se deben aplicar las siguientes reglas:

# Permite la conexión entrante desde la IP autorizada al puerto de la BBDD
iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT

# Permite el tráfico de respuesta saliente hacia la IP autorizada
iptables -A OUTPUT -d 231.45.134.23 -p tcp --sport 3306 -j ACCEPT

Entradas relacionadas: