web-dev-qa-db-fra.com

Centos 7 enregistrer les paramètres iptables

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

J'essaie de définir une règle comme ceci:

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

après cela je fais:

service iptables save

et il écrit quelque chose comme ça

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

et après cela, je viens de courir (cela a été fait une fois):

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

Après cela, je redémarre et exécute 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 conserver ces paramètres?

63
user1463822

CentOS 7 utilise FirewallD maintenant!

Exemple:

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

règles de rechargement:

firewall-cmd --reload
71
roothahn

Désactivez firewalld avec la commande suivante:

systemctl disable firewalld

Installez ensuite iptables-service en suivant la commande:

yum install iptables-services

Activez ensuite iptables en tant que services:

systemctl enable iptables

Vous pouvez maintenant enregistrer vos règles iptables en suivant la commande:

service iptables save
76
HosseinGBI

Sur CentOS 7 Minimal, vous devrez peut-être installer le iptables-services package (merci à @ RichieACC pour le suggestion ):

Sudo yum install -y iptables-services

Et puis activez le service à l'aide de systemd:

Sudo systemctl enable iptables.service

Et exécutez l'initscript pour enregistrer vos règles de pare-feu:

Sudo /usr/libexec/iptables/iptables.init save
22
qris

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

Attention, vous perdrez tout ce qui est actuellement configuré car il supprime firewalld et vide toutes les règles actuelles de 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 à tout moment 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
2
JohannesB
iptables-save

enregistrera la configuration actuelle sans avoir besoin d'installer d'autres bibliothèques ou services.

2
stormdrain

Vous pouvez modifier directement le fichier/etc/sysconfig/iptables. Rechargez le service iptables pour recharger les règles de ce fichier. Pourtant, comme on vous l'a déjà dit, firewalld est le nouveau système de pare-feu par défaut pour Centos, et c'est une bonne occasion d'apprendre à l'utiliser, vous ne pensez pas?

1
stoned