Comment puis-je utiliser iptables sur Centos 7? [fermé]

154

J'ai installé CentOS 7 avec une configuration minimale (outils os + dev). J'essaie d'ouvrir 80 ports pour le httpdservice, mais quelque chose ne va pas avec mon service iptables ... qu'est-ce qui ne va pas avec ça? Qu'est-ce que je fais mal?

# ifconfig/sbin/service iptables save
bash: ifconfig/sbin/service: No such file or directory


# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables status
Redirecting to /bin/systemctl status  iptables.service
iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables start
Redirecting to /bin/systemctl start  iptables.service
Failed to issue method call: Unit iptables.service failed to load: No such file or directory.
Meiblorn
la source
essayez ceci /etc/init.d/iptables save
Satya
8
J'ai la réponse ici . RHEL 7 utilise firewalld
instad

Réponses:

333

Avec RHEL 7 / CentOS 7, firewalld a été introduit pour gérer iptables. À mon humble avis, firewalld est plus adapté aux postes de travail qu'aux environnements de serveurs.

Il est possible de revenir à une configuration iptables plus classique. Tout d'abord, arrêtez et masquez le service firewalld:

systemctl stop firewalld
systemctl mask firewalld

Ensuite, installez le package iptables-services:

yum install iptables-services

Activez le service au démarrage:

systemctl enable iptables

Gérer le service

systemctl [stop|start|restart] iptables

L'enregistrement de vos règles de pare-feu peut être effectué comme suit:

service iptables save

ou

/usr/libexec/iptables/iptables.init save
Sgaduuw
la source
5
Cela ne sauve pas les iptables. Le redémarrage du serveur perd toutes les modifications.
roosevelt
2
Sur mon système, les iptables sont correctement enregistrés. Vous êtes-vous assuré que le service iptables est démarré au démarrage? Vous pouvez le faire en exécutant 'systemctl enable iptables'
Sgaduuw
1
Vous pouvez également faire fonctionner firewalld, ce qui ajoutera des règles iptables supplémentaires à la liste (à chaque redémarrage du système). Pour arrêter firewalld, lancez "systemctl mask firewalld"
TroodoN-Mike
Ajout des informations sur le masquage du pare-feu à la réponse, comme @ TroodoN-Mike l'a suggéré
Sgaduuw
8
@Sgaduuw Pouvez-vous expliquer pourquoi vous pensez que fitewalld n'est pas / moins adapté aux serveurs?
Alexander Groß
98

RHEL et CentOS 7 utilisent firewall-cmd au lieu d'iptables . Vous devez utiliser ce type de commande:

# add ssh port as permanent opened port
firewall-cmd --zone=public --add-port=22/tcp --permanent

Ensuite, vous pouvez recharger les règles pour être sûr que tout va bien

firewall-cmd --reload

C'est mieux que d'utiliser iptable-save, surtout si vous prévoyez d'utiliser des conteneurs lxc ou docker. Le lancement des services docker ajoutera des règles que la commande iptable-save demandera. Si vous enregistrez le résultat, vous aurez beaucoup de règles qui ne devraient PAS être enregistrées. Parce que les conteneurs docker peuvent changer leurs adresses IP au prochain redémarrage.

Firewall-cmd avec option permanente est mieux pour cela.

Vérifiez "man firewall-cmd" ou consultez la documentation officielle de firewalld pour voir les options. Il y a beaucoup d'options pour vérifier les zones, la configuration, comment ça marche ... la page de manuel est vraiment complète.

Je recommande fortement de ne pas utiliser iptables-service depuis Centos 7

Métal3d
la source
1
Excellente explication - a parfaitement fonctionné pour moi. Merci!
digitalformula
1
firewall-cmd --reload ne fonctionne pas. J'ai dû redémarrer en utilisant "systemctl restart firewalld" pour que les changements prennent effet.
Basil Musa du
"Comme firewalld est dynamique, des modifications de sa configuration peuvent être apportées à tout moment et sont mises en œuvre immédiatement. Aucune partie du pare-feu n'a besoin d'être rechargée, il n'y a donc pas de perturbation involontaire des connexions réseau existantes" - de la documentation officielle de firewalld
yicone le
Efficace et propre. Merci beaucoup
Vaibhav
17

J'ai eu le problème que le redémarrage ne démarre pas iptables.

Cela l'a corrigé:

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables
par
la source
Sur CentOS 7 ne fonctionne pas: # systemctl start iptablesdonne Failed to start iptables.service: Unit not found.et # systemctl start ip6tablesdonneFailed to start ip6tables.service: Unit not found.
PKHunter
14

Essayez la commande suivante iptables-save.

João Chambel
la source
man iptables-save - vider les règles iptables sur stdout.
Paul Hargreaves
1
alors nous pouvons utiliseriptables-save > /etc/sysconfig/iptables
dgregory
5

J'ai modifié le /etc/sysconfig/ip6tables-configfichier en changeant:

IP6TABLES_SAVE_ON_STOP="no"

À:

IP6TABLES_SAVE_ON_STOP="yes"

Et ça:

IP6TABLES_SAVE_ON_RESTART="no"

À:

IP6TABLES_SAVE_ON_RESTART="yes"

Cela a semblé enregistrer les modifications que j'ai apportées à l'aide des commandes iptables via un redémarrage.

Creusé
la source
1

Mettez la configuration IPtables dans le fichier traditionnel et elle sera chargée après le démarrage:

/ etc / sysconfig / iptables

BVB Media
la source
1

Le mois dernier, j'ai essayé de configurer iptables sur un conteneur de machine virtuelle LXC, mais à chaque fois après le redémarrage, la configuration iptables n'était pas automatiquement chargée.

Le seul moyen pour moi de le faire fonctionner était d'exécuter la commande suivante:

yum -y installe les services-iptables; systemctl désactiver firewalld; systemctl mask firewalld; redémarrage du service iptables; service iptables enregistrer

BVB Media
la source
0

Et pour ajouter, vous devriez également pouvoir faire de même pour ip6tables après avoir exécuté la systemctl mask firewalldcommande:

    systemctl start ip6tables.service
    systemctl enable ip6tables.service
jman594
la source
0

Si vous le faites et que vous utilisez fail2ban, vous devrez activer les filtres / actions appropriés:

Mettez les lignes suivantes dans /etc/fail2ban/jail.d/sshd.local

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 5
bantime = 86400

Activez et démarrez fail2ban:

systemctl enable fail2ban
systemctl start fail2ban

Référence: http://blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/

Sebas
la source