81 votes

Centos 7 sauvegarde les paramètres iptables

Problème : iptables se réinitialise aux paramètres par défaut après le redémarrage du serveur.

J'essaie d'établir une règle comme celle-ci :

iptables -I INPUT -p tcp --dport 3000 -j ACCEPT

après ça, je le fais :

service iptables save

et il écrit en retour quelque chose comme ceci

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

et après cela, j'ai juste couru (cela a été fait une fois) :

chkconfig iptables on (J'ai lu que cela doit être fait afin de restaurer les paramètres après un redémarrage).

Après cela, je redémarre et je lance cette commande :

systemctl list-unit-files | grep iptables

et je vois que iptables.service est activé, cependant, la règle (pour ouvrir le port 3000) ne fonctionne plus.

Comment puis-je conserver ces paramètres ?

1 votes

Pourquoi n'avez-vous pas simplement utilisé firewalld ? Il est probablement toujours en cours d'exécution.

2 votes

Probablement parce que firewalld n'est pas adapté aux environnements de serveurs...

106voto

HosseinGBI Points 1111

Désactiver firewalld par la commande suivante :

systemctl disable firewalld

Puis installez iptables-service par la commande suivante :

yum install iptables-services

Puis activez iptables comme services :

systemctl enable iptables

Maintenant vous pouvez sauvegarder vos règles iptable par la commande suivante :

service iptables save

0 votes

Ça marche très bien, merci

74voto

Robie Points 100

CentOS 7 utilise Pare-feuD maintenant ! Utilisez le --permanent pour sauvegarder les paramètres.

Exemple :

firewall-cmd --zone=public --add-port=3000/tcp --permanent

Puis recharger les règles :

firewall-cmd --reload

2 votes

Une idée de la raison pour laquelle l'image centos7 de l'AMI AWS n'a pas de firewallD.

6 votes

OU vous pouvez désactiver firewalld et installer le paquet "iptables-services" pour obtenir une compatibilité iptables quasi native :)

1 votes

J'ai essayé de configurer la redirection de port 80 -> 8180 pour lo ( --zone=trusted ) avec firewalld-cmd mais cela ne fonctionne pas (cela fonctionne en --zone=public ) Le faire avec iptables sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8180 ; sudo /sbin/iptables -t nat -I OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8180 fonctionne (mais chaque firewalld --reload perd annule cela)

33voto

qris Points 1141

Sur CentOS 7 Minimal, il se peut que vous deviez installer le fichier iptables-services (grâce à @RichieACC pour le suggestion ) :

sudo yum install -y iptables-services

Et ensuite activer le service en utilisant systemd :

sudo systemctl enable iptables.service

Et lancez l'initscript pour enregistrer vos règles de pare-feu :

sudo /usr/libexec/iptables/iptables.init save

9voto

user38936 Points 171
iptables-save > /etc/sysconfig/iptables

permettra de sauvegarder la configuration actuelle sans avoir à installer d'autres bibliothèques ou services.

1 votes

De son manpage : iptables-save — dump iptables rules to stdout . Il n'enregistre rien, sauf si vous le redirigez vers un fichier quelconque.

2voto

JohannesB Points 201

Peut-être qu'un script comme celui-ci aurait été utile à quiconque ?

Attention, vous perdrez tout ce qui est actuellement configuré car cela supprime firewalld et vide toutes les règles actuelles dans la table INPUT. :

yum remove firewalld && yum install iptables-services

iptables --flush INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv4 is OK
iptables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service iptables save       # Save IPv4 IPTABLES rules van memory naar disk
systemctl enable iptables   # To make sure the IPv4 rules are reloaded at system startup

Je suppose que vous voulez la même chose au cas où votre système pourrait être atteint (maintenant ou plus tard) par le trafic IPv6 :

ip6tables --flush INPUT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv6 is OK
ip6tables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service ip6tables save       # Save IPv6 IPTABLES rules van memory naar disk
systemctl enable ip6tables   # To make sure the IPv6 rules are reloaded at system startup

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X