Frage Wie starte / stoppe ich iptables auf Ubuntu?


Wie kann ich den iptables-Dienst auf Ubuntu starten / stoppen?

Ich habe versucht

 service iptables stop

aber es gibt "unerkannter Service".

Warum tut es so? Gibt es eine andere Methode?


81
2018-04-03 11:15


Ursprung


Ich denke, einige der Verwirrungen kommen von Artikeln wie dieser: cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux das gilt nur für Fedora / Red Hat und behauptet, dass Sie es finden würden /etc/init.d/ es ist (un) hilfreich der Link, den Sie beim googlen 'iptables ubuntu ausschalten' erhalten. - icc97


Antworten:


Ich weiß nichts über "Ubuntu", aber im Allgemeinen ist "iptables" kein Dienst - es ist ein Befehl, um die Netfilter-Kernel-Firewall zu manipulieren. Sie können die Firewall "deaktivieren" (oder stoppen), indem Sie die Standardrichtlinien für alle Standardketten auf "ACCEPT" setzen und die Regeln leeren.

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

(Möglicherweise müssen Sie auch andere Tabellen leeren, z. B. "nat", wenn Sie sie verwendet haben.)

Der folgende Artikel auf der Ubuntu-Website beschreibt die Einrichtung von iptables zur Verwendung mit NetworkManager: https://help.ubuntu.com/community/IptablesHowTo


65
2018-04-03 17:36



Werden damit nicht alle aktuellen Regeln für immer verworfen? Am besten speichern Sie sie zuerst mit sudo iptables-save> / tmp / rules - Jens Timmerman
Das hält den Service nicht auf, sondern lässt alles durch. - Frederik Nielsen
Ah danke. iptables -F Was ich vermisst habe :-) - Cameron
@JensTimmerman iptables-save > /tmp/rules rettete meinen Tag. Vielen Dank - blagus


Sie sind alle falsch :-)

Der Befehl, nach dem Sie suchen, ist:

$ sudo ufw disable

44
2017-08-15 18:40



sicher, wenn wir über UFW reden, aber dieser Beitrag ist über Iptables - webjay
Nun, ich nahm an, es war eine Standardinstallation von Ubuntu, und das hat keine iptables, aber hat ufw. - Frederik Nielsen
ufw ist nur ein Frontend für iptables: "Iptables ist eine Firewall, die standardmäßig auf allen offiziellen Ubuntu-Distributionen installiert ist (Ubuntu, Kubuntu, Xubuntu). Wenn Sie Ubuntu installieren, ist iptables zwar vorhanden, erlaubt aber den gesamten Datenverkehr. Ubuntu 8.04 kommt mit ufw - einem Programm zur einfachen Verwaltung der iptables Firewall. " help.ubuntu.com/community/IptablesHowTo - benjaoming
Könnte sein, aber als ufw == iptables (mehr oder weniger) in Ubuntu, Deaktivieren von ufw ist gleich Deaktivieren von iptables. - Frederik Nielsen
sudo ufw status ausführlich; sudo iptables -L; - user27465


Ich würde zuerst prüfen, ob es installiert ist (es ist wahrscheinlich):

dpkg -l | grep iptables

Unter Ubuntu ist iptables kein Dienst. Um es zu stoppen, müssen Sie Folgendes tun:

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

Um die vorherigen Regeln wiederherzustellen:

iptables-restore < /root/firewall.rules

Dies wurde entnommen http://www.cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux/ und wurde auf vielen Ubuntu 8.X & 9.10 Installationen getestet.


29
2018-04-05 07:46



Ich weiß nicht, warum das so viele upvotes hat, iptables ist ein Kernelmodul. Es ist niemals ein "Dienst", der "gestoppt" werden kann. Sie werden verwendet, um dem Kernel mitzuteilen, wie er mit Verbindungen umgehen soll. Auch in einer Produktionsumgebung sollten Sie Ihre Firewall niemals deaktivieren. Wenn etwas nicht funktioniert, finden Sie die richtige Lösung, nicht die einfache. - Broco


Iptables ist ein Befehl, es ist kein Dienst, daher ist es generell nicht möglich Befehle zu verwenden

service iptables start

oder

service iptables stop

um die Firewall zu starten und zu stoppen, aber einige Distributionen wie Centos haben einen Dienst namens iptables installiert, um die Firewall zu starten und zu stoppen und eine Konfigurationsdatei, um sie zu konfigurieren. Wie auch immer, es ist möglich, einen Dienst zur Verwaltung von ipotables zu erstellen, der ein Skript für diesen Bereich bearbeitet oder installiert. Alle Dienste in Linux, Ubuntu ist keine Ausnahme, sind ausführbare Skripte im Ordner /etc/init.d, der eine Standardschnittstelle implementiert (Start, Stop, Neustart) Ein mögliches Skript sieht folgendermaßen aus:

 #!/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 <ubuntu@james.crocker.name>
 # 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 

Dieses Skript ist Teil davon AnleitungAlle Befehle zum Konfigurieren der Firewall müssen gemäß dem obigen Skript in die Datei /etc/iptables.conf eingefügt werden. Dieses Skript muss in eine Datei namens. Eingefügt werden iptables in /etc/init.d und mach es ausführbar mit

chmod+x *iptables* 

und fügen Sie den Dienst den Runlevels hinzu

update-rc.d iptables defaults

Sie können neue Regeln aus der Shell hinzufügen, diese Regeln sind sofort aktiv und werden zu /etc/iptables.conf hinzugefügt, wenn der Dienst beendet wird (das bedeutet, dass sie beim Herunterfahren des Systems sicher gespeichert werden).

Ich hoffe, dass dies für alle hilfreich sein wird.


16
2017-10-17 07:53





Weil sowohl iptables als auch ufw Möglichkeiten bieten, das zu verwalten Netfilter Firewall in Linux, und da beide standardmäßig in Ubuntu verfügbar sind, können Sie entweder Firewall-Regeln starten und stoppen (und verwalten).

iptables ist flexibler, aber da ufw eine sehr einfache Benutzeroberfläche für einfache und typische Funktionen bietet, können Sie Folgendes verwenden:

sudo ufw disable # Um die Firewall zu deaktivieren

sudo ufw enable  # Um die Firewall zu aktivieren

Verwenden Sie zum Anzeigen der aktuellen Firewalleinstellungen sudo ufw status verbose, oder iptables -L .

Die Ubuntu Community zeigt Seiten an iptablesund UFW habe sehr viel mehr Infos.


6
2017-07-02 22:37





Wenn ich mich recht erinnere, ist die empfohlene Methode, iptables in den Ubuntu-Guides einzurichten, die Einrichtung als Teil der Netzwerkskripte. Das bedeutet, dass es kein /etc/init.d/iptables-Skript gibt, wie es in BSD-Stil-OS gibt.


3
2018-04-03 23:05



Es gab Debian Woody (hatte Ubuntu damals existiert?), Trotzdem wird es heute noch von Sysadmins implementiert. Warum haben sie das geändert?
Ich habe keine Ahnung ... aber ich erinnere mich, dass es eines dieser nervigen Dinge war, die ich herausfinden musste, als ich den Ubuntu-Server 9.10 oder so aufstellte ... da ich eine Release-Distribution haben wollte, die kürzlich Postgres und war für Server ... sonst laufe ich arch linux. - xenoterracide


Sieht so aus, als könnten Sie die Firewall in Ubuntu auf verschiedene Arten verwalten: https://help.ubuntu.com/community/IptablesHowTo#Configuration%20on%20startup

Um alle aktuellen Regeln zu löschen, können Sie diese Befehle verwenden (in ein Skript einfügen):

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

In der Regel werden Ihre Standard-Firewall-Regeln in einer Datei gespeichert (z. B. /etc/iptables.rules). Beim Booten des Systembefehls iptables-restore </etc/iptables.rules ausgeführt, um Firewall-Regeln zu laden. Wenn Sie also den gleichen Befehl ausführen, nachdem Sie alle Regeln mit den obigen Befehlen gelöscht haben, führt dies zu einer "neu geladenen Firewall", nach der Sie gefragt haben.


3
2018-04-05 04:32





Erstellen Sie eine Datei unter /etc/init.d/

touch fw.rc

Machen Sie die Datei ausführbar chmod + x

Machen Sie einen symbolischen Link zu dieser Datei auf /etc/rc2.d/

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

Bearbeiten Sie S80firewall und fügen Sie Folgendes hinzu

iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F

Sie können alle Ihre benutzerdefinierten iptables-Regeln für diese Datei hinzufügen

Jetzt können Sie die Firewall (iptables) neu starten, indem Sie /etc/rc2.d/S80firewall (muss root sein) ausführen


3
2017-10-17 08:37





Ich hatte das gleiche Problem. In der Tat gab es keine iptables-persistent in /etc/init.d

Also habe ich die iptables-persistente Datei in erstellt /etc/init.d

nano /etc/init.d/iptables-persistent

und schrieb folgendes ins Innere:

#!/bin/sh
#       Written by Simon Richter <sjr@debian.org>
#       modified by Jonathan Wiltshire <jmw@debian.org>
#       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

und gab dann chmod 755 Erlaubnis.

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

Jetzt funktioniert es perfekt! Ich hoffe, es kann jemandem helfen.


2
2018-04-17 10:39





Wenn Sie den Ubuntu-Server als VM-Gast (z. B. in VirtualBox) ausführen, dann libvirt kann aktiviert sein. Wenn ja, enthält libvirt einige eingebaute Netzwerkfilter, die iptables verwenden. Diese Filter können wie im Abschnitt Firewall beschrieben konfiguriert werden nwfilters.

Um die iptables-Regeln zu deaktivieren, müssen Sie entweder alle schädlichen Regeln von libvirt entfernen oder Sie können libvirt einfach deaktivieren, wenn Sie sie nicht verwenden - z. installiere eine manuelle Übersteuerungskonfiguration (dann reboot):

sudo bash -c 'echo "manual" > /etc/init/libvirt-bin.override'

2
2018-04-01 14:38





Sie verwenden den für RedHat und CentOS geeigneten Befehl, nicht Ubuntu oder Debian.

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


1
2017-08-13 22:59