116 votes

Comment démarrer/arrêter iptables sur Ubuntu ?

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?

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é.

5voto

Akshay Points 143

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é.

3voto

Yogesh Points 19

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).

2voto

Daniel Points 2171

Si je me souviens bien, la façon suggérée de configurer iptables dans les guides d'Ubuntu est de le mettre en place dans le cadre des scripts de réseau. ce qui signifie qu'il n'y a pas de script /etc/init.d/iptables comme c'est le cas dans les systèmes d'exploitation de style BSD.

0 votes

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 ?

0 votes

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.

2voto

jerichorivera Points 489

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)

2voto

capitainabloc Points 29

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.

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