
Ich habe in Ubuntu Änderungen an der iptables-Konfigurationsdatei vorgenommen /etc/iptables/filter
und möchte sie neu laden. Ich habe die Manpage gelesen und auch gegoogelt, konnte die Informationen aber nicht finden. Für jede Hilfe bin ich dankbar.
Antwort1
Normalerweise befinden sich Ihre Firewall-Regeln in der Konfigurationsdatei/etc/iptables.firewall.rules
Um die in Ihrer Datei definierten Regeln zu aktivieren, müssen Sie sie an folgende Adresse senden iptables-restore
(Sie können auch eine andere Datei verwenden):
sudo iptables-restore < /etc/iptables.firewall.rules
Und Sie können mit folgendem überprüfen, ob sie aktiviert sind:
sudo iptables -L
Wenn Sie bei jedem Start des Computers dieselben Regeln aktivieren möchten, erstellen Sie diese Datei:
sudo nano /etc/network/if-pre-up.d/firewall
Mit diesem Inhalt:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.firewall.rules
Und erteile ihm die Erlaubnis zur Ausführung:
sudo chmod +x /etc/network/if-pre-up.d/firewall
Hoffe es hilft dir =)
Beispieldatei für /etc/iptables.firewall.rules
:
*filter
# Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT
# Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allow SSH connections
#
# The -dport number should be the same port number you set in sshd_config
#
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Allow ping
-A INPUT -p icmp -j ACCEPT
# Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT
Bearbeitung 2021-08:
Hatte gerade ein Problem beim Upgrade auf Ubuntu 20.04.2 LTS. Der Speicherort von iptables-restore
hat sich von /sbin/iptables-restore
nach geändert /usr/sbin/iptables-restore
.
Überprüfen Sie unbedingt whereis iptables-restore
den Standort Ihres Systems, sonst wird Ihre Netzwerkschnittstelle nicht angezeigt.
Wenn Sie nach einem Upgrade kein Netzwerk haben, können Sie den Grund hiermit überprüfen. sudo systemctl status networking.service -l
In meinem Fall:
Failed to start Raise network interfaces.
if-pre-up.d/firewall: 2: /sbin/iptables-restore: not found
Antwort2
Am einfachsten geht das durch einen Neustart (wenn das Folgende nicht funktioniert, führen Sie einen Neustart durch und prüfen Sie, ob sich dadurch die Änderung ergeben hat).
Am zweiteinfachsten ist es, die Daemons mithilfe von iptables-Konfigurationen neu zu starten (Google: Daemon Ubuntu neu starten).
Beispiele (hängt von Ihrer Konfiguration ab):
/etc/init.d/iptables restart
/etc/init.d/networking restart
/etc/init.d/firewall restart
Antwort3
Wenn Sie Ihre Regeln ausgeführt haben, werden sie bereits ausgeführt und müssen nicht neu geladen werden. Falls Sie eine Konfigurationsdatei haben, diese aber noch nicht ausgeführt wurde, ist die beste Methode, die ich bisher gesehen habe, die Verwendung iptables-apply
(einer iptables-Erweiterung).
iptables-apply -t 60 your_rules_file
Dadurch werden die Regeln 60 Sekunden lang angewendet (standardmäßig 10 Sekunden) und zurückgesetzt, wenn Sie sie nicht bestätigen. Dies schützt Sie, falls Sie aufgrund der Regeln aus dem System geworfen werden (z. B. wenn Sie über SSH arbeiten).
Als Ersatz können Sie Folgendes verwenden:
iptables-restore < your_rules_file; sleep 60; iptables-restore < clean_rules
Antwort4
Nachdem ich ein wenig gegoogelt hatte, fand ich Folgendes zum Neustarten von iptables: . . sudo /etc/init.d/firewall restart