Recherche de site Web

Série RHCSA : essentiels sur le pare-feu et contrôle du trafic réseau à l'aide de FirewallD et Iptables - Partie 11


En termes simples, un pare-feu est un système de sécurité qui contrôle le trafic entrant et sortant dans un réseau en fonction d'un ensemble de règles prédéfinies (telles que la destination/source du 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 du service iptables, l'ancien service de pare-feu pour Linux, que la plupart des administrateurs système et réseau connaissent bien, et qui est également disponible dans RHEL 7.

Une comparaison entre FirewallD et Iptables

Sous le capot, firewalld et le service iptables communiquent avec le framework netfilter dans le noyau via la même interface. Sans surprise, la commande iptables . Cependant, contrairement au service iptables, firewalld peut modifier les paramètres pendant le fonctionnement normal du système sans perdre les connexions existantes.

Firewalld doit être installé par défaut sur votre système RHEL, même s'il n'est peut-être pas 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

En revanche, 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 systemd habituelles :


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Lire aussi : Commandes utiles pour gérer les services Systemd

Quant aux 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 un boîtier RHEL 7 utilisé comme nœud de cluster, ce fichier se présente comme suit :

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


ls /usr/lib/firewalld /etc/firewalld

Nous examinerons ces fichiers de configuration plus loin dans cet article, après avoir ajouté quelques règles ici et là. Il suffit maintenant de vous rappeler que vous pouvez toujours trouver plus d'informations sur les deux outils avec.


man firewalld.conf
man firewall-cmd
man iptables

En dehors de cela, n'oubliez pas de jeter un œil à Reviewing Essential Commands & System Documentation – 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 souhaiterez peut-être vous référer à Configurer le pare-feu Iptables - Partie 8 de la série Linux Foundation Certified Engineer (LFCE) pour vous rafraîchir la mémoire sur les composants internes d'iptables. avant de poursuivre. Ainsi, nous pourrons passer directement aux exemples.

Exemple 1 : autoriser le trafic Web entrant et sortant

Les ports TCP 80 et 443 sont les ports par défaut utilisés par le serveur Web Apache pour gérer les protocoles normaux (HTTP) et sécurisés (HTTPS<) du trafic Web. Vous pouvez autoriser le trafic Web entrant et sortant via 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) les connexions entrantes d'un réseau spécifique

Il peut arriver que vous deviez bloquer tout (ou certains) types de trafic 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

supprimera tous les paquets provenant du réseau 192.168.1.0/24, alors que,


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

autorisera uniquement le trafic entrant via le port 22.

Exemple 3 : Rediriger le trafic entrant vers une autre destination

Si vous utilisez votre boîtier RHEL 7 non seulement comme pare-feu logiciel, mais également comme pare-feu matériel, de sorte qu'il se situe entre deux réseaux distincts, le transfert IP doit avoir déjà été activé sur votre système. . Sinon, vous devez modifier /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 enfin exécutez la commande suivante pour appliquer la modification :


sysctl -p /etc/sysctl.conf

Par exemple, vous pouvez avoir une imprimante installée sur un boîtier interne avec IP 192.168.0.10, avec le service CUPS écoutant sur le port 631 (les deux sur le serveur d'impression et sur votre pare-feu). Afin de transférer 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 de manière séquentielle, alors assurez-vous que les politiques par défaut ou les règles ultérieures ne remplacent pas celles décrites dans les exemples ci-dessus.

Premiers pas avec FirewallD

L'un des changements introduits avec firewalld concerne les zones. Ce concept permet de séparer les réseaux en différentes zones de 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 publique est active et l'interface enp0s3 lui a été attribuée automatiquement. Pour afficher toutes les informations sur une zone particulière :


firewall-cmd --zone=public --list-all

Puisque vous pouvez en savoir plus sur les zones dans le guide de sécurité RHEL 7, nous ne listerons ici que quelques exemples spécifiques.

Exemple 4 : Autoriser les services via le pare-feu

Pour obtenir une liste des services pris en charge, utilisez.


firewall-cmd --get-services

Pour autoriser le trafic Web http et https à travers le pare-feu, avec effet immédiat et lors des démarrages suivants :


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–zone est omis, la zone par défaut (vous pouvez vérifier avec firewall-cmd –get-default-zone) est utilisée.

Pour supprimer la règle, remplacez le mot add par delete dans les commandes ci-dessus.

Exemple 5 : Redirection IP/Port

Tout d'abord, vous devez savoir 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 le public :

Vous pouvez soit activer le masquage pour le public :


firewall-cmd --zone=public --add-masquerade

ou utilisez le masquage en 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

Et 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 habituellement utilisés par un serveur Web et un serveur FTP, et comment modifier la règle correspondante lorsque le port par défaut de ces services sont modifiés. De plus, vous souhaiterez peut-être vous référer au wiki firewalld pour d'autres exemples.

Lire aussi : Exemples de FirewallD utiles pour configurer le pare-feu dans RHEL 7

Conclusion

Dans cet article, nous avons expliqué ce qu'est un pare-feu, quels sont les services disponibles pour en implémenter un dans RHEL 7, et fourni quelques exemples qui peuvent vous aider à démarrer avec cela. tâche. Si vous avez des commentaires, des suggestions ou des questions, n'hésitez pas à nous en faire part en utilisant le formulaire ci-dessous. Merci d'avance!