web-dev-qa-db-fra.com

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 il donne "service non reconnu".

Pourquoi le fait-il? Existe-t-il une autre méthode?

87
neha soni

Je ne connais pas "Ubuntu", mais sous Linux en général, "iptables" n'est pas un service - c'est une commande pour manipuler le pare-feu du noyau netfilter. Vous pouvez "désactiver" (ou arrêter) le pare-feu en définissant les politiques par défaut sur toutes les chaînes standard sur "ACCEPTER" et en supprimant les règles.

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F

(Vous devrez peut-être également vider d'autres tables, telles que "nat", si vous les avez utilisées)

L'article suivant sur le site Web Ubuntu décrit la configuration d'iptables à utiliser avec NetworkManager: https://help.ubuntu.com/community/IptablesHowTo

76
JMusgrove

Vous vous trompez tous :-)

La commande que vous recherchez est:

$ Sudo ufw disable
47
Frederik Nielsen

Je voudrais d'abord vérifier s'il est installé avec (il l'est probablement):

dpkg -l | grep iptables

Sur Ubuntu, iptables n'est pas un service. Pour l'arrêter, vous devez procéder comme suit:

Sudo iptables-save > /root/firewall.rules
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Afin de restaurer vos règles précédentes:

iptables-restore < /root/firewall.rules

Cela a été tiré de http://www.cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux/ et a été testé sur de nombreuses installations Ubuntu 8.X & 9.10.

31
Embreau

Iptables est une commande ce n'est pas un service, donc en général il n'est pas possible d'utiliser des commandes comme

service iptables start

ou

service iptables stop

afin de démarrer et d'arrêter le pare-feu, mais certaines distributions comme centos ont installé un service appelé iptables pour démarrer et arrêter le pare-feu et un fichier de configuration pour le configurer. Quoi qu'il en soit, il est possible de faire un service pour gérer l'édition d'ipotables ou l'installation d'un script pour cette portée. Tous les services sous Linux, ubuntu ne fait pas exception, sont des scripts exécutables dans le dossier /etc/init.d, qui implémentent une interface standard (démarrer, arrêter, redémarrer) Un script possible ressemble à ceci:

 #!/bin/sh -e
 ### BEGIN INIT INFO
 # Provides:          iptables
 # Required-Start:    mountvirtfs ifupdown $local_fs
 # Default-Start:     S
 # Default-Stop:      0 6
 ### END INIT INFO

 # July 9, 2007
 # James B. Crocker <[email protected]>
 # Creative Commons Attribution - Share Alike 3.0 License (BY,SA)
 # Script to load/unload/save iptables firewall settings.

 PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

 IPTABLES=/sbin/iptables
 IPTABLES_SAVE=/sbin/iptables-save
 IPTABLES_RESTORE=/sbin/iptables-restore

 IPTABLES_CONFIG=/etc/iptables.conf

 [ -x $IPTABLES ] || exit 0

 . /lib/lsb/init-functions


 case "$1" in
 start)
    log_action_begin_msg "Starting firewall"
         type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
         type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
    ;;

 stop)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Flushing ALL firewall rules from chains!"
    if $IPTABLES -F ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Deleting ALL firewall chains [Warning: ACCEPTING ALL PORT SERVICES!]"
    if $IPTABLES -X ; then
        $IPTABLES -P INPUT ACCEPT
        $IPTABLES -P FORWARD ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 save)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 force-reload|restart)
    log_action_begin_msg "Reloading firewall configuration [Warning: POTENTIAL NETWORK INSECURITY DURING RELOAD]"
    $IPTABLES -F
    $IPTABLES -X
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 *)
    echo "Usage: /etc/init.d/iptables {start|stop|save|restart|force-reload}"
    exit 1
    ;;
 esac

 exit 0 

Ce script fait partie de ce tutoriel , toutes les commandes pour configurer le pare-feu doivent être insérées, selon le script ci-dessus, dans le fichier /etc/iptables.conf. Ce script doit être inséré dans un fichier appelé iptables dans /etc/init.d et le rendre exécutable en utilisant

chmod+x *iptables* 

et ajoutez le service aux niveaux d'exécution à l'aide

update-rc.d iptables defaults

Vous pouvez ajouter de nouvelles règles à partir de Shell, ces règles seront immédiatement actives et seront ajoutées à /etc/iptables.conf lorsque le service s'arrête (cela signifie qu'elles seront sauvegardées à coup sûr lors de l'arrêt du système).

J'espère que cela sera utile à tout le monde.

18
puzzle-it

Parce que iptables et ufw sont des moyens de gérer le pare-feu netfilter sous Linux, et parce que les deux sont disponibles par défaut dans Ubuntu, vous pouvez utiliser soit pour démarrer et arrêter (et gérer) les règles de pare-feu.

iptables est plus flexible, mais comme ufw fournit un langage d'interface très simple pour une fonction simple et typique, vous pouvez utiliser:

Sudo ufw disable # Pour désactiver le pare-feu

Sudo ufw enable # Pour activer le pare-feu

Pour voir les paramètres actuels du pare-feu, utilisez Sudo ufw status verbose, ou iptables -L.

Les pages de documentation de la communauté Ubuntu sur iptables et UFW contiennent beaucoup plus d'informations.

6
belacqua

Il semble qu'il existe plusieurs façons de gérer le pare-feu dans Ubuntu, vous pouvez donc être intéressé à lire ceci: https://help.ubuntu.com/community/IptablesHowTo#Configuration%20on%20startup

Pour supprimer toutes les règles actuelles, vous pouvez utiliser ces commandes (les mettre 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

Dans le cas habituel, vos règles de pare-feu par défaut sont enregistrées dans un fichier (par exemple, /etc/iptables.rules). Lors du démarrage de la commande système iptables-restore </etc/iptables.rules exécuté pour charger les règles de pare-feu. Ainsi, l'exécution de 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é.

3
Powerman

Créez un fichier sur /etc/init.d/

touch fw.rc

Rendre le fichier exécutable chmod + x

Créez un lien symbolique vers ce fichier sur /etc/rc2.d/

ln -s /etc/init.d/fw.rc S80firewall

Modifiez le S80firewall et ajoutez 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 sur ce fichier

Vous pouvez maintenant redémarrer le pare-feu (iptables) en exécutant /etc/rc2.d/S80firewall (doit être root)

2
jerichorivera

Si vous utilisez le serveur Ubuntu en tant qu'invité VM (par exemple dans VirtualBox), alors libvirt peut être activé. Si tel est le cas, libvirt contient des filtres réseau intégrés qui utilisent Ces filtres peuvent être configurés comme décrit dans la section pare-feu sur nwfilters .

Pour désactiver les règles iptables, vous devrez soit supprimer toutes les règles incriminées de libvirt, soit vous pouvez simplement désactiver libvirt si vous ne l'utilisez pas - par exemple installez une configuration de remplacement manuel (puis redémarrez):

Sudo bash -c 'echo "manual" > /etc/init/libvirt-bin.override'
2
Pierz

Si je me souviens bien, la façon suggérée de configurer iptables dans les guides ubuntu est de le configurer dans le cadre des scripts de mise en réseau. ce qui signifie qu'il n'y a pas de script /etc/init.d/iptables comme il y en a dans les OS de style BSD.

2
xenoterracide

J'ai eu le même problème. En fait, il n'y avait pas de persistance iptables dans /etc/init.d

J'ai donc créé le fichier persistant iptables dans /etc/init.d

nano /etc/init.d/iptables-persistent

et a écrit ce qui suit à l'intérieur:

#!/bin/sh
#       Written by Simon Richter <[email protected]>
#       modified by Jonathan Wiltshire <[email protected]>
#       with help from Christoph Anton Mitterer
#

### BEGIN INIT INFO
# Provides:          iptables-persistent
# Required-Start:    mountkernfs $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Start-Before:    $network
# X-Stop-After:      $network
# Short-Description: Set up iptables rules
# Description:       Loads/saves current iptables rules from/to /etc/iptables
#  to provide a persistent rule set during boot time
### END INIT INFO

. /lib/lsb/init-functions

rc=0

load_rules()
{
    log_action_begin_msg "Loading iptables rules"

    #load IPv4 rules
    if [ ! -f /etc/iptables/rules.v4 ]; then
        log_action_cont_msg " skipping IPv4 (no rules to load)"
    else
        log_action_cont_msg " IPv4"
        iptables-restore < /etc/iptables/rules.v4 2> /dev/null
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    #load IPv6 rules    
    if [ ! -f /etc/iptables/rules.v6 ]; then
        log_action_cont_msg " skipping IPv6 (no rules to load)"
    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 "Saving rules"

    #save IPv4 rules
    #need at least iptable_filter loaded:
    /sbin/modprobe -q iptable_filter
    if [ ! -f /proc/net/ip_tables_names ]; then
        log_action_cont_msg " skipping IPv4 (no modules loaded)"
    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

    #save IPv6 rules
    #need at least ip6table_filter loaded:
    /sbin/modprobe -q ip6table_filter
    if [ ! -f /proc/net/ip6_tables_names ]; then
        log_action_cont_msg " skipping IPv6 (no modules loaded)"
    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 "Flushing rules"

    if [ ! -f /proc/net/ip_tables_names ]; then
        log_action_cont_msg " skipping IPv4 (no module loaded)"
    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 " skipping IPv6 (no module loaded)"
    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)
    # Why? because if stop is used, the firewall gets flushed for a variable
    # amount of time during package upgrades, leaving the machine vulnerable
    # It's also not always desirable to flush during purge
    echo "Automatic flushing disabled, use \"flush\" instead of \"stop\""
    ;;
flush)
    flush_rules
    ;;
*)
    echo "Usage: $0 {start|restart|reload|force-reload|save|flush}" >&2
    exit 1
    ;;
esac

exit $rc

puis a donné la permission à chmod 755.

chmod 755 /etc/init.d/iptables-persistent

Maintenant ça marche parfaitement! J'espère que cela peut aider quelqu'un.

2
capitainabloc

Vous utilisez la commande appropriée pour RedHat et CentOS, pas Ubuntu ou Debian.

http://www.cyberciti.biz/faq/ubuntu-server-disable-firewall/

1
iconoclast

Il n'y en a pas par défaut, mais dans les dérivés Debian récents (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 enregistrées:

systemctl start netfilter-persistent

Revoyez ce qui s'est passé:

systemctl status netfilter-persistent

netfilter-persistent.service - netfilter persistent configuration

       Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)
       Active: active (exited) since Sun 2019-03-24 10:49:50 IST; 16min ago
     Main PID: 1674 (code=exited, status=0/SUCCESS)
        Tasks: 0
       Memory: 0B
          CPU: 0
       CGroup: /system.slice/netfilter-persistent.service

Mar 24 10:49:50 ubuntu systemd[1]: Starting netfilter persistent configuration...
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Warning: skipping IPv4 (no rules to load)
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Warning: skipping IPv6 (no rules to load)
Mar 24 10:49:50 ubuntu systemd[1]: Started netfilter persistent configuration.
Mar 24 11:02:49 ubuntu systemd[1]: Started netfilter persistent configuration.

Ou arrêtez le service:

systemctl stop netfilter-persistent

Arrêter le service, par défaut, pas vider les iptables (c'est-à-dire ne désactivera pas le pare-feu, voir man netfilter-persistent).

1
Yogesh