Comment migrer de FirewallD vers Iptables sur CentOS 7

introduction

Comme la plupart des autres distributions Linux, CentOS 7 utilise le framework + netfilter + à l’intérieur du noyau Linux afin d’accéder aux paquets qui transitent par la pile réseau. Cela fournit l’interface nécessaire pour inspecter et manipuler les paquets afin de mettre en œuvre un système de pare-feu.

La plupart des distributions utilisent le pare-feu + iptables +, qui utilise les points d’ancrage + netfilter + pour appliquer les règles de pare-feu. CentOS 7 est fourni avec un service alternatif appelé + firewalld + qui remplit le même objectif.

Bien que + firewalld + soit une solution de pare-feu très performante avec des fonctionnalités exceptionnelles, il peut être plus facile pour certains utilisateurs de s’en tenir à + ​​iptables + s’ils sont à l’aise avec sa syntaxe et satisfaits de son comportement et de ses performances. Le + iptables + command est effectivement utilisé par + firewalld + lui-même, mais le + iptables + service n’est pas installé par défaut sur CentOS 7. Dans ce guide, nous montrerons comment installer le service `+ iptables + sur CentOS 7 et migrer votre pare-feu de + firewalld + vers + + iptables + (consultez https://www.digitalocean.com/community/tutorials / comment-configurer-un-firewall-using-firewalld-on-centos-7 [ce guide] si vous souhaitez apprendre comment utiliser FirewallD à la place).

Enregistrez vos règles de pare-feu actuelles (facultatif)

Avant de passer à + ​​iptables + en tant que solution de pare-feu de votre serveur, il est judicieux de sauvegarder les règles actuelles appliquées par + firewalld +. Nous avons mentionné ci-dessus que le démon + firewalld + utilise réellement la commande + iptables + pour parler aux points d’ancrage du noyau + netfilter +. Pour cette raison, nous pouvons vider les règles actuelles à l’aide de la commande + iptables +.

Videz le jeu de règles actuel sur la sortie standard et dans un fichier de votre répertoire de base appelé + firewalld_iptables_rules + en tapant:

sudo iptables -S | tee ~/firewalld_iptables_rules

Faites la même chose avec + ip6tables +:

sudo ip6tables -S | tee ~/firewalld_ip6tables_rules

En fonction des zones + firewalld + 'qui étaient actives, des services activés et des règles transmises de + firewall-cmd + directement à + iptables + `, le jeu de règles vidé pourrait être assez volumineux.

Le service + firewalld + implémente ses stratégies de pare-feu en utilisant les règles + iptables + normales. Il le fait en créant un cadre de gestion utilisant des chaînes + iptables +. La plupart des règles que vous êtes susceptible de voir seront utilisées pour créer ces chaînes de gestion et diriger le flux de trafic entrant et sortant de ces structures.

Les règles de pare-feu que vous décidez de transférer sur votre service + iptables + n’auront pas besoin de recréer la structure de gestion sur laquelle s’appuie `+ firewalld + '. Pour cette raison, le jeu de règles que vous allez implémenter sera probablement beaucoup plus simple. Nous sauvegardons l’ensemble du jeu ici afin de conserver autant que possible les données brutes.

Vous pouvez voir certaines des lignes les plus essentielles pour avoir une idée de la politique que vous devrez recréer en tapant quelque chose comme ceci:

grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

Cela affichera principalement les règles qui aboutissent à une décision finale. Les règles qui ne font que sauter aux chaînes créées par l’utilisateur ne seront pas affichées.

Téléchargez et installez le service Iptables

Pour commencer la transition de votre serveur, vous devez télécharger et installer le package + iptables-service + à partir des référentiels CentOS.

Téléchargez et installez les fichiers de service en tapant:

sudo yum install iptables-services

Cela téléchargera et installera les scripts + systemd + utilisés pour gérer le service + iptables +. Il écrira également des fichiers de configuration + iptables + et + ip6tables + par défaut dans le répertoire + / etc / sysconfig +.

Construisez vos règles de pare-feu Iptables

Ensuite, vous devez construire vos règles de pare-feu + iptables + en modifiant les fichiers + / etc / sysconfig / iptables + et + / etc / sysconfig / ip6tables +. Ces fichiers contiennent les règles qui seront lues et appliquées au démarrage du service + iptables +.

La manière dont vous construisez vos règles de pare-feu dépend de l’installation du processus + system-config-firewall + 'et de son utilisation pour la gestion de ces fichiers. Vérifiez en haut du fichier `+ / etc / sysconfig / iptables + pour savoir s’il est déconseillé ou non de procéder à une modification manuelle:

sudo head -2 /etc/sysconfig/iptables

Si la sortie ressemble à ceci, n’hésitez pas à éditer manuellement les fichiers + / etc / sysconfig / iptables + et + / etc / sysconfig / ip6tables + pour implémenter les règles de votre pare-feu + iptables +:

output# sample configuration for iptables service
# you can edit this manually or use system-config-firewall

Ouvrez et éditez les fichiers avec les privilèges sudo + pour ajouter vos règles:

sudo nano /etc/sysconfig/iptables
sudo nano /etc/sysconfig/ip6tables

Une fois vos règles définies, vous pouvez tester vos règles IPv4 et IPv6 à l’aide des commandes suivantes:

sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
sudo sh -c 'ip6tables-restore -t < /etc/sysconfig/ip6tables'

Si, en revanche, le résultat de l’examen du fichier + / etc / sysconfig / iptables + ressemble à ceci, vous ne devez pas éditer manuellement le fichier:

output# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.

Cela signifie que l’outil de gestion + system-config-firewall + est installé et utilisé pour gérer ce fichier. Toute modification manuelle sera écrasée par l’outil. Si vous voyez cela, vous devez modifier votre pare-feu en utilisant l’un des outils associés. Pour l’interface utilisateur de texte, tapez:

sudo system-config-firewall-tui

Si vous avez installé l’interface graphique, vous pouvez la lancer en tapant:

sudo system-config-firewall

Si vous avez besoin d’aide pour en savoir plus sur les règles et la syntaxe + iptables +, les guides suivants peuvent être utiles, même s’ils sont principalement destinés aux systèmes Ubuntu:

Arrêtez le service FirewallD et démarrez le service Iptables

Ensuite, nous devons arrêter le pare-feu + firewalld actuel et faire apparaître vos services` + iptables`. Nous allons utiliser la construction + && + pour démarrer les nouveaux services de pare-feu dès que le service + firewalld + se sera arrêté correctement:

sudo systemctl stop firewalld && sudo systemctl start iptables; sudo systemctl start ip6tables

Vous pouvez vérifier que + firewalld + ne fonctionne pas en tapant:

sudo firewall-cmd --state

Vous pouvez également voir que les règles que vous avez définies dans le répertoire + / etc / sysconfig + ont été chargées et appliquées en tapant:

sudo iptables -S
sudo ip6tables -S

À ce stade, les services + iptables + et + ip6tables + sont actifs pour la session en cours. Cependant, actuellement, le service + firewalld + est toujours celui qui démarrera automatiquement au redémarrage du serveur.

Il est temps de tester vos stratégies de pare-feu pour vous assurer que vous disposez du niveau d’accès dont vous avez besoin, car vous pouvez redémarrer le serveur pour rétablir l’ancien pare-feu en cas de problème.

Désactiver le service FirewallD et activer les services Iptables

Après avoir testé vos règles de pare-feu pour vous assurer que votre stratégie est correctement appliquée, vous pouvez continuer et désactiver le service + firewalld + en tapant:

sudo systemctl disable firewalld

Cela empêchera le service de démarrer automatiquement au démarrage. Etant donné que le service + firewalld + ne doit pas être démarré manuellement pendant que les services + iptables + sont en cours d’exécution, vous pouvez franchir une étape supplémentaire en masquant le service. Cela empêchera également le service + firewalld + d’être démarré manuellement:

sudo systemctl mask firewalld

Maintenant, vous pouvez activer vos services + iptables + et + ip6tables + afin qu’ils démarrent automatiquement au démarrage:

sudo systemctl enable iptables
sudo systemctl enable ip6tables

Cela devrait compléter la transition de votre pare-feu.

Conclusion

La mise en place d’un pare-feu est une étape essentielle pour la sécurité de vos serveurs. Bien que + firewalld + soit une excellente solution de pare-feu, il est parfois logique d’utiliser l’outil le plus connu ou d’utiliser les mêmes systèmes sur une infrastructure plus diverse.