GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué es FirewallD y cómo implementarlo en Linux?

¿Qué es Firewalld?

Firewalld es una solución de administración de firewall para muchas distribuciones de Linux, incluidas Ubuntu, Debian, CentOS, RHEL y Fedora. Actúa como una interfaz para el sistema de filtrado de iptables proporcionado por el kernel de Linux. Es independiente del protocolo, lo que significa que es compatible con IPv4, IPv6, puentes ethernet y conjuntos de IP.

Concepto básico de cortafuegos

FirewallD usa zonas y servicios en lugar de cadenas y reglas de iptables. Las zonas son un conjunto de reglas que especifican qué tráfico debe permitirse según el nivel de confianza que tenga en una red a la que estén conectadas sus computadoras. Las interfaces de red asignaron una zona para dictar un comportamiento que debería permitir el cortafuegos.

El firewalld se administra mediante la herramienta de línea de comandos firewall-cmd. Proporciona una interfaz para administrar el tiempo de ejecución y la configuración permanente.

Zonas cortafuegos

Hay 9 zonas predefinidas en el Firewalld según el nivel de confianza en orden ascendente.
Una breve explicación de cada zona se explica a continuación:

  • Soltar: Esta zona tiene el nivel más bajo de confianza y se usa para descartar todo el tráfico entrante sin enviar ningún reconocimiento al remitente.
  • Bloquear: Esta zona es muy similar a la zona de entrega, el tráfico entrante se rechaza y el remitente recibe un mensaje.
  • Público: Permite el tráfico de ciertas redes públicas.
  • Externo: Esta zona se utiliza cuando su sistema actúa como puerta de enlace o enrutador.
  • Interna: El conjunto de reglas que se aplican a las computadoras en su red interna privada.
  • DMZ: Esta zona es un parche aislado de computadoras en su red interna que no puede acceder a otros recursos internos.
  • Trabajo: Esta zona se utiliza para máquinas de trabajo. El nivel de confianza es alto.
  • Inicio: La mayoría de las computadoras en esta zona confían entre sí. El nivel de confianza es más alto que el trabajo.
  • De confianza: Esta zona tiene el nivel de confianza más alto. Todos los equipos de la red son de confianza.

Paso 1:Instalación del cortafuegos

De forma predeterminada, Firewalld está preinstalado en la mayoría de los sistemas operativos. Pero parte de la instalación mínima del sistema operativo no está incluida. Si no está instalado, puede instalarlo con el siguiente comando:

sudo yum install firewalld        # CentOS/RHEL 8/7/6 
sudo dnf install firewalld        # Fedora and CentOS/RHEL 8 
sudo apt install firewalld        # Ubuntu and Debian  

Después de instalar firewalld, deberá iniciarlo y habilitarlo para que se inicie después de reiniciar el sistema.

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ejecute el siguiente comando para verificar el estado de firewalld

systemctl status firewalld
[OR] 
firewall-cmd --state

Paso 2:trabajar con zonas y servicios

De forma predeterminada, public es la zona predeterminada en firewalld y todas las interfaces de red están configuradas con la zona pública. Puede enumerar la zona predeterminada con el siguiente comando:

firewall-cmd --get-default-zone

Salida:

public

A continuación, ejecute el siguiente comando para obtener una lista de zonas activas:

firewall-cmd --get-active-zones

Deberías obtener el siguiente resultado:

public
  interfaces: eth0 eth1

Para obtener una lista de todas las zonas disponibles, ejecute el siguiente comando:

firewall-cmd --get-zones

Deberías obtener el siguiente resultado:

block dmz drop external home internal public trusted work

Puede enumerar todos los servicios asociados con una zona pública con el siguiente comando:

firewall-cmd --list-all

Deberías obtener el siguiente resultado:

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

Para cambiar la zona predeterminada de pública a trabajo, ejecute el siguiente comando:

firewall-cmd --set-default-zone=work

Ahora puede verificar su zona predeterminada con el siguiente comando:

firewall-cmd --get-default-zone

Salida:

work

Puede obtener una lista de todos los servicios disponibles en su sistema con el siguiente comando:

firewall-cmd --get-services

Deberías obtener el siguiente resultado:

RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

Paso 3:permitir y denegar servicios en Firewalld

Puede permitir y denegar el tráfico entrante según los servicios predefinidos en firewalld.

Por ejemplo, para permitir todo el tráfico entrante para el servicio http en la zona pública, ejecute el siguiente comando:

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

Salida:

success

Para permitir el tráfico entrante para el servicio ftp en la zona pública, ejecute el siguiente comando:

firewall-cmd --zone=public --add-service=ftp

Salida:

success

El comando anterior agregará el servicio http y ftp temporalmente y no es persistente en los reinicios. Deberá usar el --permanent opción para hacerlos permanentes como se muestra a continuación:

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

A continuación, ejecute el siguiente comando para implementar los cambios:

firewall-cmd --reload

Ahora puede obtener una lista de servicios agregados con el siguiente comando:

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

Debería ver el siguiente resultado:

cockpit dhcpv6-client ftp http ssh

También puede consultar la información detallada sobre la zona pública con el siguiente comando:

firewall-cmd --info-zone public

Salida:

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

Si desea eliminar/denegar los servicios anteriores del cortafuegos, use --remove-service opción:

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

A continuación, ejecute el siguiente comando para aplicar los cambios:

firewall-cmd --reload

Paso 4:permitir y denegar puertos en Firewalld

También puede permitir y denegar el tráfico entrante según el puerto en firewalld.

Por ejemplo, permita todo el tráfico entrante en los puertos 8080 y 443, ejecute el siguiente comando:

firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=8080/tcp

A continuación, ejecute el siguiente comando para aplicar los cambios:

firewall-cmd --reload

Luego, verifique los puertos agregados con el siguiente comando:

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

Salida:

443/tcp 8080/tcp

De manera similar, elimine/niegue los puertos anteriores del firewalld, use la opción –remove-port:

firewall-cmd --permanent --zone=public --remove-port=443/tcp
firewall-cmd --permanent --zone=public --remove-port=8080/tcp

A continuación, ejecute el siguiente comando para aplicar los cambios:

firewall-cmd --reload

Paso 5:Reenvío de puertos con Firewalld

El reenvío de puertos es el proceso que redirige la solicitud de la combinación de IP/puerto y la redirige a una IP y/o puerto diferente. Esta técnica permite que las máquinas remotas se conecten a un servicio específico dentro de una red privada.

Antes de configurar el reenvío de puertos, debe activar el enmascaramiento en la zona deseada. Puedes activarlo usando el --add-masquerade opción:

firewall-cmd --zone=public --add-masquerade

A continuación, para reenviar el tráfico del puerto 80 al puerto 8080 en el mismo servidor, ejecute el siguiente comando:

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080

Si desea reenviar el tráfico desde el puerto local 80 al puerto 8080 en un servidor remoto con la dirección IP 192.168.1.200, ejecute el siguiente comando:

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200

A continuación, ejecute el siguiente comando para aplicar los cambios:

firewall-cmd --reload

Si desea eliminar las reglas anteriores, reemplace –add con –remove como se muestra a continuación:

firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200
firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080

Conclusión

En la guía anterior, aprendió el concepto básico de Firewalld y cómo implementarlo en el sistema operativo Linux. Espero que ahora pueda limitar el tráfico entrante innecesario con firewalld.


Linux
  1. ¿Qué es un comando Chown en Linux y cómo usarlo?

  2. Flatpak en Linux:qué es y cómo instalar aplicaciones con él

  3. ¿Qué es Podman y cómo instalar Podman en Linux?

  4. Una guía para principiantes de firewalld en Linux

  5. ¿Qué es el reenvío de IP en Linux? ¿Cómo habilitar el reenvío de IP?

Cómo instalar y usar Firewalld en Almalinux 8

Cómo instalar y usar Firewalld en Rocky Linux 8

Cómo configurar FirewallD en RHEL, CentOS y Fedora

¿Qué es PPA en Ubuntu Linux y cómo lo uso?

¿Qué es el comando fuente en Linux y cómo funciona?

Cómo cambiar la fecha, la hora y la zona horaria en Linux Mint 20