Volver al blog

Configuración de un cortafuegos con FirewallD en CentOS 7

Configuración de un cortafuegos con FirewallD en CentOS 7

Introducción

Firewalld es a solución de gestión de cortafuegos disponible para muchas distribuciones de Linux. Sirve como interfaz para el sistema de filtrado de paquetes iptables proporcionado por el núcleo de Linux. En esta guía, aprenderá a configurar un cortafuegos para su servidor. También le mostraremos los aspectos básicos de la gestión del cortafuegos con la herramienta de administración firewall-cmd.

Conceptos básicos de Firewalld

FirewallD utiliza los conceptos de zonas y servicios, en lugar de las cadenas y reglas de iptables. Dependiendo de las zonas y servicios que configure, puede controlar qué tráfico se permite o no hacia y desde el sistema. FirewallD se puede configurar y gestionar mediante la utilidad de línea de comandos firewall-cmd.

Instalar y habilitar el cortafuegos para que se inicie en el arranque

En la mayoría de las distribuciones de Linux, firewallD ya está instalado. Sin embargo, si necesita instalarlo usted mismo, escriba la siguiente sintaxis:

Puede habilitar el servicio y reiniciar su servidor una vez que firewalld esté instalado:

A continuación, reinicie su servidor. Su cortafuegos se habilitará cuando haya reiniciado correctamente el servidor. Después de eso, use el siguiente comando para verificar que el servicio se ha activado:

check firewall state FirewallD

La salida muestra que la configuración predeterminada del cortafuegos está funcionando.

Comprobación de los valores predeterminados

Puede comprobar la zona seleccionada por el servidor utilizando este comando:

check firewall default zone

Verifique la zona activa escribiendo:

firewall active zones

Imprima la configuración de la zona predeterminada para conocer las reglas asociadas al área pública utilizando esta sintaxis:

list all rules FirewallD

La salida indica que esta zona es tanto la zona predeterminada como la activa. También muestra que las interfaces eth0 y eth1 están asignadas a esta zona.

Comprobación de zonas alternativas

Además de las zonas predeterminadas y activas, existen otras zonas que puede explorar. Introduzca este comando para ver todas las zonas disponibles:

firewall check other zones

Compruebe la configuración particular asignada a una zona añadiendo el parámetro –zone= en el comando –list-all:

check zone configuration FirewallD

 Cambiar la zona de la interfaz

Puede cambiar fácilmente la zona de la interfaz utilizando la opción –change-interface combinada con la opción –change-interface. El siguiente comando asignará la interfaz eth1 al espacio de trabajo:

Puede verificar los cambios escribiendo:

changing firewall interface zones FirewallD

Cambiar la zona predeterminada

Para cambiar la zona predeterminada, use –set-default-zone seguido del nombre de la zona que desea establecer como predeterminada. Por ejemplo, para cambiar la zona predeterminada para empezar, debe ejecutar el siguiente comando:

A continuación, puede verificar los cambios con:

firewall change default zone

Establecer reglas para sus aplicaciones

Repasemos los conceptos básicos necesarios para definir excepciones de cortafuegos para los servicios:

Añadir un servicio a sus zonas

La forma más sencilla es añadiendo los puertos o servicios que necesita a las zonas que está utilizando. Asimismo, puede utilizar la opción –get-services para ver todos los servicios disponibles:

firewall get services FirewallD

Puede activar el servicio para una zona con el parámetro –add-service =. La acción se dirige a la zona predeterminada o a cualquier zona definida por el parámetro –zone =. De forma predeterminada, solo se configura la sesión actual del cortafuegos. Puede establecer una configuración de cortafuegos permanente activando la bandera –permanent. Por ejemplo, si está ejecutando un servidor web que proporciona tráfico HTTP normal, puede permitir este tráfico para las interfaces en nuestra zona “public” para esta sesión ingresando:

Puede omitir –zone = si desea cambiar la zona predeterminada. Puede comprobar el éxito de la operación con las operaciones –list-all o –list-services:

add service to zone

Una vez que haya verificado que todo funciona como se espera, lo más probable es que desee cambiar las reglas permanentes del cortafuegos para que su servicio siga estando disponible después de un reinicio. Podemos realizar el cambio en nuestra zona “public” de forma permanente ingresando la sintaxis:

Puede comprobar si esto tuvo éxito agregando la bandera –permanent a la operación –list-services. Debe usar sudo para todas las operaciones permanentes:

Su zona “public” ahora permite el tráfico HTTP en el puerto 80. Puede agregar esto a la sesión actual y al conjunto de reglas persistentes usando el comando a continuación:

Si no hay servicios que se adapten a sus necesidades, tiene dos excelentes opciones para manejar esta situación:

  1. Abrir un puerto para sus zonas

La forma más directa de agregar soporte para su aplicación en particular es abrir los puertos utilizados en cada zona. Es tan simple como designar un puerto o rango de puertos y el protocolo correspondiente para los puertos que necesita abrir. Por ejemplo, si su aplicación se ejecuta en el puerto 5000 y utiliza TCP, puede agregarla a la zona “public” para esta sesión con el parámetro –add-port =. Los protocolos pueden ser TCP o UDP:

Para comprobar que la operación se ha realizado con éxito, utilice la operación –list-ports:

También puede especificar un rango para la interfaz en serie separando los puertos inicial y final del rango con un guion. Por ejemplo, si su aplicación utiliza los puertos UDP 4990 a 4999, puede abrirlos en “public” escribiendo:

Después de probar, probablemente querremos agregarlos al cortafuegos permanente. Puede hacerlo escribiendo lo siguiente:

adding ports to permanent firewall

  1. Definir un servicio

Un servicio es una colección de puertos con un nombre y una descripción asociados. Los servicios son más fáciles de administrar que los puertos, pero requiere un poco de trabajo inicial. La forma más sencilla de comenzar es copiar un script existente (en / usr / lib / firewalld / services) al directorio /etc/firewalld/services. Por ejemplo, puede copiar la definición del servicio SSH para usarla en la definición del servicio “example” de la siguiente manera. El nombre del archivo menos el sufijo XML determina el nombre del servicio en la lista de servicios del cortafuegos:

En este punto, puede ajustar la definición en el archivo copiado:

Primero, el archivo contiene la definición de SSH que copió:

La mayor parte de esta definición consiste en metadatos. Debe cambiar el nombre corto del servicio en las etiquetas <short>. Este es un nombre de servicio legible. Imagine que para nuestro servicio “example”, tenemos que abrir el puerto 7777 para TCP y el 8888 para UDP. Puede cambiar la definición existente ingresando al modo INSERTAR presionando i:

A continuación, presione ESC y escriba: x para guardar y cerrar el archivo. Luego, escriba el comando a continuación para reiniciar su cortafuegos a fin de tener acceso a su nuevo servicio;

Después de eso, use el comando a continuación para obtener una lista de los servicios disponibles:

get services

Este servicio ya está disponible en su zona.

Creación de sus zonas

Si bien es probable que las zonas predefinidas sean suficientes para la mayoría de los usuarios, puede ser útil definir sus propias zonas que describan su función de manera más completa.

Al agregar una zona, agréguela a la configuración permanente de su cortafuegos. Luego puede recargar para aplicar la configuración a su sesión. Por ejemplo, puede crear las dos zonas analizadas anteriormente escribiendo:

Puede confirmar que están presentes en su configuración permanente usando este comando:

firewall zones

Recargue el cortafuegos para incorporar estas nuevas zonas a la configuración activa:

Ahora, puede asignar los servicios y puertos adecuados a sus zonas. Por ejemplo, para la zona “publicweb” es posible que desee agregar los servicios SSH, HTTP y HTTPS:

list public web zone

 

Además, puede agregar el servicio DNS a su zona “privateDNS” usando este comando:

list privateDNS zone FirewallD

A continuación, puede cambiar sus interfaces a estas nuevas zonas para probarlas:

Pruebe la configuración para ver si funciona. Si estos valores le funcionan, debe agregar las mismas reglas a la configuración permanente. Puede hacerlo volviendo a aplicar las reglas con el indicador —permanent:

 

Después de aplicar estas reglas de forma permanente, puede reiniciar su red y recargar el servicio de firewall:

Compruebe que las zonas se hayan asignado correctamente:

check active zones FirewallD

Además, asegúrese de que ambas zonas tengan el servicio correcto:

Si desea establecer una de sus zonas como la predeterminada para otras interfaces, debe configurar este comportamiento con el parámetro –set-default-zone= usando este comando:

Conclusión

En este punto, ha creado sus propias zonas con éxito. Debería tener una comprensión básica de la administración del servicio firewalld en su sistema CentOS para el uso diario. Tener un buen conocimiento del servicio firewalld le permite aprovechar al máximo su potencia y flexibilidad.

¡Feliz computación!

 

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.