Androide

Cómo configurar un firewall con firewalld en centos 7

Como configurar el firewall en CentOS 7 Server | Sistemas Operativos III (Tutorial)

Como configurar el firewall en CentOS 7 Server | Sistemas Operativos III (Tutorial)

Tabla de contenido:

Anonim

Un firewall configurado correctamente es uno de los aspectos más importantes de la seguridad general del sistema.

FirewallD es una solución completa de firewall que gestiona las reglas de iptables del sistema y proporciona una interfaz D-Bus para operar en ellas. Comenzando con CentOS 7, FirewallD reemplaza iptables como la herramienta de administración de firewall predeterminada.

En este tutorial, le mostramos cómo configurar un firewall con FirewallD en su sistema CentOS 7 y le explicamos los conceptos básicos de FirewallD.

Prerrequisitos

Antes de comenzar con este tutorial, asegúrese de haber iniciado sesión en su servidor con una cuenta de usuario con privilegios de sudo o con el usuario root. La mejor práctica es ejecutar comandos administrativos como usuario de sudo en lugar de root. Si no tiene un usuario sudo en su sistema CentOS, puede crear uno siguiendo estas instrucciones.

Conceptos básicos de Firewalld

FirewallD utiliza los conceptos de zonas y servicios, en lugar de la cadena y las reglas de iptables. Según las zonas y los servicios que configurará, puede controlar qué tráfico está permitido o no permitido hacia y desde el sistema.

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

Zonas Firewalld

Las zonas son conjuntos de reglas predefinidas que especifican qué tráfico debe permitirse en función del nivel de confianza en 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.

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 es persistente en los reinicios. Cuando se inicia el servicio 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, debe usar la opción --permanent .

Instalar y habilitar FirewallD

  1. Firewalld se instala de manera predeterminada en CentOS 7, pero si no está instalado en su sistema, puede instalar el paquete escribiendo:

    sudo yum install firewalld

    El servicio Firewalld está deshabilitado de manera predeterminada. Puede verificar el estado del firewall con:

    sudo firewall-cmd --state

    Para iniciar el servicio FirewallD y habilitarlo en el tipo de arranque:

    sudo systemctl start firewalld sudo systemctl enable firewalld

Trabajando con Zonas Firewalld

Después de habilitar el servicio FirewallD por primera vez, la zona public se establece como una zona predeterminada. 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

Por defecto, todas las interfaces de red tienen asignada la zona predeterminada. Para verificar qué zonas utiliza su (s) interfaz (es) de red, escriba:

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

El resultado anterior nos dice que ambas interfaces eth0 y eth1 están asignadas a la zona pública.

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:

En el resultado anterior, podemos ver que la zona pública está activa y configurada como predeterminada, utilizada por las interfaces eth0 y eth1 . Además, las conexiones relacionadas con el cliente DHCP y SSH están permitidas.

sudo firewall-cmd --list-all-zones

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

Cambiar la zona de una interfaz

Puede cambiar fácilmente la zona de interfaz utilizando la opción --change-interface en combinación con la opción --change-interface . El siguiente comando asignará la interfaz eth1 a la zona de trabajo:

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 inicio, debe ejecutar el siguiente comando:

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

Verifique los cambios con:

sudo firewall-cmd --get-default-zone

home

Abrir un puerto o servicio

Con FirewallD puede permitir el tráfico de puertos específicos en función de 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

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

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 un servicio. Simplemente use --remove-service lugar de la opción --add-service :

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.

¿Qué sucede si está ejecutando una aplicación como Plex Media Server para la cual no hay un servicio apropiado disponible?

En situaciones como estas, tienes dos opciones. Puede abrir los puertos apropiados o definir un nuevo servicio FirewallD.

Por ejemplo, el servidor Plex escucha en el puerto 32400 y usa TCP, para abrir el puerto en la zona pública para la sesión actual use la --add-port= :

sudo firewall-cmd --zone=public --add-port=32400/tcp Los protocolos pueden ser tcp o udp .

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

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

32400/tcp

Para mantener el puerto 32400 abierto después de un reinicio, agregue la regla a la configuración permanente ejecutando el mismo comando usando la opción --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=32400/tcp

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, podemos 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.

Puerto de reenvío con Firewalld

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

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

  • Reenviar tráfico de un puerto a otro en el mismo servidor

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 otro servidor

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

Crear un conjunto de reglas con FirewallD

En el siguiente ejemplo, le mostraremos cómo configurar su firewall si estaba ejecutando un servidor web. Suponemos que su servidor solo tiene una interfaz eth0 , y desea permitir el tráfico entrante solo en los puertos SSH, HTTP y

  1. Cambiar la zona predeterminada a dmz

    Utilizaremos la zona dmz (desmilitarizada) porque de forma predeterminada solo permite el tráfico SSH. Para cambiar la zona predeterminada a dmz y asignarla a la interfaz eth0 , ejecute los siguientes comandos:

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    Puertos HTTP y HTTPS abiertos:

    Para abrir los puertos HTTP y HTTPS, agregue reglas de servicio permanentes a la zona dmz:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    Haga que los cambios entren en vigencia de inmediato volviendo a cargar el firewall:

    sudo firewall-cmd --reload

    Verificar los cambios

    Para verificar la configuración de la zona dmz, escriba:

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

    dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

    El resultado anterior nos dice que dmz es la zona predeterminada, se aplica a la interfaz eth0 y los puertos ssh (22) http (80) y https (443) están abiertos.

Conclusión

Aprendió a configurar y administrar el servicio FirewallD en su sistema CentOS.

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 iptables centos seguridad