GNU/Linux >> Tutoriales Linux >  >> Linux

Problema al abrir un puerto de firewall en CentOS/RHEL 8

El problema

Hemos abierto un nuevo puerto o agregado un servicio en firewalld fail sin error. En el servidor, el puerto 80 se abre según el siguiente resultado:

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: cockpit dhcpv6-client ssh
  ports: 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Pero al intentar conectarse desde otro host, se informa el siguiente error:

$ nc -v [SERVER_IP_ADDRESS] 80
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: No route to host.

La solución

De manera predeterminada, el backend de firewalld está configurado para nftables. Las reglas directas utilizadas por firewalld pueden afectar la forma en que se aplican las reglas:

Las reglas directas que ACCEPT paquetes en realidad no hacen que los paquetes sean aceptados inmediatamente por el sistema. Esos paquetes todavía están sujetos al conjunto de reglas nftables de firewalld. Para las reglas directas que DROP paquetes, los paquetes se descartan inmediatamente. Si se configura una regla general DROP o REJECT como la última de las reglas directas, hará que se ignoren todas las reglas de nftables.

La última línea del siguiente comando es un ejemplo:

# iptables -vnxL INPUT
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
    2133   309423 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
       0        0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
      27     1620 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
      10      524 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
      93     4740 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

También se puede comprobar que está configurado en reglas directas de firewalld:

# grep -B4 INPUT /etc/firewalld/direct.xml
<?xml version="1.0" encoding="utf-8"?>
<direct>

    <passthrough ipv="ipv4">-N BareMetalInstanceServices</passthrough>
    <passthrough ipv="ipv4">-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT</passthrough>
    <passthrough ipv="ipv4">-A INPUT -p icmp -j ACCEPT</passthrough>
    <passthrough ipv="ipv4">-A INPUT -i lo -j ACCEPT</passthrough>
    <passthrough ipv="ipv4">-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT</passthrough>
    <passthrough ipv="ipv4">-A INPUT -j REJECT --reject-with icmp-host-prohibited</passthrough>

Verifique si las reglas directas son realmente necesarias, probablemente las reglas importantes ya estén configuradas en reglas "normales". Para eliminar completamente las reglas directas, elimine el archivo /etc/firewalld/direct.xml .

# mv /etc/firewalld/direct.xml /etc/firewalld/direct.xml_bck

Si se necesitan reglas directas, elimine la regla del último recurso, con REJECT, en las reglas directas y configúrela en nftables/firewalld.


Linux
  1. CentOS / RHEL 7:Cómo cambiar a iptables desde firewalld

  2. CentOS / RHEL 7:Guía para principiantes de firewalld

  3. CentOS/RHEL 7:¿Cómo abrir un puerto en el firewall con firewall-cmd?

  4. CentOS / RHEL 7:Cómo abrir el puerto de Firewall para el servidor Samba usando FirewallD

  5. Cómo abrir un puerto en CentOS / RHEL 7

RHEL 8/CentOS 8 puerto FTP abierto 21 con firewalld

Cómo detener/iniciar el firewall en RHEL 8 / CentOS 8

Cómo instalar y usar Firewalld en CentOS / RHEL

Cómo configurar FirewallD en RHEL, CentOS y Fedora

Abrir un puerto en Linux

Cómo migrar las reglas de iptables de CentOS/RHEL 6 a CentOS/RHEL 7 firewalld