Ich versuche, nur ausgehende Verbindungen zu bestimmten IP-Adressen zu blockieren, möchte jedoch eingehende Verbindungen von denselben IP-Adressen zulassen.
Soweit ich das Blockieren ausgehender Verbindungen verstehe,sollte nichtBlock, wenn eine eingehende Verbindung erfolgreich hergestellt wurde.
Ich habe grundsätzlich folgende Regeln aufgestellt:
--append OUTPUT --jump DROP --destination x.x.x.x
Und um bestehende Verbindungen zuzulassen:
--append INPUT --in-interface eth0 --match state --state RELATED,ESTABLISHED --jump ACCEPT
Ich möchte, dass Verbindungen zugelassen werden, wenn diese IP-Adresse versucht, eine Verbindung zum Server herzustellen. Wenn mein Server jedoch versucht, eine ausgehende Verbindung herzustellen, sollte dies nicht möglich sein.
Ich möchte den vollständigen Zugriff des Servers auf ausgehende Verbindungen blockieren x.x.x.x
. Wenn jedoch ein Benutzer mit dieser IP-Adresse auf den Server zugreifen möchte, sollte er Websites über bestimmte Ports besuchen können.
Antwort1
Mit Ihren versuchten Firewall-Regeln sind Sie fast am Ziel. Folgendes benötigen Sie, um eingehenden Datenverkehr vom Host zuzulassen 10.10.10.10
und ausgehenden Datenverkehr an diese Adresse zu unterbinden:
- Eingehenden Datenverkehr zulassen (vermutlich zu jedem Port)
- Ausgehende Antworten auf hergestellte eingehende Verbindungen zulassen
- Blockieren des verbleibenden ausgehenden Datenverkehrs
Also,
iptables -A INPUT --src 10.10.10.10 --jump ACCEPT
iptables -A OUTPUT --match state --state RELATED,ESTABLISHED --jump ACCEPT
iptables -A OUTPUT --dst 10.10.10.10 --jump DROP
Sie benötigen die Regel nicht wirklich, INPUT
es sei denn, Sie haben spätere Regeln, die gelten DENY
, REJECT
oder Ihre Richtlinie ist so festgelegt.
Antwort2
Sie verstehen das falsch! So verstehe ich es:
Sehen Sie sich zunächst Ihre input
Regel an. Sie sollte Eingaben von zulassen state
, aber was bedeutet das state
? Es bedeutet, dass der Datenverkehr von Ihrem Server schon einmal an diese Adresse gegangen ist ! Diese Regel wird also nie zutreffen, wenn Sie (für diese Adresse) vollständig out
blockieren .output
Aus diesem Grund ist Ihr gesamtes Vorhaben nicht möglich, state
es ist nur in verfügbar input
.
Es könnte eine Hack-Lösung geben. Aber mit den gegebenen Optionen ist das nicht möglich.
PS
Nach deiner Frage habe ich noch einmal nach einem alten Thema gesucht und raten Sie mal. Nachdem ich deinen Beitrag noch einmal gelesen habe, ist mir aufgefallen, dass das GENAU das ist, was du willst. Schau dir mal anHafenKnocking.
Es fügt Ihrer Anfrage eine Komponente hinzu, die sie noch besser macht: Zufälligkeit.
Richten Sie einfach ein Anklopfschema ein und lassen Sie output
Verbindungen nicht nur zu, sondern auch input
nur, wenn das Richtige knocking
passiert ist.