GNU/Linux >> Linux Esercitazione >  >> Linux

Problema durante l'apertura di una porta Firewalld in CentOS/RHEL 8

Il problema

Abbiamo aperto una nuova porta o aggiunto un servizio in firewalld fail senza errori. Nel server, la porta 80 viene aperta come indicato di seguito:

# 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:

Ma quando si tenta di connettersi da un altro host, viene segnalato l'errore seguente:

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

La soluzione

Per impostazione predefinita, il backend firewalld è configurato su nftables. Le regole dirette utilizzate da firewalld potrebbero influire sul modo in cui vengono applicate le regole:

Le regole dirette che ACCETTANO i pacchetti in realtà non fanno sì che i pacchetti vengano accettati immediatamente dal sistema. Questi pacchetti sono ancora soggetti al set di regole nftables di firewalld. Per le regole dirette che rilasciano pacchetti, i pacchetti vengono immediatamente eliminati. Se una regola generale DROP o REJECT è configurata come l'ultima delle regole dirette, tutte le regole di nftables verranno ignorate.

L'ultima riga del comando seguente è un esempio:

# 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

Si può anche verificare che sia configurato nelle regole dirette del firewall:

# 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>

Verifica se le regole dirette sono davvero necessarie, probabilmente le regole importanti sono già configurate in regole “normali”. Per rimuovere completamente le regole dirette, rimuovi il file /etc/firewalld/direct.xml .

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

Se sono necessarie regole dirette, rimuovi l'ultima regola della risorsa, con REJECT, nelle regole dirette e configurala in nftables/firewalld.


Linux
  1. CentOS / RHEL 7:come passare a iptables da firewalld

  2. CentOS / RHEL 7:Guida per principianti a firewalld

  3. CentOS / RHEL 7:come aprire una porta nel firewall con firewall-cmd?

  4. CentOS / RHEL 7:come aprire la porta del firewall per il server Samba utilizzando FirewallD

  5. Come aprire una porta in CentOS / RHEL 7

RHEL 8 / CentOS 8 apre la porta FTP 21 con firewalld

Come arrestare/avviare il firewall su RHEL 8 / CentOS 8

Come installare e utilizzare Firewalld in CentOS/RHEL

Come configurare FirewallD in RHEL, CentOS e Fedora

Apertura di una porta su Linux

Come migrare le regole di CentOS/RHEL 6 iptables su CentOS/RHEL 7 firewalld