Androide

Cómo configurar y administrar el firewall en centos 8

SELinux en Centos 8 - Como habilitarlo o deshabilitarlo

SELinux en Centos 8 - Como habilitarlo o deshabilitarlo

Tabla de contenido:

Anonim

Un firewall es un método para monitorear y filtrar el tráfico de red entrante y saliente. Funciona definiendo un conjunto de reglas de seguridad que determinan si se permite o bloquea el tráfico específico. Un firewall configurado correctamente es uno de los aspectos más importantes de la seguridad general del sistema.

CentOS 8 se envía con un demonio de firewall llamado firewalld. Es una solución completa con una interfaz D-Bus que le permite administrar el firewall del sistema de forma dinámica.

En este tutorial, hablaremos sobre cómo configurar y administrar el firewall en CentOS 8. También explicaremos los conceptos básicos de FirewallD.

Prerrequisitos

Para configurar el servicio de firewall, debe iniciar sesión como root o usuario con privilegios de sudo.

Conceptos básicos de Firewalld

firewalld utiliza los conceptos de zonas y servicios. Según las zonas y los servicios que configurará, puede controlar qué tráfico está permitido o bloqueado hacia y desde el sistema.

Firewalld se puede configurar y administrar mediante la utilidad de línea de comandos firewall-cmd .

En CentOS 8, iptables se reemplaza por nftables como el servidor de seguridad predeterminado para el demonio firewalld.

Zonas Firewalld

Las zonas son conjuntos predefinidos de reglas que especifican el nivel de confianza de las redes a las que está conectada su computadora. Puede asignar interfaces y fuentes de red a una zona.

A continuación se muestran las zonas proporcionadas por FirewallD ordenadas según el nivel de confianza de la zona de no confiable a confiable:

  • drop: todas las conexiones entrantes se eliminan sin ninguna notificación. Solo se permiten conexiones salientes. bloque: todas las conexiones entrantes se rechazan con un mensaje de icmp6-adm-prohibited icmp-host-prohibited para IPv4 y icmp6-adm-prohibited para IPv6n. Solo se permiten conexiones salientes. público: para uso en áreas públicas no confiables. No confía en otras computadoras en la red, pero puede permitir conexiones entrantes seleccionadas. externo: para usar en redes externas con enmascaramiento NAT habilitado cuando su sistema actúa como puerta de enlace o enrutador. Solo se permiten conexiones entrantes seleccionadas. interno: para usar en redes internas cuando su sistema actúa como puerta de enlace o enrutador. Otros sistemas en la red son generalmente confiables. Solo se permiten conexiones entrantes seleccionadas. dmz: Usado para computadoras ubicadas en su zona desmilitarizada que tienen acceso limitado al resto de su red. Solo se permiten conexiones entrantes seleccionadas. trabajo: Utilizado para máquinas de trabajo. Otras computadoras en la red son generalmente confiables. Solo se permiten conexiones entrantes seleccionadas. hogar: utilizado para máquinas domésticas. Otras computadoras en la red son generalmente confiables. Solo se permiten conexiones entrantes seleccionadas. confiable: se aceptan todas las conexiones de red. Confíe en todas las computadoras en la red.

Servicios de firewall

Los servicios Firewalld son reglas predefinidas que se aplican dentro de una zona y definen la configuración necesaria para permitir el tráfico entrante para un servicio específico. Los servicios le permiten realizar fácilmente varias tareas en un solo paso.

Por ejemplo, el servicio puede contener definiciones sobre cómo abrir puertos, reenviar tráfico y más.

Firewalld Runtime y configuraciones permanentes

Firewalld usa dos conjuntos de configuración separados, tiempo de ejecución y configuración permanente.

La configuración de tiempo de ejecución es la configuración real en ejecución y no persiste en el reinicio. Cuando se inicia el demonio firewalld, carga la configuración permanente, que se convierte en la configuración de tiempo de ejecución.

De manera predeterminada, cuando se realizan cambios en la configuración de Firewalld utilizando la utilidad firewall-cmd , los cambios se aplican a la configuración de tiempo de ejecución. Para que los cambios sean permanentes, agregue la opción --permanent al comando.

Para aplicar los cambios en ambos conjuntos de configuración, puede usar uno de los dos métodos siguientes:

  1. Cambie la configuración del tiempo de ejecución y hágalo permanente:

    sudo firewall-cmd sudo firewall-cmd --runtime-to-permanent

    Cambia la configuración permanente y recarga el demonio firewalld:

    sudo firewall-cmd --permanent sudo firewall-cmd --reload

Habilitar FirewallD

En CentOS 8, firewalld está instalado y habilitado de manera predeterminada. Si por alguna razón no está instalado en su sistema, puede instalar e iniciar el demonio escribiendo:

sudo dnf install firewalld sudo systemctl enable firewalld --now

Puede verificar el estado del servicio de firewall con:

sudo firewall-cmd --state

Si el firewall está habilitado, el comando debería imprimir en running . De lo contrario, verá que not running .

Zonas Firewalld

La zona predeterminada es la que se usa para todo lo que no está asignado explícitamente a otra zona.

Puede ver la zona predeterminada escribiendo:

sudo firewall-cmd --get-default-zone

public

Para obtener una lista de todas las zonas disponibles, escriba:

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

Para ver las zonas activas y las interfaces de red asignadas a ellas:

sudo firewall-cmd --get-active-zones

El resultado a continuación muestra que las interfaces eth0 y eth1 están asignadas a la zona public :

public interfaces: eth0 eth1

Puede imprimir los ajustes de configuración de zona con:

sudo firewall-cmd --zone=public --list-all

public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

De la salida anterior, podemos ver que la zona pública está activa y usa el objetivo predeterminado, que es REJECT . El resultado también muestra que la zona es utilizada por las interfaces eth0 y eth1 y permite el tráfico del cliente DHCP y SSH.

sudo firewall-cmd --list-all-zones

El comando imprime una lista enorme con la configuración de todas las zonas disponibles.

Cambiar el objetivo de la zona

El objetivo define el comportamiento predeterminado de la zona para el tráfico entrante que no se especifica. Se puede establecer en una de las siguientes opciones: default , ACCEPT , REJECT y DROP .

Para establecer el objetivo de la zona, especifique la zona con la opción --zone y el objetivo con la opción --set-target .

Por ejemplo, para cambiar el objetivo de la zona public a DROP , ejecutarías:

sudo firewall-cmd --zone=public --set-target=DROP

Asignación de una interfaz a una zona diferente

Puede crear conjuntos específicos de reglas para diferentes zonas y asignarles diferentes interfaces. Esto es especialmente útil cuando tiene múltiples interfaces en su máquina.

Para asignar una interfaz a una zona diferente, especifique la zona con la opción --zone y la interfaz con la opción --change-interface .

Por ejemplo, el siguiente comando asigna la interfaz eth1 a la zona de work :

sudo firewall-cmd --zone=work --change-interface=eth1

Verifique los cambios escribiendo:

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

Cambiar la zona predeterminada

Para cambiar la zona predeterminada, use la --set-default-zone seguida del nombre de la zona que desea establecer como predeterminada.

Por ejemplo, para cambiar la zona predeterminada a home , debe ejecutar el siguiente comando:

sudo firewall-cmd --set-default-zone=home

Verifique los cambios con:

sudo firewall-cmd --get-default-zone

home

Crear nuevas zonas

Firewalld también te permite crear tus propias zonas. Esto es útil cuando desea crear reglas por aplicación.

En el siguiente ejemplo crearemos una nueva zona llamada memcached , memcached el puerto 11211 y permitiremos el acceso solo desde la dirección IP 192.168.100.30 :

  1. Crea la zona:

    sudo firewall-cmd --new-zone=memcached --permanent

    Agregue las reglas a la zona:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent

    Vuelva a cargar el demonio Firewalld para activar los cambios:

    sudo firewall-cmd --reload

Servicios de Firewalld

Con firewalld puede permitir el tráfico para puertos y / o fuentes específicos en base a reglas predefinidas llamadas servicios.

Para obtener una lista de todos los servicios disponibles predeterminados, escriba:

sudo firewall-cmd --get-services

Puede encontrar más información sobre cada servicio abriendo el archivo.xml asociado dentro del directorio /usr/lib/firewalld/services . Por ejemplo, el servicio HTTP se define así:

/usr/lib/firewalld/services/http.xml

WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages. WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.

Para permitir el tráfico HTTP entrante (puerto 80) para las interfaces en la zona pública, solo para el tipo de sesión actual (configuración de tiempo de ejecución):

sudo firewall-cmd --zone=public --add-service=http Si está modificando la zona predeterminada, puede omitir la opción --zone .

Para verificar que el servicio se agregó con éxito, use la opción --list-services :

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

Para mantener el puerto 80 abierto después de un reinicio, ejecute el mismo comando una vez más con la opción --permanent , o ejecute:

sudo firewall-cmd --runtime-to-permanent

Use --list-services junto con la opción --permanent para verificar sus cambios:

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

La sintaxis para eliminar el servicio es la misma que cuando se agrega uno. Simplemente use --remove-service lugar de --add-service flag:

sudo firewall-cmd --zone=public --remove-service=http --permanent

El comando anterior elimina el servicio http de la configuración permanente de la zona pública.

Crear un nuevo servicio FirewallD

Como ya hemos mencionado, los servicios predeterminados se almacenan en el directorio /usr/lib/firewalld/services . La forma más fácil de crear un nuevo servicio es copiar un archivo de servicio existente en el directorio /etc/firewalld/services , que es la ubicación de los servicios creados por el usuario y modificar la configuración del archivo.

Por ejemplo, para crear una definición de servicio para Plex Media Server, puede usar el archivo de servicio SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

Abra el archivo plexmediaserver.xml recién creado y cambie el nombre corto y la descripción del servicio dentro de y Etiquetas La etiqueta más importante que debe cambiar es la etiqueta del port , que define el número de puerto y el protocolo que desea abrir.

En el siguiente ejemplo, estamos abriendo los puertos 1900 UDP y 32400 TCP.

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere. plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.

Guarde el archivo y vuelva a cargar el servicio FirewallD:

sudo firewall-cmd --reload

Ahora puede usar el servicio plexmediaserver en sus zonas igual que cualquier otro servicio.

Apertura de puertos e IP de origen

Firewalld también le permite habilitar rápidamente todo el tráfico desde una dirección IP confiable o en un puerto específico sin crear una definición de servicio.

Abrir una IP de origen

Para permitir todo el tráfico entrante desde una dirección IP (o rango) específica, especifique la zona con la opción --zone y la IP de origen con la opción --add-source .

Por ejemplo, para permitir todo el tráfico entrante de 192.168.1.10 en la zona public , ejecute:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

Haga que la nueva regla sea persistente:

sudo firewall-cmd --runtime-to-permanent

Verifique los cambios con el siguiente comando:

sudo firewall-cmd --zone=public --list-sources

192.168.1.10

La sintaxis para eliminar una IP de origen es la misma que cuando se agrega una. Simplemente use --remove-source lugar de la opción --add-source :

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

Abrir un puerto fuente

Para permitir todo el tráfico entrante en un puerto determinado, especifique la zona con la opción --zone y el puerto y el protocolo con la opción --add-port .

Por ejemplo, para abrir el puerto 8080 en la zona pública para la sesión actual que ejecutaste:

sudo firewall-cmd --zone=public --add-port=8080/tcp

El protocolo puede ser tcp , udp , sctp o dccp .

Verificar los cambios:

sudo firewall-cmd --zone=public --list-ports

8080

Para mantener el puerto abierto después de un reinicio, agregue la regla a la configuración permanente ejecutando el mismo comando usando el indicador --permanent o ejecutando:

sudo firewall-cmd --runtime-to-permanent

La sintaxis para eliminar un puerto es la misma que cuando se agrega un puerto. Simplemente use --remove-port lugar de la opción --add-port .

sudo firewall-cmd --zone=public --remove-port=8080/tcp

Puertos de reenvío

Para reenviar el tráfico de un puerto a otro puerto, primero habilite el enmascaramiento para la zona deseada usando la opción --add-masquerade . Por ejemplo, para habilitar el enmascaramiento para la zona external , escriba:

sudo firewall-cmd --zone=external --add-masquerade

Reenviar tráfico de un puerto a otro en la dirección IP

En el siguiente ejemplo, reenviamos el tráfico desde el puerto 80 al puerto 8080 en el mismo servidor:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

Reenviar tráfico a otra dirección IP

En el siguiente ejemplo, reenviamos el tráfico del puerto 80 al puerto 80 en un servidor con IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

Reenviar tráfico a otro servidor en un puerto diferente

En el siguiente ejemplo, reenviamos el tráfico desde el puerto 80 al puerto 8080 en un servidor con IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

Para hacer persistente la regla de reenvío, use:

sudo firewall-cmd --runtime-to-permanent

Conclusión

Ha aprendido a configurar y administrar el servicio firewalld en su sistema CentOS 8.

Asegúrese de permitir todas las conexiones entrantes que sean necesarias para el correcto funcionamiento de su sistema, al tiempo que limita todas las conexiones innecesarias.

cortafuegos cortafuegos centos seguridad