J'ai installé CentOS 7 avec une configuration minimale (outils os + dev). J'essaie d'ouvrir le port 80 pour le service httpd
, mais il y a un problème avec mon service iptables ... qu'est-ce qui ne va pas? 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.
Avec RHEL 7/CentOS 7, firewalld a été introduit pour gérer iptables. À mon humble avis, firewalld est plus adapté pour les stations de travail que pour les environnements de serveur.
Il est possible de revenir à une configuration plus classique d'iptables. Tout d’abord, arrêtez et masquez le service firewalld:
systemctl stop firewalld
systemctl mask firewalld
Ensuite, installez le paquet iptables-services:
yum install iptables-services
Activer le service au démarrage:
systemctl enable iptables
Gérer le service
systemctl [stop|start|restart] iptables
La sauvegarde de vos règles de pare-feu peut être effectuée comme suit:
service iptables save
ou
/usr/libexec/iptables/iptables.init save
RHEL et CentOS 7 utilisent firewall-cmd au lieu de iptables . Vous devriez utiliser ce genre 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 vous assurer que tout va bien
firewall-cmd --reload
C'est mieux que d'utiliser iptable-save, surtout si vous envisagez d'utiliser des conteneurs lxc ou docker. Le lancement des services Docker ajoutera quelques règles que la commande iptable-save lancera. Si vous sauvegardez le résultat, vous aurez beaucoup de règles à ne PAS sauvegarder. Parce que les conteneurs docker peuvent les changer les adresses IP lors du prochain redémarrage.
Firewall-cmd avec l'option permanente est préférable pour cela.
Vérifiez "man firewall-cmd" ou consultez la documentation officielle du pare-fe pour voir les options. Il existe de nombreuses options pour vérifier les zones, la configuration, son fonctionnement ... La page de manuel est vraiment complète.
Je recommande fortement de ne pas utiliser le service iptables depuis Centos 7
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
Essayez la commande suivante iptables-save
.
J'ai modifié le fichier /etc/sysconfig/ip6tables-config
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 semblait enregistrer les modifications apportées à l’aide des commandes iptables lors d’un redémarrage.
Le mois dernier, j'ai essayé de configurer iptables sur un conteneur LXC VM, mais chaque fois après le redémarrage, la configuration d'iptables n'était pas chargée automatiquement.
Le seul moyen de le faire fonctionner était d'exécuter la commande suivante:
miam-y installer iptables-services; systemctl disable firewalld; systemctl mask firewalld; service iptables redémarrer; service iptables save
Placez la configuration IPtables dans le fichier traditionnel et il sera chargé après le démarrage:
/ etc/sysconfig/iptables
Et pour ajouter, vous devriez également pouvoir faire la même chose pour ip6tables après avoir exécuté la commande systemctl mask firewalld
:
systemctl start ip6tables.service
systemctl enable ip6tables.service
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
Activer et démarrer fail2ban:
systemctl enable fail2ban
systemctl start fail2ban
Référence: http://blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/