GNU/Linux >> Tutoriels Linux >  >> Linux

Problème d'ouverture d'un port Firewalld dans CentOS/RHEL 8

Le problème

Nous avons ouvert un nouveau port ou ajouté un service dans firewalld échouer sans erreur. Dans le serveur, le port 80 est ouvert comme indiqué ci-dessous :

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

Mais lorsque vous essayez de vous connecter à partir d'un autre hôte, l'erreur ci-dessous est signalée :

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

La solution

Par défaut, le backend firewalld est configuré sur nftables. Les règles directes utilisées par firewalld peuvent avoir un impact sur la manière dont les règles sont appliquées :

Les règles directes qui ACCEPTENT les paquets n'entraînent pas réellement l'acceptation immédiate des paquets par le système. Ces paquets sont toujours soumis au jeu de règles nftables de firewalld. Pour les règles directes qui abandonnent les paquets, les paquets sont immédiatement abandonnés. Si une règle générale DROP ou REJECT est configurée comme la dernière des règles directes, toutes les règles nftables seront ignorées.

La dernière ligne de la commande suivante en est un exemple :

# 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

Il peut également être vérifié qu'il est configuré dans les règles directes du pare-feu :

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

Vérifiez si les règles directes sont vraiment nécessaires, probablement les règles importantes sont déjà configurées dans les règles « normales ». Pour supprimer complètement les règles directes, supprimez le fichier /etc/firewalld/direct.xml .

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

Si des règles directes sont nécessaires, supprimez la dernière règle de ressource, avec REJECT, dans les règles directes et configurez-la dans nftables/firewalld.


Linux
  1. CentOS / RHEL 7 :Comment basculer vers iptables depuis firewalld

  2. CentOS / RHEL 7 :Guide du débutant sur le pare-feu

  3. CentOS / RHEL 7 :Comment ouvrir un port dans le firewall avec firewall-cmd ?

  4. CentOS / RHEL 7 :Comment ouvrir le port Firewall pour le serveur Samba en utilisant FirewallD

  5. Comment ouvrir un port dans CentOS / RHEL 7

RHEL 8 / CentOS 8 ouvre le port FTP 21 avec pare-feu

Comment arrêter/démarrer le pare-feu sur RHEL 8 / CentOS 8

Comment installer et utiliser Firewalld dans CentOS / RHEL

Comment configurer FirewallD dans RHEL, CentOS et Fedora

Ouvrir un port sous Linux

Comment migrer les règles iptables CentOS/RHEL 6 vers le pare-feu CentOS/RHEL 7