iptables blockiert alles außer http/https/ssh

iptables blockiert alles außer http/https/ssh

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-saveund/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-sshdKette. 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 INPUTKette erstellt. Normalerweise müssen diese Regeln kommenzuerst in der INPUTKette, vor allen anderen Regeln, die Sie erstellen.

Wenn Sie in Ihrer aktuellen Firewall-Konfiguration iptables mit dem -ASchalter 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

verwandte Informationen