Recherche de site Web

Comment effectuer un filtrage de paquets, une traduction d'adresses réseau et définir les paramètres d'exécution du noyau - Partie 2


Comme promis dans la Partie 1 (« Configuration du routage réseau statique »), dans cet article (Partie 2 de la série RHCE), nous commencerons par présenter les principes du filtrage de paquets et de la traduction d'adresses réseau (NAT) dans Red Hat Enterprise Linux 7, avant de plonger dans la définition des paramètres du noyau d'exécution pour modifier le comportement d'un noyau en cours d'exécution si certaines conditions changent ou si des besoins surviennent.

Filtrage de paquets réseau dans RHEL 7

Lorsque nous parlons de filtrage de paquets, nous faisons référence à un processus effectué par un pare-feu dans lequel il lit l'en-tête de chaque paquet de données qui tente de le traverser. Ensuite, il filtre le paquet en effectuant l'action requise en fonction des règles préalablement définies par l'administrateur système.

Comme vous le savez probablement, à partir de RHEL 7, le service par défaut qui gère les règles de pare-feu est firewalld. Comme iptables, il communique avec le module netfilter du noyau Linux afin d'examiner et de manipuler les paquets réseau. Contrairement à iptables, les mises à jour peuvent prendre effet immédiatement sans interrompre les connexions actives – vous n'avez même pas besoin de redémarrer le service.

Un autre avantage de firewalld est qu'il nous permet de définir des règles basées sur des noms de services préconfigurés (nous en reparlerons dans une minute).

Dans la Partie 1, nous avons utilisé le scénario suivant :

Cependant, vous vous souviendrez que nous avons désactivé le pare-feu sur le routeur n°2 pour simplifier l'exemple puisque nous n'avions pas encore abordé le filtrage de paquets. Voyons maintenant comment activer les paquets entrants destinés à un service ou un port spécifique dans la destination.

Tout d'abord, ajoutons une règle permanente pour autoriser le trafic entrant dans enp0s3 (192.168.0.19) vers enp0s8 (10.0.0.18) :

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

La commande ci-dessus enregistrera la règle dans /etc/firewalld/direct.xml :

cat /etc/firewalld/direct.xml

Activez ensuite la règle pour qu'elle prenne effet immédiatement :

firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

Vous pouvez maintenant établir une connexion Telnet avec le serveur Web à partir de la boîte RHEL 7 et exécuter à nouveau tcpdump pour surveiller le trafic TCP entre les deux machines, cette fois avec le pare-feu dans le routeur n°2. activé.

telnet 10.0.0.20 80
tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

Que faire si vous souhaitez autoriser uniquement les connexions entrantes au serveur Web (port 80) à partir du 192.168.0.18 et bloquer les connexions provenant d'autres sources dans le 192.168.0.0/ Réseau 24h/24 ?

Dans le pare-feu du serveur Web, ajoutez les règles suivantes :

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept' --permanent
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop' --permanent

Vous pouvez désormais envoyer des requêtes HTTP au serveur Web, depuis 192.168.0.18 et depuis une autre machine dans 192.168.0.0/24. Dans le premier cas, la connexion devrait se terminer avec succès, tandis que dans le second, elle finira par expirer.

Pour ce faire, n’importe laquelle des commandes suivantes fera l’affaire :

telnet 10.0.0.20 80
wget 10.0.0.20

Je vous conseille fortement de consulter la documentation Firewalld Rich Language dans le wiki du projet Fedora pour plus de détails sur les règles riches.

Traduction d'adresses réseau dans RHEL 7

La Traduction d'adresses réseau (NAT) est le processus par lequel un groupe d'ordinateurs (il peut également s'agir d'un seul d'entre eux) dans un réseau privé se voit attribuer une adresse IP publique unique. En conséquence, ils sont toujours identifiés de manière unique par leur propre adresse IP privée à l’intérieur du réseau, mais de l’extérieur, ils « semblent » tous identiques.