Ich habe diese iptables-Regeln festgelegt und sie haben meinen SSH-Zugriff (und alles andere) blockiert:
*filter
# Allow loopback
-I INPUT 1 -i lo -j ACCEPT
# Allow DNS
-A OUTPUT -p udp --dport 53 -j ACCEPT
# allow outbound connection to several website
-A OUTPUT -p tcp -d www.google.com -j ACCEPT
-A OUTPUT -p tcp -d example.com -j ACCEPT
-A OUTPUT -p tcp -d myotherwebsite.tld -j ACCEPT
#allow inbound connection after an allowed outbound
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#allow me and my website to communicate
-A INPUT -s 2.2.2.2/32 -j ACCEPT
-A INPUT -s 1.1.1.1/32 -j ACCEPT
-A INPUT -s 127.0.0.1/8 -j ACCEPT
-A INPUT -j LOG
-A OUTPUT -j LOG
#drop everything else
-P INPUT DROP
COMMIT
In diesem Beispiel ist meine IP 1.1.1.1, meine Website ist 2.2.2.2 und dieser Server ist 3.3.3.3. Ich blockiere alle IPv6-Verbindungen (mein PC ist nur auf IPv4 konfiguriert). Ich bin fast sicher, dass diese Regeln in der Vergangenheit funktioniert haben, aber jetzt nicht mehr.
Antwort1
Fügen Sie Ihrer OUTPUT
Kette eine Regel hinzu, die Pakete für bereits bestehende Verbindungen zulässt. Die typische Regel, die Sie Ihrem Regelsatz hinzufügen, wäre:
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Für die SSH-Verbindung dient dies dem gleichen Zweck wie die Regel, die Sie inIhre frühere Antwort. Es ist jedoch allgemeiner und lässt auch bidirektionale Paketflüsse im Zusammenhang mit allen anderen INPUT
Kettenregeln zu, die Sie in Zukunft hinzufügen, ohne dass in Ihrer OUTPUT
Kette weitere explizite Regeln vorhanden sind.
Antwort2
Scheint, als wäre eine bidirektionale Regel erforderlich. Durch Hinzufügen der folgenden Zeile kann ich auf meinen Server zugreifen:
-A OUTPUT -d 1.1.1.1/32 -j ACCEPT