Biblioteca de Conocimiento Instrucciones sencillas para trabajar con el servicio Profitserver
Main Biblioteca de Conocimiento Configuración del firewall en Linux

Configuración del firewall en Linux


El firewall en Linux desempeña un papel vital en la seguridad de un sistema informático. Actúa como barrera, controlando y filtrando el tráfico de red para proteger el sistema de accesos no autorizados, ataques y otras amenazas. Sin un firewall correctamente configurado, el servidor podría ser vulnerable a diversos tipos de ciberataques, con graves consecuencias para la seguridad y la confidencialidad de los datos.

En este artículo, analizaremos dos herramientas principales para configurar el firewall de Linux: firewalld e iptables. Realizaremos un análisis comparativo de sus características, funcionalidad y ventajas. Además, proporcionaremos instrucciones detalladas para configurar y usar cada una de estas herramientas, y analizaremos las mejores prácticas para proteger su sistema con un firewall en la plataforma Linux. Todas las acciones se mostrarán en un... servidores virtuales con acceso de root.

Configuración de firewalld en Linux

Firewalld Firewall Daemon es un programa para administrar el firewall en sistemas operativos Linux. Proporciona una interfaz de usuario para configurar reglas de firewall, permitiendo o bloqueando conexiones de aplicaciones de red. Viene preinstalado por defecto en la mayoría de las distribuciones de servidor. Si Firewalld no está preinstalado, se puede instalar independientemente desde los repositorios oficiales de la distribución.

Para los sistemas Red Hat (como RHEL, CentOS, Fedora) la instalación se realiza con el comando:

yum install firewalld

Para Debian/Ubuntu:

apt-get install firewalld

Después de la instalación, se puede iniciar y activar inmediatamente con el comando:

systemctl start firewalld

A continuación, debes agregar el servicio al inicio:

systemctl enable firewalld
Agregar firewalld en la carga automática de Linux

En este punto, recomendamos deshabilitar ufw, ya que no se recomienda usar esta herramienta simultáneamente con firewalld o iptables. Verifique el estado:

systemctl status ufw
Comprobando ufw linux

Para detenerlo, ingrese el comando:

systemctl stop ufw

Para la desactivación completa:

ufw disable

Después de estas acciones, puedes proceder a configurar firewalld.

Primero, es necesario definir las zonas de confianza. Firewalld utiliza el concepto de zonas para determinar el nivel de confianza de las interfaces de red. A cada interfaz se le asigna una zona, y las reglas de firewall se aplican en función de ella. La lista de todas las zonas disponibles se abre con el comando:

firewall-cmd --get-zones

Normalmente se utilizan 4 zonas principales:

  1. Público:Esta zona es para redes que consideras inseguras;
  2. Privado:Se aplica a redes domésticas u otras conexiones de red confiables;
  3. Interno :Se utiliza para redes internas, como aquellas dentro de una organización o red corporativa;
  4. DMZ:En esta zona es donde normalmente se ubican los servidores que deben ser accesibles desde Internet.

Sin embargo, este es solo un ejemplo. Puedes agregar tu propia zona con el comando:

firewall-cmd --permanent --new-zone=nameyourzone

Después de agregar, es necesario recargar:

firewall-cmd --reload

Para eliminar una zona, se utiliza un método similar

firewall-cmd --permanent --delete-zone=nameyourzone

Tras definir las zonas, es necesario permitir el tráfico para los servicios y puertos necesarios. Para permitir un servicio específico, utilice el comando:

firewall-cmd --zone=public --add-service=name

¿Donde nombre Es el nombre del servicio. Por ejemplo, para permitir el tráfico de Apache:

firewall-cmd --zone=public --add-service=http

Para definir puertos permitidos, utilice el comando:

firewall-cmd --zone=public --add-port=number/protocol

Por ejemplo, el puerto estándar 22 para SSH se vería así:

firewall-cmd --zone=public --add-port=22/tcp

En esta etapa, las reglas principales ya están creadas. A continuación, determine cómo se procesará el tráfico según el origen, el destino, el puerto y otros criterios. Para agregar una regla (usando el... público zona como ejemplo):

firewall-cmd --zone=public rule

Por ejemplo, para permitir el tráfico entrante desde cualquier fuente al puerto 80 (HTTP):

firewall-cmd --zone=public --add-port=80/tcp --permanent

Para eliminar una regla:

firewall-cmd --permanent --remove-rule=rule_specification

¿Donde gobernar es el tipo de regla (por ejemplo, puerto, servicio, regla enriquecida, etc.), y especificación_de_reglas es la especificación de la regla misma.

Después de realizar cambios en la configuración de Firewalld, es necesario guardarlos y aplicarlos. Para guardar los cambios, use el comando:

firewall-cmd --runtime-to-permanent

Para aplicar los cambios:

firewall-cmd --reload

Una vez completada la configuración, puede verificar los parámetros seleccionados abriendo la lista de todas las reglas:

firewall-cmd --list-all
Reglas de Linux de firewalld

Si surge algún problema, verifique los registros de Firewalld con el comando:

journalctl -u firewalld

Nota: Solo hemos cubierto el algoritmo general para configurar la conexión. La herramienta tiene una amplia funcionalidad. Para obtener información completa sobre todas las opciones disponibles, puede usar documentación oficial o abrir ayuda:

firewall-cmd --help

Configuración de iptables en Linux

A diferencia de Firewalld, iptables es una herramienta más antigua, pero aún muy utilizada en Linux, para la gestión del firewall. Ofrece un enfoque más directo y flexible para las reglas de filtrado de paquetes a nivel del kernel de Linux. Sin embargo, iptables requiere conocimientos y experiencia más avanzados que Firewalld, lo que la hace menos accesible para principiantes. Compruebe la versión preinstalada de la herramienta con el comando:

iptables -V

Si la herramienta no está instalada, deberá instalarse. El comando para la instalación en Ubuntu y Debian es el siguiente:

apt install iptables

Para sistemas Red Hat (por ejemplo, CentOS, Fedora):

yum install iptables

El comando para la activación después de la instalación:

systemctl start iptables

Para agregar al inicio, ejecute:

systemctl enable iptables

Antes de comenzar a configurar iptables, es importante comprender su funcionamiento. La sintaxis del programa facilita este proceso. Su aspecto es el siguiente:

iptables -t table action chain additional_parameters

Profundicemos en cada elemento.

Iptables tiene cuatro tablas principales: filtro, nat, mangle y rawCada uno está diseñado para procesar ciertos tipos de paquetes y tiene sus propias cadenas de reglas:

  1. filtrarEsta es la tabla más utilizada, que contiene las reglas de filtrado de paquetes. Se utiliza para decidir si se permiten o rechazan paquetes.
  2. natEsta tabla se utiliza para modificar las direcciones de red y los puertos en los paquetes. Se suele usar para configurar el enmascaramiento (NAT).
  3. desaparecidoEn esta tabla, puede modificar los encabezados de los paquetes. Se utiliza para operaciones especializadas con paquetes, como el marcado.
  4. crudoEsta tabla se utiliza para configurar las reglas que se aplican antes de pasar por el sistema de seguimiento de conexiones. Se suele usar para configurar reglas que el sistema de seguimiento no debe modificar, como descartar paquetes de ciertas direcciones.

Cada tabla contiene un conjunto de cadenas. Las cadenas son una secuencia de reglas que se comprueban secuencialmente. Hay tres cadenas predefinidas:

  1. ENTRADA (entrante)Las reglas de esta cadena determinan qué hacer con los paquetes entrantes.
  2. SALIDA (saliente)Esta cadena se aplica a todos los paquetes que su computadora envía a otros dispositivos o computadoras en la red.
  3. ADELANTE (reenvío)Las reglas de esta cadena especifican qué hacer con los paquetes reenviados.

Finalmente, cada cadena posee una acción (objetivo). En la práctica, se utilizan cinco acciones principales:

  1. ACEPTAR:Permitir que el paquete pase a través del firewall.
  2. DROP:Rechazar el paquete y descartarlo sin ninguna respuesta.
  3. RECHAZAR:Rechazar el paquete y enviar al remitente un mensaje de error ICMP.
  4. LOG:Registre el paquete en el registro del sistema y realice otra acción (por ejemplo, ACEPTAR o DESECHAR).
  5. DEVOLUCION :Deja de verificar las reglas en la cadena actual y regresa a la cadena de llamada (si corresponde).

Para iniciar la configuración, abra la lista de reglas existentes con el comando:

iptables -L
Configuración del firewall en Linux

Como guía para configurar Iptables, veamos ejemplos prácticos de los comandos más comunes. Para mayor comodidad, dividiremos los ejemplos en tres grupos, según la cadena específica.

Transmisión ENTRADA:

  1. Permitir tráfico entrante a través del protocolo TCP en el puerto 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

2. Permitir el tráfico entrante a través del protocolo UDP en el puerto 22:

iptables -A INPUT -p udp --dport 22 -j ACCEPT

3. Bloquear el tráfico entrante desde una dirección IP específica:

iptables -A INPUT -s 192.168.1.100 -j DROP

Transmisión SALIDA:

  1. Permitir tráfico saliente a través del protocolo TCP en el puerto 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

2. Permitir el tráfico saliente a través del protocolo UDP en el puerto 80:

iptables -A OUTPUT -p udp --dport 80 -j ACCEPT

3. Bloquear el tráfico saliente a un puerto específico (por ejemplo, 21):

iptables -A OUTPUT -p tcp --dport 21 -j DROP

Transmisión ADELANTE:

  1. Bloquear el tráfico reenviado desde un rango específico de direcciones IP:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP

2. Bloquear el reenvío de paquetes desde una interfaz de red específica:

iptables -A FORWARD -i eth1 -j DROP

3. Limite la cantidad de conexiones simultáneas para un puerto específico (en este ejemplo, 10 conexiones por minuto en el puerto 80):

iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT

Como puede ver, en cada caso se utiliza un argumento adicional (comando). Para obtener una lista completa de posibles argumentos y la compatibilidad general con la funcionalidad de la herramienta, introduzca:

iptables -h
Lista de comandos de configuración de iptables para Linux

Para garantizar que la configuración sea correcta, vuelva a ingresar el comando para ver la lista de reglas:

iptables -L
Comprobación de las reglas de iptables en Linux

Para eliminar una regla específica, utilice el comando:

iptables -D chain rule_number

Por ejemplo, si desea eliminar la regla número 1 de la cadena INPUT, el comando se verá así:

iptables -D INPUT 1

Para eliminar todas las reglas con un solo comando:

iptables -F

Nota importanteLas reglas de iptables no se guardan automáticamente tras reiniciar el sistema o servicio. Para guardarlas, es necesario añadirlas a un archivo de configuración y restaurarlas tras el reinicio. iptables-guardar y restaurar iptables Las utilidades pueden ayudar con esto. Para guardar las reglas, introduzca el comando:

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

Esto guarda las reglas actuales de iptables en el archivo rules.v4. Para restaurarlas después de reiniciar, escriba:

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

Este comando restaura las reglas del archivo rules.v4.

Conclusión

Configurar un firewall en Linux con firewalld o iptables es fundamental para garantizar la seguridad del servidor. Ambas herramientas ofrecen métodos fiables para gestionar el tráfico de red y proteger el sistema de accesos no autorizados y ciberataques. La elección entre firewalld e iptables depende de las necesidades y preferencias específicas del usuario, considerando sus diferentes funcionalidades y ventajas.

❮ Artículo anterior Usuarios de Linux: administración y permisos
Siguiente artículo ❯ Diagnóstico de carga del servidor

Pregúntenos sobre VPS

Siempre estamos listos para responder sus preguntas en cualquier momento del día o de la noche.