Introducción al comando Firewalld y Firewall-CMD en Linux
- 3254
- 636
- Sra. Lorena Sedillo
Objetivo
Aprenda los conceptos básicos detrás de Firewalld y cómo interactuar con él usando la utilidad Firewall-CMD
Requisitos
- Permisos de raíz
Dificultad
FÁCIL
Convenciones
- # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz
directamente como usuario raíz o mediante el uso desudo
dominio - ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado
Introducción
Desde la versión 7 de Rhel y Centos y la versión 18 de Fedora, Firewalld es el sistema de firewall predeterminado. Uno de sus rasgos más distintivos es su modularidad: funciona en el concepto de conexión zonas
. En este tutorial aprenderemos más al respecto y cómo interactuar con él usando el firewall-cmd
utilidad.
Un firewall basado en zonas
Firewalld es un firewall basado en la zona: cada zona se puede configurar para aceptar o negar algunos servicios o puertos, y por lo tanto con un nivel diferente de seguridad. Las zonas se pueden asociar con una o más interfaces de red. Por lo general, el firewalld viene con un conjunto de zonas preconfiguradas: para enumerar estas zonas, y más generalmente para interactuar con el firewall, usaremos el firewall-cmd
utilidad. Me estoy ejecutando en un sistema Fedora 27, verifiquemos cuáles son las zonas disponibles:
$ Firewall-CMD-Bloque de FedoraworkStation Bloque de FedoraworkStation de FedoraServer
Como puede ver, el comando anterior devuelve una lista de todas las interfaces disponibles en mi sistema. Su nombre es bastante indicativo de su propósito, pero necesitamos saber qué servicios y puertos están disponibles a través de ellos: la regla predeterminada general es que cada servicio o puerto se niega. Cada interfaz se configura con algunas excepciones, dependiendo de los servicios que deben permitirse. Si queremos tener una lista de todos los servicios asociados con una zona, podemos ejecutar firewall-cmd
con el --get-servicios
opción. Si una zona no se pasa explícitamente al comando, se consultará la zona predeterminada:
# firewall-cmd --list-todo public (activo) objetivo: inversión de bloque ICMP predeterminada: no interfaces: ass5f5 fuentes: servicios: ssh mdns dhcpv6-client puertos: protocolos: mascarada: sin puerto de vana: puertos fuente: Blocks ICMP: Reglas ricas:
El comando devolvió un resumen del estado de la zona (en este caso el predeterminado, "público"). Entre las otras cosas, puede ver claramente qué interfaces de red están asociadas con esta zona (ENS5F5 en este caso) y qué servicios están permitidos (SSH, MDNS, DHCPV6-Client) en ella. Si queremos recuperar información sobre una zona específica y no defectuosa, debemos pasar el nombre de la zona como argumento al --zona
opción. Por ejemplo, para recuperar información sobre el externo
Zona, correríamos:
# firewall-cmd --zone = externo --lista-todo objetivo externo: inversión de bloque ICMP predeterminada: no interfaces: fuentes: servicios: puertos ssh: protocolos: mascarada: Sí hacia adelante : reglas ricas:
Manipulación de zonas
Como se dijo antes, cuando se usa el firewall-cmd
herramienta, si no se especifica ninguna zona, se hace referencia a la predeterminada. Es posible que deseemos cambiar cuál es la zona predeterminada. Digamos, por ejemplo, queremos establecer la zona externa como el valor predeterminado:
# firewall-cmd --set-default = externo
Preathy fácil, ¿no es así??. Ahora veamos cómo podemos agregar o eliminar servicios o puertos a una zona específica. En primer lugar servicios
son un conjunto preconfigurado de puertos asociados con un protocolo específico. Por ejemplo: el ssh
el servicio incluirá el Puerto TCP 22
, mientras que la samba
El servicio comprenderá el conjunto de puertos 139 y 445 TCP
y 137 y 138 UDP
. Usando servicios podemos evitar tener que recordar puertos específicos cada vez. Digamos que queremos agregar el samba
servicio a la zona externa, todo lo que haríamos es:
# firwall-cmd --zone = externo --add-service = samba éxito
El cortafuegos
Daemon respondió con éxito
, Eso significa que la ejecución fue exitosa. Para verificarlo, verifiquemos los servicios de zona:
$ sudo firewall-cmd --zone = externo --list-sservices ssh samba
Como puede ver, usamos el --servicios de lista
Opción para el propósito. El resultado del comando significa claramente que el samba
El servicio se ha agregado a la zona. Sin embargo, las modificaciones realizadas de esta manera son temporales y no sobrevivirán a un reinicio del cortafuegos
demonio. Vamos a verificarlo. Primero recargamos el servicio:
# Firewall-CMD-Reload
Luego verificamos nuevamente los servicios permitidos en el externo
zona:
# firewall-cmd --zone = external --list-servicios ssh
Como puede ver, el único servicio permitido en el externo
la zona es ssh
. Para hacer una modificación persistente a una zona, debemos usar el --permanente
opción:
# firewall-cmd --Permanent --zone = externo --add-service = samba
Las modificaciones permanentes necesitarán una recarga de firewall para volverse efectivas.
Si queremos realizar la operación inversa y, por lo tanto, elimine un servicio de una zona, ejecutaríamos:
# firewall-cmd --Permanent --zone = externo--Remove-Service = samba
La sintaxis es muy intuitiva y no necesita más explicación. Pero, ¿qué pasa si queremos agregar un puerto específico en lugar de servicio?? La sintaxis cambiaría ligeramente:
# firewall-cmd --Permanent --zone = externo --add-port = 139/tcp
Para verificar que el puerto se haya agregado a la zona:
# firewall-cmd --zone = externo --list-puertos 139/tcp
La operación ha tenido éxito. De la misma manera, para eliminar un puerto que haríamos:
# firewall-cmd --Permanent --zone = externo--Remove-Port = 139/TCP
Creando una zona personalizada
Hasta ahora, solo vimos cómo modificar las zonas existentes. También es posible crear algunos nuevos, y es igual de fácil. Supongamos que queremos crear una zona personalizada llamada LinuxConfig
:
# Firewall-CMD --Permanent--New-Zone = LinuxConfig
Se ha creado una nueva zona vacía: por defecto, no se permiten servicios ni puertos en ella. También es posible crear una zona cargando un archivo de configuración:
# Firewall-CMD --Permanent--New-Zone-From-File = File--Name = LinuxConfig
Dónde archivo
¿Es la ruta al archivo que contiene la definición de zona?. Observe que al crear o eliminar una zona la --permanente
La opción es obligatoria: se planteará un error si no se proporciona.
Asociar una zona con una interfaz
Crear una zona es solo el primer paso: ahora debemos asociarla con una interfaz de red. Supongamos que queremos usar nuestra nueva zona creada, asociándola con la interfaz ENTERNET ESS5F5: aquí está el comando que nos permite realizar la tarea:
# firewall-cmd --Permanent --zone = linuxconfig --add-interface = ens5f5
Si consultamos la zona para las interfaces asignadas, deberíamos ver:
# firewall-cmd --zone = linuxconfig --list-interfaces ens5f5
Eliminar la interfaz de la zona es tan fácil como:
# firewall-cmd--Remove-Interface = Ens5f5 --zone = LinuxConfig
Reglas ricas
En ciertas situaciones, es posible que necesitemos crear una regla más compleja, y no solo permitir algunos puertos o servicios en una zona. Por ejemplo, es posible que deseemos crear una regla para bloquear algún tipo de tráfico de una máquina específica. Eso es lo que reglas ricas
son para. Básicamente, una regla consiste en dos partes: en la primera, especificamos las condiciones que deben cumplirse para la regla que se aplicará, y en el segundo la acción que se ejecutará: aceptar
, gota
, o rechazar
.
Digamos que queremos bloquear el tráfico de la máquina con IP 192.168.0.37
En la red local: aquí está cómo componiríamos nuestra regla:
# firewall-cmd --zone = linuxconfig --add-rich-rule = "regla \ familiar =" ipv4 "\ fuente de fuente = 192.168.0.37 \ Service Name = ssh \ rechazar \
Para agregar una regla rica, usamos el --regla rica
opción, describiendo la regla como su argumento. La regla comienza con regla
palabra clave. Con familia
Especificamos que la regla a la que se aplica solo se aplica IPv4
paquetes: si esta palabra clave no se proporciona, la regla se aplica tanto a IPv4
y IPv6
. Luego proporcionamos la dirección fuente que los paquetes deben tener para que la regla se active con Dirección de la fuente
. Con servicio
Especificamos el tipo de servicio para la regla, en este caso ssh
. Finalmente, proporcionamos la acción que se ejecutará si un paquete coincide con la regla, en este caso rechazar
. Si ahora intentamos establecer una conexión SSH de la máquina con el 192.168.0.37
ip, recibimos:
SSH 192.168.0.35 SSH: conéctese al host 192.168.0.35 Puerto 22: la conexión rechazada
El anterior es realmente simple, pero una regla puede volverse realmente compleja. Debe consultar la documentación de firewalld para ver toda la gama de configuraciones y opciones disponibles.
El modo de pánico
El modo de pánico es un modo que debe usarse solo en situaciones en las que hay problemas realmente serios con el entorno de red. Cuando este modo está activo, todas las conexiones existentes se descartan y se eliminan todos los paquetes entrantes y salientes. Se puede habilitar en ejecución:
# Firewall-CMD-Panic-On
Para salir del modo de pánico, el comando es:
# Firewall-CMD-Panic-Off
Incluso es posible consultar el modo de pánico
Estado, en ejecución:
# Firewall-CMD-Query-Panic
Esas opciones son válidas solo en tiempo de ejecución
y no se puede usar con --permanente
.
Tutoriales de Linux relacionados:
- Cosas para instalar en Ubuntu 20.04
- Una introducción a la automatización, herramientas y técnicas de Linux
- Cómo definir una zona de firewalld personalizada
- Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
- Descarga de Linux
- Mint 20: Mejor que Ubuntu y Microsoft Windows?
- Mastering Bash Script Loops
- Ubuntu 20.04 trucos y cosas que quizás no sepas
- Comandos de Linux: los 20 comandos más importantes que necesitas ..
- Archivos de configuración de Linux: los 30 principales más importantes
- « Cómo instalar y verificar la billetera electrum bitcoin en Linux
- Cómo obtener información de la batería de una computadora portátil y estado de carga en Linux »