Control de Accesibilidad del Sistema por el cortafuegos firewalld
Un cortafuegos es una manera para proteger máquinas desde cualquier accedo no deseado desde fuera. En Fedora, está instalado por defecto durante la instalación del sistema operativo, habilitado y configurado para proporcionar operación segura incluso sin ninguna acción adicional por el administrador. Bloquea cualquier acceso que ssh por defecto.
Como funciona
Un cortafuego habilita a usuarios para controlar tráfico de red entrante en máquinas host definiendo un conjunto de reglas de cortafuego. Estas reglas son utilizadas para ordenar el tráfico bien sea bloqueándolo o permitiéndolo.
firewalld is a firewall service daemon that provides a dynamic customizable host-based firewall with a D-Bus interface. Being dynamic, it enables creating, changing, and deleting the rules without the necessity to restart the firewall daemon each time the rules are changed.
firewalld emplea los conceptos de zonas y servicios, que simplifican la gestión de tráfico.
Zones con conjuntos predefinidos de reglas. Los interfaces de red y los orígenes pueden estar asignadas a una zona. El tráfico concedido depende en la red de su que su equipo esté conectado y el nivel de seguridad 3es asignado a esta red. Los servicios de cortafuego son reglas predefinidas que cubren todos los ajustes necesarios para conceder tráfico entrante para un servicio específico y se aplican internos a una zona.
Los Services utilizan uno o más puertos o direcciones para la comunicación de red. Los cortafuegos filtran la comunicación basada en puertos. Para conceder el tráfico de red de un servicio, sus puertos deben estar abiertos. firewalld bloquea todo el tráfico en los puertos que no están configurados explícitamente como abiertos. Algunas zonas, como las de confianza, permiten todo el tráfico por defecto.
For more information about using firewalld and configuring zones and services, see firewalld documentation or Fedora wiki:firewalld
Setting up firewalld
All Fedora Editions install, configure and activate the firewall by default. No further action is required. The only exception is Cloud Edition, which relies on the higher level cloud system.
Some third party variations and redistributions may differ. In this case, it is up to the administrator to install and activate the firewall afterwards.
You check if firewalld is set up in a terminal by issuing
$ systemctl status firewalld
Obtendrías algo como
● firewalld.service - firewalld - demonio de cortafuego dinámico
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset>
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: active (running) since Sat 2023-08-19 19:05:18 CEST; 3 days ago
...
Instalar y activar firewalld
En caso que obtenga el comando de arriba algo como
Unidad firewalld.service no pudo ser encontrado.
tiene que instalarlo. Ejecute en la línea de comando:
$ sudo dnf install firewalld
$ sudo systemctl unmask firewalld
$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld
Esta secuencia instala, inicia y asegura un reinicio automático tras un arranque del sistema.
Ajustando operaciones firewalld durante mantenimiento del sistema
A veces un administrador de sistema tiene que detener o reiniciar firewalld durante las tareas de mantenimiento del sistema.
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld
$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld
$ sudo systemctl mask firewalld
$ sudo systemctl unmask firewalld
Instalación del IGU firewall-config de la herramienta de configuración
Para usar el IGU de la herramienta de configuración de firewall-config, instale el paquete firewall-config como root:
$ sudo dnf install firewall-config
Alternativamente, en GNOME, use la tecla Super y teclee Software para lanzar la aplicación Software Sources. Teclee firewall en la caja de búsqueda que aparece después de seleccionar el botón de búsqueda en la esquina superior derecha. Seleccione el elemento Firewall de los resultados de la búsqueda y pulse el botón Install.
Para ejecutar firewall-config, utilice o bien el comando firewall-config o pulse la tecla Super para entrar en Vista de Actividades, teclee firewall y pulse Entrar.
Gestionar firewalld
Ver el estado actual de cortafuegos firewalld
El servicio cortafuegos, firewalld, está instalado en el sistema de forma predeterminada. Emplee la interfaz CLI firewalld para comprobar que el servicio está ejecutándose.
$ sudo firewall-cmd --state
Para más información sobre el estado del servicio, utilice el sub comando systemctl
$ sudo systemctl status firewalld
firewalld.service - firewalld - demonio del cortafuego dinámico
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor pr
Active: activo (ejecutándose) desde Lun 18/12/2017 16:05:15 CET; 50min
Docs: man:firewalld(1)
Main PID: 705 (firewalld)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/firewalld.service
└─705 /usr/bin/python3 -Es /usr/sbin/firewalld --nofork --nopid
Es más, es importante saber cómo está configurado firewalld y qué reglas están en vigor antes de intentar editar la configuración. Para exhibir los ajustes del cortafuegos, consulte Visualizando los ajustes actuales de firewalld
Visualizando los ajustes actuales de firewalld
Vista de servicios permitidos usando el IGU
To view the list of services using the graphical firewall-config tool, press the Super key to enter the Activities Overview, type firewall, and press Enter. The firewall-config tool appears. You can now view the list of services under the Services tab.
Alternativamente, para iniciar la herramienta gráfica de configuración de cortafuegos usando la línea de comandos, introduzca el siguiente comando:
$ firewall-config
Se abre la ventana Configuración de Cortafuegos. Tenga en cuenta que este comando puede ser ejecutado por un usuario normal, pero ocasionalmente se le pedirá una contraseña de administrador.
Visualización de los ajustes de firewalld usando CLI
Con el cliente CLI, es posible obtener vistas diferentes de los ajustes del cortafuegos actual. La opción --list-all muestra una vista previa completa de los ajustes de firewalld.
firewalld utiliza zonas para gestionar el tráfico. Si una zona no está especificada por la opción --zone, el comando es efectivo en la zona predeterminada asignada a la red activa del interfaz y conexión.
Para el listado de toda la información relevante para la zona por defecto:
$ firewall-cmd --list-all
público
destino: por defecto
icmp-block-inversion: no
interfaces:
orígenes:
servicios: ssh dhcpv6-client
puertos:
protocolos:
máscara: no
puertos-reenviados:
puertos-origen:
bloqueos-icmp:
reglas:
|
Para especificar la zona por la cual exhibe los ajustes, añada el argumento
|
Para ver los ajustes para información particular, tales como servicios o puertos, utilice una opción específica. Consulte las páginas del manual firewalld u obtenga un listado de las opciones utilizando el comando help:
$ firewall-cmd --help
Modo de empleo: firewall-cmd [OPCIONES…]
Opciones Generales
-h, --help Declara un texto de ayuda breve y sale
-V, --version Declara la cadena de la versión de firewalld
-q, --quiet No declara mensajes de estado
Opciones de Estado
--state Devuelve y declara el estado del cortafuegos firewalld
--reload Recarga cortafuegos y conserva información de estado
… [salida truncada]
Por ejemplo, para ver cuáles servicios son permitidos en la zona actual:
$ firewall-cmd --list-services
samba-client ssh dhcpv6-client
Enumerar los ajustes de una cierta sub‐parte utilizando la herramienta CLI puede algunas veces ser difícil de interpretar. Por ejemplo, si se concede el servicio SSH y firewalld abre el puerto (22) necesario para dicho servicio. Posteriormente, si enumera los servicios permitidos, el listado mostrará el servicio SSH, pero si se enumeran los puertos abiertos, no se mostrará ninguno. Por lo tanto, se recomienda emplear la opción --list-all para asegurarse de recibir información completa.
Parámetros de tiempo de ejecución y permanencias
Cualquier cambio hecho mientras firewalld esté en ejecución se perderá cuando sea reiniciado firewalld. Cuando firewalld es reiniciado, los ajustes se revierten a sus valores permanentes.
Estos cambios son dichos para hacerse en modo de tiempo de ejecución.
Para hacer los cambios persistentes a través de rearranques, aplíquelos de nuevo utilizando la opción --permanent. Alternativamente, para hacer cambios persistentes mientras firewalld está en ejecución, utilice la opción --runtime-to-permanent firewall-cmd.
Si realiza cambios mientras esté ejecutándose el cortafuegos firewalld utilizando solo la opción --permanent, no se vuelven efectivas hasta que firewalld sea reiniciado Sin embargo, reiniciar firewalld detiene el tráfico de red brevemente, causando disrupción en su sistema.
Cambiar parámetros en ejecución y configuración permanente utilizando CLI
Al utilizar la CLI, usted sólo puede modificar bien en el tiempo de ejecución o bien de modo permanente. Para modificar los ajustes del cortafuegos de modo permanente, use la opción --permanent con el comando firewall-cmd.
$ sudo firewall-cmd --permanent <otras opciones>
Sin esta opción, la instrucción modifica en modo de tiempo de ejecución. Para cambiar los ajustes en ambos modos usted puede usar dos métodos:
-
Cambiar los ajustes de tiempo de ejecución y después hacerlos permanente de la siguiente forma:
-
Cambio de los ajustes en tiempo de ejecución:
firewall-cmd <otras opciones> -
Use
--runtime-to-permanentpara hacer los cambios permanentes.firewall-cmd --runtime-to-permanent
-
-
Establece ajustes permanentes y recarga los parámetros en modo de tiempo de ejecución:
-
Hacer los cambios en modo permanente:
firewall-cmd --permanent <other options> -
Recargar los ajustes:
firewall-cmd --reload
-
El primer método le permite probar los ajustes antes de aplicarlos en modo permanente.
|
Es posible que un ajuste incorrecto puede llevar a que el usuario se bloquee a si mismo en la máquina. Para evitar esto use la opción Por ejemplo, para añadir el servicio SSH durante 15 minutos use este comando:
El servicio SSH estará disponible hasta que se quite tras 15 minutos. |
Controlar puertos utilizando firewalld
¿Qué son los puertos?
Los puertos son dispositivos lógicos que los habilita un sistema operativo para recibir y distinguir tráfico de red y reenviarlo de acuerdo con servicios del sistema. Usualmente son representados por un demonio que escucha en el puerto, que es esperado para cualquier tráfico que venga a este puerto.
Normalmente, los servicios del sistema escuchan en los puertos estándar reservados para ellos. El demonio httpd, por ejemplo, escucha en el puerto 80. Sin embargo, los administradores del sistema pueden configurar los demonios para que escuchen en puertos diferentes para mejorar la seguridad.
Abriendo un puerto
A través de abrir puertos, el sistema es accesible desde el exterior, lo cual representa un riesgo de seguridad. Generalmente, conserve los puertos cerrados y solo ábralos si son requeridos para ciertos servicios.
-
Obtiene un listado de puertos permitidos dentro de la zona actual:
$ sudo firewall-cmd --list-ports -
Agregue un puerto a los puestos permitidos para abrirlo para tráfico entrante:
$ sudo firewall-cmd --add-port=número_puerto/tipo_puerto -
Hacer los parámetros nuevos persistentes:
$ sudo firewall-cmd --runtime-to-permanent
Los tipos de puerto son tcp, udp, sctp, o dccp. El tipo debe coincidir con el tipo comunicación de red.
Cerrar un puerto
Cunado un puerto abierto no es necesario más, cierra ese puerto en firewalld. Es altamente recomendado cerrar todos los puertos no necesarios tan pronto como no se utilicen porque dejar un puerto abierto representa un riesgo de seguridad.
Para cerrar un puerto, retírelo desde el listado de puertos permitidos:
-
Enumera todos los puertos permitidos:
$ sudo firewall-cmd --list-portsEste comando solo le proporcionará una lista de los puertos que se han abierto como puertos. No podrá ver ningún puerto abierto que se haya abierto como servicio. Por lo tanto, debería considerar utilizar la opción --list-all en lugar de --list-ports.
-
Elimine el puerto de los puertos permitidos para cerrarlo al tráfico entrante:
$ sudo firewall-cmd --remove-port=port-number/port-type -
Hacer los parámetros nuevos persistentes:
$ sudo firewall-cmd --runtime-to-permanent
Want to help? Learn how to contribute to Fedora Docs ›