En simple langue, une firewall est un système de sécurité qui contrôle le trafic entrant et sortant d’une réseau en fonction d’un ensemble de règles prédéfinies (telles que la destination / source de paquet ou le type de trafic, par exemple).

Dans cet article, nous passerons en revue les bases de firewalld, le démon de pare-feu dynamique par défaut dans Red Hat Enterprise Linux 7, et le service iptables, le service de pare-feu ancestral pour Linux, avec lequel la plupart des administrateurs systèmes et réseaux sont bien familiarisés, qui est également disponible dans RHEL 7.
A Comparison Between FirewallD and Iptables
Derrière le voile, les deux firewalld et le service iptables communiquent avec le netfilter du noyau via la même interface, ce qui n’est pas surprenant, le commande iptables. Cependant, contrairement au service iptables, firewalld peut modifier les paramètres pendant l’opération normale du système sans que les connexions existantes ne soient perdues.
Firewalld devrait être installé par défaut sur votre système RHEL, quoique il puisse ne pas être en cours d’exécution. Vous pouvez vérifier avec les commandes suivantes (firewall-config est l’outil de configuration de l’interface utilisateur) :
# yum info firewalld firewall-config

et,
# systemctl status -l firewalld.service

D’autre part, le service iptables n’est pas inclus par défaut mais peut être installé via.
# yum update && yum install iptables-services
Les deux démons peuvent être démarrés et activés pour démarrer au démarrage avec les commandes habituelles de systemd :
# systemctl start firewalld.service | iptables-service.service # systemctl enable firewalld.service | iptables-service.service
Lire aussi: Commandes utiles pour gérer les services systemd
En ce qui concerne les fichiers de configuration, le service iptables utilise /etc/sysconfig/iptables
(qui n’existera pas si le package n’est pas installé sur votre système). Sur une machine RHEL 7 utilisée en tant que nœud de cluster, ce fichier ressemble à ceci:

Alors que firewalld stocke sa configuration dans deux répertoires, /usr/lib/firewalld
et /etc/firewalld
:
# ls /usr/lib/firewalld /etc/firewalld

Nous examinerons plus en détail ces fichiers de configuration plus tard dans cet article, après avoir ajouté quelques règles ici et là. Pour l’instant, il suffit de vous rappeler que vous pouvez toujours trouver plus d’informations sur les deux outils avec.
# man firewalld.conf # man firewall-cmd # man iptables
Mis à part cela, n’oubliez pas de jeter un coup d’œil à Revues des commandes essentielles et de la documentation système – Partie 1 de la série actuelle, où j’ai décrit plusieurs sources où vous pouvez obtenir des informations sur les packages installés sur votre système RHEL 7.
Utiliser Iptables pour contrôler le trafic réseau
Vous voudrez peut-être vous référer à Configurer le pare-feu Iptables – Partie 8 de la série Linux Foundation Certified Engineer (LFCE) pour rafraîchir votre mémoire sur les détails d’iptables avant de continuer. Ainsi, nous pourrons passer directement aux exemples.
Exemple 1 : Autoriser à la fois le trafic entrant et sortant vers le web
Les ports TCP 80 et 443 sont les ports par défaut utilisés par le serveur web Apache pour gérer le trafic web normal (HTTP) et sécurisé (HTTPS). Vous pouvez autoriser le trafic web entrant et sortant sur les deux ports de l’interface enp0s3 comme suit :
# iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT # iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Exemple 2 : Bloquer toutes (ou certaines) connexions entrantes en provenance d’un réseau spécifique
Il peut arriver que vous ayez besoin de bloquer tout type de trafic (ou une partie) provenant d’un réseau spécifique, par exemple 192.168.1.0/24 :
# iptables -I INPUT -s 192.168.1.0/24 -j DROP
bloquera tous les paquets provenant du réseau 192.168.1.0/24, tandis que
# iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT
autorise uniquement le trafic entrant via le port 22.
Exemple 3 : Rediriger le trafic entrant vers une autre destination
Si vous utilisez votre boîte RHEL 7 non seulement comme pare-feu logiciel, mais également comme pare-feu matériel réel, de sorte qu’il se trouve entre deux réseaux distincts, le transfert IP doit déjà être activé dans votre système. Sinon, vous devez modifier le fichier /etc/sysctl.conf
et définir la valeur de net.ipv4.ip_forward sur 1, comme suit :
net.ipv4.ip_forward = 1
puis enregistrez la modification, fermez votre éditeur de texte et exécutez enfin la commande suivante pour appliquer la modification :
# sysctl -p /etc/sysctl.conf
Par exemple, vous pouvez avoir une imprimante installée sur une boîte interne avec l’adresse IP 192.168.0.10, avec le service CUPS écoutant sur le port 631 (à la fois sur le serveur d’impression et sur votre pare-feu). Afin de transmettre les demandes d’impression des clients de l’autre côté du pare-feu, vous devez ajouter la règle iptables suivante :
# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631
Veuillez garder à l’esprit que iptables lit ses règles séquentiellement, donc assurez-vous que les politiques par défaut ou les règles ultérieures ne contredisent pas celles décrites dans les exemples ci-dessus.
Premiers pas avec FirewallD
Une des modifications introduites avec firewalld sont les zones. Ce concept permet de séparer les réseaux en différentes zones en fonction du niveau de confiance que l’utilisateur a décidé d’accorder aux appareils et au trafic au sein de ce réseau.
Pour lister les zones actives :
# firewall-cmd --get-active-zones
Dans l’exemple ci-dessous, la zone public est active et l’interface enp0s3 lui a été automatiquement assignée. Pour afficher toutes les informations sur une zone particulière :
# firewall-cmd --zone=public --list-all

Comme vous pouvez en apprendre davantage sur les zones dans le guide de sécurité RHEL 7, nous ne listerons ici que quelques exemples spécifiques.
Exemple 4 : Autoriser des services à travers le pare-feu
Pour obtenir une liste des services pris en charge, utilisez
# firewall-cmd --get-services

Pour permettre le trafic Web http et https à travers le pare-feu, de manière immédiate et lors des démarrages ultérieurs
# firewall-cmd --zone=MyZone --add-service=http # firewall-cmd --zone=MyZone --permanent --add-service=http # firewall-cmd --zone=MyZone --add-service=https # firewall-cmd --zone=MyZone --permanent --add-service=https # firewall-cmd --reload
Si l’option --zone
est omise, la zone par défaut (que vous pouvez vérifier avec firewall-cmd –get-default-zone) est utilisée
Pour supprimer la règle, remplacez le mot « add » par « remove » dans les commandes ci-dessus
Exemple 5 : Transfert d’IP / Port
Tout d’abord, vous devez vérifier si le masquage est activé pour la zone souhaitée
# firewall-cmd --zone=MyZone --query-masquerade
Dans l’image ci-dessous, nous pouvons voir que le masquage est activé pour la zone externe, mais pas pour la zone publique

Vous pouvez activer le masquage pour la zone publique
# firewall-cmd --zone=public --add-masquerade
Ou utiliser le masquage dans la zone externe. Voici ce que nous ferions pour reproduire l’exemple 3 avec firewalld
# firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10
N’oubliez pas de recharger le pare-feu.
Vous pouvez trouver d’autres exemples dans la Partie 9 de la série RHCSA, où nous avons expliqué comment autoriser ou désactiver les ports généralement utilisés par un serveur web et un serveur FTP, ainsi que comment modifier la règle correspondante lorsque les ports par défaut de ces services sont modifiés. De plus, vous pouvez consulter le wiki de firewalld pour plus d’exemples.
Lire aussi : Exemples utiles de configuration du pare-feu avec FirewallD dans RHEL 7
Conclusion
Dans cet article, nous avons expliqué ce qu’est un pare-feu, quelles sont les services disponibles pour en mettre un en œuvre dans RHEL 7, et fourni quelques exemples qui peuvent vous aider à démarrer cette tâche. Si vous avez des commentaires, des suggestions ou des questions, n’hésitez pas à nous le faire savoir en utilisant le formulaire ci-dessous. Merci d’avance !
Source:
https://www.tecmint.com/firewalld-vs-iptables-and-control-network-traffic-in-firewall/