Comment migrer les règles du pare-feu Iptables vers un nouveau serveur
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.