Como configurar el firewall en CentOS 7 Server | Sistemas Operativos III (Tutorial)
Tabla de contenido:
- Prerrequisitos
- Conceptos básicos de Firewalld
- Zonas Firewalld
- Servicios de firewall
- Firewalld Runtime y configuraciones permanentes
- Instalar y habilitar FirewallD
- Trabajando con Zonas Firewalld
- Cambiar la zona de una interfaz
- Cambiar la zona predeterminada
- Abrir un puerto o servicio
- Crear un nuevo servicio FirewallD
- Puerto de reenvío con Firewalld
- Crear un conjunto de reglas con FirewallD
- Conclusión
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
paraIPv4
yicmp6-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
-
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
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í:
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
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.
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
-
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 seguridadCómo configurar y configurar los Firewall Firewall

Aprenda a configurar el firewall del router, acceder a la página del enrutador de hardware, configurar los parámetros del Router Firewall. Averigüe qué puertos son necesarios en la computadora.
Cómo configurar y administrar el firewall en centos 8

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

Comenzando con CentOS 7, FirewallD reemplaza iptables como la herramienta de administración de firewall predeterminada. En este tutorial le mostraremos cómo deshabilitar FirewallD en sistemas CentOS 7.