Comment migrer les règles du pare-feu Iptables vers un nouveau serveur

De Get Docs
Aller à :navigation, rechercher

Introduction

Lors de la migration d'un serveur à un autre, il est souvent souhaitable de migrer les règles de pare-feu iptables dans le cadre du processus. Ce didacticiel vous montrera comment copier facilement votre jeu de règles iptables actif d'un serveur à un autre.

Conditions préalables

Ce didacticiel nécessite deux serveurs. Nous ferons référence au serveur source, qui a les règles iptables existantes, en tant que Serveur A. Le serveur de destination, vers lequel les règles seront migrées, sera appelé Serveur B.

Vous aurez également besoin d'avoir un accès superutilisateur, ou sudo, aux deux serveurs.

Afficher les règles Iptables existantes

Avant de migrer vos règles iptables, voyons sur quoi elles sont définies. Vous pouvez le faire avec cette commande sur Server A :

sudo iptables -S
Example output:-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 15.15.15.51/32 -j DROP

Les exemples de règles ci-dessus seront utilisés pour illustrer le processus de migration du pare-feu.

Exporter les règles Iptables

La commande iptables-save écrit les règles iptables actuelles dans stdout (sortie standard). Cela nous donne un moyen facile d'exporter les règles de pare-feu vers un fichier, en redirigeant stdout vers un fichier.

Sur le Server A, celui avec les règles iptables que vous souhaitez migrer, utilisez le iptables-save pour exporter les règles actuelles vers un fichier nommé "iptables-export" comme ceci :

cd ~
sudo iptables-save > iptables-export

Cela créera le fichier iptables-export, dans votre répertoire personnel. Ce fichier peut être utilisé sur un autre serveur pour charger les règles de pare-feu dans iptables.

Afficher le contenu du fichier (facultatif)

Examinons rapidement le contenu du fichier. Nous utiliserons la commande cat pour l'imprimer sur le terminal :

cat iptables-export
iptables-export contents:# Generated by iptables-save v1.4.21 on Tue Sep  1 17:32:29 2015
*filter
:INPUT ACCEPT [135:10578]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8364:1557108]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 15.15.15.51/32 -j DROP
COMMIT
# Completed on Tue Sep  1 17:32:29 2015

Comme vous pouvez le voir, le fichier contient la configuration des règles iptables actives. Nous sommes maintenant prêts à copier ce fichier sur notre serveur de destination, Server B.

Copier les règles exportées sur le serveur de destination

Nous devons copier le fichier de règles sur notre serveur de destination, Server B. Pour ce faire, le moyen le plus simple consiste à utiliser scp ou à copier et coller le contenu du fichier dans un nouveau fichier sur Server B. Nous montrerons comment utiliser scp pour copier le fichier sur le réseau dans le répertoire /tmp.

Sur Server A, exécutez cette commande scp. Assurez-vous de remplacer les parties en surbrillance par la connexion et l'adresse IP de votre serveur :

scp iptables-export user@server_b_ip_address:/tmp

Après avoir fourni une authentification appropriée, le fichier sera copié dans le répertoire /tmp sur le serveur B. Notez que le contenu de /tmp est supprimé lors d'un redémarrage - n'hésitez pas à le placer ailleurs si vous souhaitez le conserver.

Importer des règles Iptables

Avec les règles exportées sur le serveur de destination, vous pouvez les charger dans iptables. Cependant, selon votre situation, vous souhaiterez peut-être mettre à jour les règles du fichier avec de nouvelles adresses et plages IP, et peut-être mettre à jour les noms d'interface. Si vous souhaitez modifier les règles avant de les charger, veillez à modifier le fichier /tmp/iptables-export maintenant.

Une fois que vous êtes prêt à charger les règles du fichier iptables-export dans iptables, utilisons la commande iptables-restore pour le faire.

Sur Server B, le serveur de destination, exécutez cette commande pour charger les règles de pare-feu :

sudo iptables-restore < /tmp/iptables-export

Cela chargera les règles dans iptables. Vous pouvez le vérifier avec la commande sudo iptables -S.

Enregistrer les règles

Les règles Iptables sont éphémères, il faut donc faire particulièrement attention à ce qu'elles persistent après un redémarrage. Il est probable que vous souhaitiez effectuer cette étape sur Server B. Nous allons vous montrer comment enregistrer les règles sur Ubuntu et CentOS.

Ubuntu

Sur Ubuntu, le moyen le plus simple de sauvegarder les règles iptables, afin qu'elles survivent à un redémarrage, consiste à utiliser le package iptables-persistent. Installez-le avec apt-get comme ceci :

sudo apt-get install iptables-persistent

Lors de l'installation, il vous sera demandé si vous souhaitez enregistrer vos règles de pare-feu actuelles. Réponse yes, si vous souhaitez enregistrer le jeu de règles actuel.

Si vous mettez à jour vos règles de pare-feu ultérieurement et souhaitez enregistrer les modifications, exécutez cette commande :

sudo invoke-rc.d iptables-persistent save

CentOS 6 et versions antérieures

Sur CentOS 6 et versions antérieures (CentOS 7 utilise FirewallD par défaut), vous pouvez utiliser le script d'initialisation iptables pour enregistrer vos règles iptables :

sudo service iptables save

Cela enregistrera vos règles iptables actuelles dans le fichier /etc/sysconfig/iptables, qui sera chargé par iptables au démarrage.

Conclusion

Toutes nos félicitations! Vos règles de pare-feu ont été migrées de votre serveur d'origine vers le nouveau.