Série RHCSA: Les bases du pare-feu et le contrôle du trafic réseau en utilisant FirewallD et Iptables – Partie 11

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).

RHCSA: Control Network Traffic with FirewallD and Iptables – Part 11

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
Check FirewallD Information

et,

# systemctl status -l firewalld.service
Check FirewallD Status

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:

Iptables Firewall Configuration

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

# ls /usr/lib/firewalld /etc/firewalld
FirewallD Configuration

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
List all FirewallD Zones

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
List All Supported 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

Check Masquerading Status

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/