iptables restart gibt zurück: Ungültiges Argument „restart“

iptables restart gibt zurück: Ungültiges Argument „restart“

Ich habe Ubuntu LTSseit ein paar Jahren ein System am Laufen. Gestern hat ein Stromausfall meinen Computer zum Absturz gebracht. Als die Stromversorgung wiederhergestellt war, habe ich das System gebootet und alles schien einwandfrei zu starten, mit Ausnahme von iptables. Wann immer ich dieses System neu gestartet habe, ufwstartet immer, obwohl ich es so konfiguriert habe, dass es nicht funktioniert. Ich bevorzuge es iptableseinfach, weil ich es weiß, also fahre ich „ufw“ herunter und konfiguriere es neu iptablesund starte es mit dem folgenden Verfahren neu:

sudo ufw disable

sudo ip_tables_reset.sh
sudo ip_tables_config.sh

sudo iptables restart

und verifizieren Sie mit

sudo iptables -S

was zurückgibt:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Nun die Linie

sudo iptables restart

kehrt zurück mit

Bad argument 'restart'

Ich verwende dieses Verfahren jedoch seit Jahren treu. Ich habe meines Wissens nach in letzter Zeit keine Updates installiert.

Was hat sich geändert, dass diese zuverlässige Methode nun versagt?

Referenz: iptables v1.4.12

Antwort1

Sie erwähnen diesen Befehl

sudo iptables restart  #  wrong usage, its not a service

Mit den folgenden Skripten können Sie Ihre Firewall sichern, aktivieren oder deaktivieren ... Überprüfen Sie zunächst, ob das Paket installiert ist

dpkg -l | grep iptables

eine Möglichkeit, aktuelle iptable-Einstellungen anzuzeigen

sudo iptables -L -n

die kanonische Art, aktuelle iptable-Regeln anzuzeigen (nur anzeigen, keine Änderungen)

sudo iptables-save

Wenn Sie sich Ihre Regeln ansehen, blockieren Sie den eingehenden Verkehr nicht (Ihre Schutzschilde sind deaktiviert), wohingegen die folgenden Regeln den gesamten eingehenden Verkehr mit Ausnahme der angegebenen Ports blockieren.

*filter
:INPUT DROP [331:17104]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [9727:1360720]
:GitHubWebHooks - [0:0]
-A INPUT -p tcp -m tcp --dport 9000 -j GitHubWebHooks
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A GitHubWebHooks -s 192.30.252.0/22 -j ACCEPT
-A GitHubWebHooks -j DROP
COMMIT

Beachten Sie, dass ich eine bestimmte IP-Adresse 192.30.252.0/22 ​​öffne, damit ich einen Server ausführen kann, der auf eingehenden Datenverkehr lauscht. Alle Erwähnungen von GitHubWebHooks sind also optional. Wenn Sie das Obige in einer Datei speichern und diese Datei dann als Ihre Regeln laden, können Sie loslegen. Schilde hoch

bevor Sie etwas ändern, lassen Sie uns Ihre aktuellen Regeln in eine Ausgabedatei übertragen

vi firewall_save_current_rules.sh

#!/usr/bin/env /bin/bash

set -o errexit  #  exit on error

#  dump current iptable rules to file

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

# ........

curr_timestamp=$(date '+%H%M%S%N')

curr_rulesfile=/etc/iptables/rules.v4.${curr_timestamp}.current_rules

rulesdir=$( dirname $curr_rulesfile )

if [[ ! -d $rulesdir ]]; then

    echo about to create dir $rulesdir
    mkdir $rulesdir
fi

iptables-save > ${curr_rulesfile}  # dump current iptable rules into output timestamped file


echo curr_rulesfile $curr_rulesfile

Führen Sie nun das obige Skript aus, um Ihre aktuellen iptable-Regeln zu speichern

sudo ./firewall_save_current_rules.sh

Der folgende Code definiert einen neuen Regelsatz, mit dem wir standardmäßig den gesamten eingehenden Datenverkehr mit Ausnahme bestimmter Teile blockieren (insbesondere den SSH-Port sowie die normalen HTTP- und HTTPS-Ports).

vi firewall_shields_up.sh

#!/usr/bin/env /bin/bash

set -o errexit  #  exit on error

#  create new set of iptable rules from inline list of rules - Block all incoming traffic by default except specified

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

# ........


curr_timestamp=$(date '+%H%M%S%N')

new_rulesfile=/etc/iptables/rules.v4.${curr_timestamp}.new_rules

rulesdir=$( dirname $new_rulesfile )

if [[ ! -d $rulesdir ]]; then

    echo about to create dir $rulesdir
    mkdir $rulesdir
fi

# .....  park into a new file below list of iptable rules

cat << EOF > ${new_rulesfile}

*filter
:INPUT DROP [331:17104]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [9727:1360720]
:GitHubWebHooks - [0:0]
-A INPUT -p tcp -m tcp --dport 9000 -j GitHubWebHooks
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A GitHubWebHooks -s 192.30.252.0/22 -j ACCEPT
-A GitHubWebHooks -j DROP
COMMIT

EOF


echo new_rulesfile $new_rulesfile


iptables-restore <  ${new_rulesfile}  #  engage new iptable rules from file


echo here is new iptable settings

iptables-save


#  ... if you are running docker you will want to bounce its daemon
#  sudo service docker restart

Führen Sie das obige Skript aus, um neue iptable-Regeln zu definieren

sudo ./firewall_shields_up.sh 

der Vollständigkeit halber ist unten ein Skript zur Fehlerbehebung aufgeführt, das die Firewall effektiv deaktiviert, indem es den gesamten ein- und ausgehenden Datenverkehr öffnet ... führen Sie es aus, wenn Sie eine leere Seite wünschen, führen Sie jedoch „firewall_shields_up.sh“ aus, um eine ordnungsgemäße Firewall wiederherzustellen

vi firewall_shields_down.sh

#!/usr/bin/env /bin/bash

set -o errexit  #  exit on error

#  open up all incoming and outgoing traffic ... effectively disabling the firewall

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

# ........ lets first backup current rules into timestamped file

curr_timestamp=$(date '+%H%M%S%N')

curr_rulesfile=/etc/iptables/rules.v4.${curr_timestamp}.current_rules_before_opening_up_all_traffic

rulesdir=$( dirname $curr_rulesfile )

if [[ ! -d $rulesdir ]]; then

    echo about to create dir $rulesdir
    mkdir $rulesdir
fi

iptables-save > ${curr_rulesfile}  # dump current iptable rules into output timestamped file

echo curr_rulesfile $curr_rulesfile

# ... now alter iptables to lower shield




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



# ... display new iptable rules

echo
echo following are the new iptable rules after we opened up all incoming and outgoing traffic
echo

iptables-save

verwandte Informationen