![iptables blockiert alles außer http/https/ssh](https://rvso.com/image/769301/iptables%20blockiert%20alles%20au%C3%9Fer%20http%2Fhttps%2Fssh.png)
Ich habe diese iptables-Konfiguration auf meinem VPS, auf dem Wordpress laufen soll. Ich möchte alle eingehenden Anfragen blockieren, außer http auf Port 80, https auf Port 443 und ssh auf Port 22.
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 f2b-sshd tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain f2b-sshd (1 references)
num target prot opt source destination
1 REJECT all -- [retracted_ip] anywhere reject-with icmp-port-unreachable
2 REJECT all -- [retracted].com anywhere reject-with icmp-port-unreachable
3 RETURN all -- anywhere anywhere
Ich habe online einige Befehle gefunden, bin mir aber nicht sicher, ob sie mit fail2ban in Konflikt geraten könnten.
Antwort1
Allgemein:
Firewall-Regeln werden in der Reihenfolge verarbeitet, in der sie festgelegt wurden und angezeigt werden (in der Ausgabe der Befehle iptables -L -v -n --line-numbers
, iptables -L -v -n -t nat --line-numbers
, iptables-save
und/oder ähnlicher Befehle).
Das Erstellen neuer Regeln in den falschen Ketten und/oder in der falschen Reihenfolge führt zu unerwünschten Konsequenzen, beeinträchtigt die Funktionalität, die Sicherheit und/oder sperrt gültigen Datenverkehr.
Beachten Sie, dass das Ausführen von Low-Level iptables
-Befehlen zur Verwaltung Ihrer Firewall nicht immer die beste Lösung ist. Soweit ich weiß, ist in Ubuntu die Verwendung des UFW-Tools vorzuziehen und funktioniert zuverlässig in Verbindung mit fail2ban.
Fail2ban erstellt eine oder mehrere benutzerdefinierte Ketten (die den Großteil der Arbeit zum Blockieren bestimmter fehlerhafter IP-Adressen übernehmen) wie die f2b-sshd
Kette. Normalerweise überlassen Sie die Verwaltung der Einträge in diesen Ketten fail2ban.
Zusätzlich erstellt fail2ban Regeln für die benutzerdefinierten Ketten, die es in der INPUT
Kette erstellt. Normalerweise müssen diese Regeln kommenzuerst in der INPUT
Kette, vor allen anderen Regeln, die Sie erstellen.
Wenn Sie in Ihrer aktuellen Firewall-Konfiguration iptables mit dem -A
Schalter zum Anhängen neuer Regeln an die INPUT-Kette verwenden, sollte alles funktionieren.
Durch Ausführen der folgenden Befehle werden die üblichen Regeln angehängt, um eine Firewall zu erstellen, die SSH, HTTP und HTTPS zulässt und den gesamten anderen eingehenden Datenverkehr blockiert.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
Antwort2
Lassen Sie uns zuerst ein Backup erstellen :)
sudo iptables-save > ./mybackup
Wenn die Verbindung verloren geht und Sie KVM möchten, können Sie ganz einfach zum Startpunkt Ihrer Sicherung zurückkehren.
sudo iptables-restore < ./mybackup
Dann können Sie mit dem Hinzufügen von Regeln beginnen
sudo iptables -A INPUT -d YOURIPPUBLIC -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -d YOURIPPUBLIC -j DROP
das oben genannte, wenn Sie eine Firewall für eine andere IP als Ihre Instanz einrichten möchten, YOURIPPUBLIC: 33.33.33.33 oder mit der Netzmaske 33.33.33.33/32
VERWANDTE, HERGESTELLTE - Wenn Sie vor der Verbindung dazu gekommen sind, überspringen Sie einfach alle folgenden Firewall-Regeln. Um eine Verbindung herzustellen, befolgen Sie die folgenden Regeln :)
wenn Sie das gesamte Netzwerk wollen
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -j DROP
Sie können es zur späteren Bearbeitung speichern:
iptables-save > /.mynew.iptables.list.txt