Comment puis-je démarrer/arrêter le service iptables sur Ubuntu?
J'ai essayé
service iptables stop
mais cela donne "service non reconnu".
Pourquoi ça fait ça? Y a-t-il une autre méthode?
Comment puis-je démarrer/arrêter le service iptables sur Ubuntu?
J'ai essayé
service iptables stop
mais cela donne "service non reconnu".
Pourquoi ça fait ça? Y a-t-il une autre méthode?
Il semble qu'il existe plusieurs façons de gérer le pare-feu dans Ubuntu, donc vous pourriez être intéressé par la lecture de ceci : https://help.ubuntu.com/community/IptablesHowTo#Configuration%20on%20startup
Pour supprimer toutes les règles actuelles, vous pouvez utiliser ces commandes (mettez-les dans un script) :
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -F
iptables -t filter -X
En règle générale, vos règles de pare-feu par défaut sont enregistrées dans un fichier (par exemple, /etc/iptables.rules). Au démarrage du système, la commande iptables-restore /etc/iptables.rules
est exécutée pour charger les règles du pare-feu. Ainsi, exécuter la même commande après avoir supprimé toutes les règles à l'aide des commandes ci-dessus entraînera "le rechargement du pare-feu" que vous avez demandé.
Il n'y en a pas par défaut, mais dans les dérivés récents de Debian (y compris Ubuntu), vous pouvez installer un service pour gérer iptables :
sudo apt install iptables-persistent
Vous pouvez ensuite charger des règles précédemment sauvegardées :
systemctl start netfilter-persistent
Consultez ce qui s'est passé :
systemctl status netfilter-persistent
netfilter-persistent.service - configuration persistante de netfilter
Chargé : chargé (/lib/systemd/system/netfilter-persistent.service; activé; préréglage du fournisseur : activé)
Actif : actif (sorti) depuis dim. 2019-03-24 10:49:50 IST; il y a 16min
Principal PID : 1674 (code=sauvegardé, statut=0/RÉUSSI)
Tâches : 0
Mémoire : 0B
CPU : 0
CGroup : /system.slice/netfilter-persistent.service
Mar 24 10:49:50 ubuntu systemd[1]: Démarrage de la configuration persistante de netfilter...
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts : exécution de /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Attention : saut de l'IPv4 (aucune règle à charger)
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts : exécution de /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Attention : saut de l'IPv6 (aucune règle à charger)
Mar 24 10:49:50 ubuntu systemd[1]: Configuration persistante de netfilter démarrée.
Mar 24 11:02:49 ubuntu systemd[1]: Configuration persistante de netfilter démarrée.
Ou arrêtez le service :
systemctl stop netfilter-persistent
Arrêter le service ne videra pas iptables par défaut (c'est-à-dire qu'il ne désactivera pas le pare-feu, voir man netfilter-persistent
).
Il y avait dans Debian Woody (Ubuntu existait-il à cette époque ?), de toute façon il est encore utilisé par les administrateurs système aujourd'hui. Pourquoi ont-ils changé cela, avez-vous une idée ?
Je n'ai aucune idée... mais il me semble me rappeler que c'était l'une de ces choses ennuyantes que j'ai dû résoudre lorsque j'ai configuré le serveur ubuntu 9.10 ou quelque chose comme ça... comme je voulais une distribution de sortie qui contenait un postgres récent et était destinée aux serveurs... sinon je lance arch linux.
Créer un fichier sur /etc/init.d/
touch fw.rc
Rendre le fichier exécutable avec chmod +x
Créer un lien symbolique vers ce fichier sur /etc/rc2.d/
ln -s /etc/init.d/fw.rc S80firewall
Éditer S80firewall et ajouter ce qui suit
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
Vous pouvez ajouter toutes vos règles iptables personnalisées dans ce fichier
Maintenant vous pouvez redémarrer le pare-feu (iptables) en exécutant /etc/rc2.d/S80firewall (doit être fait en tant que root)
J'ai eu le même problème. En fait, il n'y avait pas de iptables-persistent dans /etc/init.d
Donc, j'ai créé le fichier iptables-persistent dans /etc/init.d
nano /etc/init.d/iptables-persistent
et j'ai écrit ce qui suit à l'intérieur :
#!/bin/sh
# Écrit par Simon Richter
# modifié par Jonathan Wiltshire
# avec l'aide de Christoph Anton Mitterer
#
### INFO DE DÉMARRAGE
# Fournit : iptables-persistent
# Requis-Début : mountkernfs $local_fs
# Requis-Stop : $local_fs
# Démarrage-Défaut : 2 3 4 5
# Arrêter-Défaut : 0 1 6
# X-Démarrer-Avant : $network
# X-Arrêter-Après : $network
# Description-Courte : Configuration des règles iptables
# Description : Charge/enregistre les règles iptables actuelles dans/depuis /etc/iptables
# pour fournir un ensemble de règles persistant au moment du démarrage
### FIN INFO DE DÉMARRAGE
. /lib/lsb/init-functions
rc=0
load_rules()
{
log_action_begin_msg "Chargement des règles iptables"
#charge les règles IPv4
if [ ! -f /etc/iptables/rules.v4 ]; then
log_action_cont_msg " sauter IPv4 (aucune règle à charger)"
else
log_action_cont_msg " IPv4"
iptables-restore < /etc/iptables/rules.v4 2> /dev/null
if [ $? -ne 0 ]; then
rc=1
fi
fi
#charge les règles IPv6
if [ ! -f /etc/iptables/rules.v6 ]; then
log_action_cont_msg " sauter IPv6 (aucune règle à charger)"
else
log_action_cont_msg " IPv6"
ip6tables-restore < /etc/iptables/rules.v6 2> /dev/null
if [ $? -ne 0 ]; then
rc=1
fi
fi
log_action_end_msg $rc
}
save_rules()
{
log_action_begin_msg "Enregistrement des règles"
#enregistrer les règles IPv4
#besoin d'au moins iptable_filter chargé :
/sbin/modprobe -q iptable_filter
if [ ! -f /proc/net/ip_tables_names ]; then
log_action_cont_msg " sauter IPv4 (aucun module chargé)"
elif [ -x /sbin/iptables-save ]; then
log_action_cont_msg " IPv4"
iptables-save > /etc/iptables/rules.v4
if [ $? -ne 0 ]; then
rc=1
fi
fi
#enregistrer les règles IPv6
#besoin d'au moins ip6table_filter chargé :
/sbin/modprobe -q ip6table_filter
if [ ! -f /proc/net/ip6_tables_names ]; then
log_action_cont_msg " sauter IPv6 (aucun module chargé)"
elif [ -x /sbin/ip6tables-save ]; then
log_action_cont_msg " IPv6"
ip6tables-save > /etc/iptables/rules.v6
if [ $? -ne 0 ]; then
rc=1
fi
fi
log_action_end_msg $rc
}
flush_rules()
{
log_action_begin_msg "Vidage des règles"
if [ ! -f /proc/net/ip_tables_names ]; then
log_action_cont_msg " sauter IPv4 (aucun module chargé)"
elif [ -x /sbin/iptables ]; then
log_action_cont_msg " IPv4"
for param in F Z X; do /sbin/iptables -$param; done
for table in $(cat /proc/net/ip_tables_names)
do
/sbin/iptables -t $table -F
/sbin/iptables -t $table -Z
/sbin/iptables -t $table -X
done
for chain in INPUT FORWARD OUTPUT
do
/sbin/iptables -P $chain ACCEPT
done
fi
if [ ! -f /proc/net/ip6_tables_names ]; then
log_action_cont_msg " sauter IPv6 (aucun module chargé)"
elif [ -x /sbin/ip6tables ]; then
log_action_cont_msg " IPv6"
for param in F Z X; do /sbin/ip6tables -$param; done
for table in $(cat /proc/net/ip6_tables_names)
do
/sbin/ip6tables -t $table -F
/sbin/ip6tables -t $table -Z
/sbin/ip6tables -t $table -X
done
for chain in INPUT FORWARD OUTPUT
do
/sbin/ip6tables -P $chain ACCEPT
done
fi
log_action_end_msg 0
}
case "$1" in
start|restart|reload|force-reload)
load_rules
;;
save)
save_rules
;;
stop)
# Pourquoi ? parce que si stop est utilisé, le pare-feu est vidé pour une durée variable
# pendant les mises à jour de package, laissant la machine vulnérable
# Il n'est également pas toujours souhaitable de vider pendant la purge
echo "Vidage automatique désactivé, utilisez \"flush\" au lieu de \"stop\""
;;
flush)
flush_rules
;;
*)
echo "Utilisation: $0 {start|restart|reload|force-reload|save|flush}" >&2
exit 1
;;
esac
exit $rc
puis j'ai donné l'autorisation chmod 755.
chmod 755 /etc/init.d/iptables-persistent
Maintenant ça fonctionne parfaitement ! J'espère que cela pourra aider quelqu'un.
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.
1 votes
Je pense que certaines des confusions viennent d'articles comme celui-ci : cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux qui ne s'applique qu'à Fedora/Red Hat et prétend que vous le trouveriez dans
/etc/init.d/
, c'est le premier lien que vous obtenez lorsque vous recherchez 'turn off iptables ubuntu'.0 votes
Il semble que depuis Ubuntu 16.04, iptables-persistent a été remplacé par netfilter-persistent. installez-le.
apt install netfilter-persistent
0 votes
Vous pouvez également le faire : exécutez la commande : ''systemctl disable iptables'' puis la commande ''systemctl enable ufw'', enfin, redémarrez le serveur avec "reboot". Cette procédure maintiendra iptables désactivé.