Comme promis dans Partie 1 (“Configurer le routage réseau statique"), dans cet article (Partie 2 de RHCE série) nous commencerons par introduire 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.
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 de règles préalablement définies par l'administrateur système.
Comme vous le savez probablement, en commençant par RHEL 7, le service par défaut qui gère les règles de pare-feu est pare-feu. 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 pare-feu c'est qu'il nous permet de définir des règles basées sur des noms de service pré-configurés (plus de détails dans une minute).
Dans Partie 1, nous avons utilisé le scénario suivant :
Cependant, vous vous souviendrez que nous avons désactivé le pare-feu sur routeur #2 pour simplifier l'exemple puisque nous n'avions pas encore abordé le filtrage de paquets. Voyons maintenant comment nous pouvons 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) à enp0s8 (10.0.0.18):
# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPTER.
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 telnet au serveur Web à partir du RHEL 7 boîte et cours tcpdump à nouveau pour surveiller le trafic TCP entre les deux machines, cette fois avec le pare-feu en routeur #2 activée.
# telnet 10.0.0.20 80. # tcpdump -qnnvvv -i enp0s3 hôte 10.0.0.20.
Que faire si vous souhaitez autoriser uniquement les connexions entrantes au serveur Web (port 80) de 192.168.0.18 et bloquer les connexions d'autres sources dans le 192.168.0.0/24 réseau?
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 maintenant envoyer des requêtes HTTP au serveur Web, à partir de 192.168.0.18 et d'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, l'une des commandes suivantes fera l'affaire :
# telnet 10.0.0.20 80. # wget 10.0.0.20.
Je vous conseille fortement de consulter le Langue riche du pare-feu documentation dans le Wiki du projet Fedora pour plus de détails sur les règles riches.
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) d'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 à l'extérieur, ils "semblent" tous identiques.