IPtables GeoIp Firewall und Weiterleitung
Hallo,
Ich probiere schon länger herum. Ich möchte eine "Firewall" mit IPtables realisieren, die per GeoIp alle Länder außer Deutschland ausschließt. Soweit so gut das konnte ich auch realisieren. Nun möchte ich aber nachdem der Traffic gefiltert wurde das Ganze an eine bestimmte Ip mit bestimmten Port weiterleiten.
Habe die Weiterleitung schoneinmal realiesiert das Problem dabei war allerdings, dass es dadurch komplett ohne die Filterung durch GeoIp durchging, da es ja durch postrouting komplett am input bzw. output, der ja gefiltert werden würde, vorbeigeht.
Habt ihr da eine Idee wie ich das lösen könnte?
Mit freundlichen Grüßen
Simon
P.S. Als Betriebssystem verwende ich Ubuntu Server 14.04
Ich probiere schon länger herum. Ich möchte eine "Firewall" mit IPtables realisieren, die per GeoIp alle Länder außer Deutschland ausschließt. Soweit so gut das konnte ich auch realisieren. Nun möchte ich aber nachdem der Traffic gefiltert wurde das Ganze an eine bestimmte Ip mit bestimmten Port weiterleiten.
Habe die Weiterleitung schoneinmal realiesiert das Problem dabei war allerdings, dass es dadurch komplett ohne die Filterung durch GeoIp durchging, da es ja durch postrouting komplett am input bzw. output, der ja gefiltert werden würde, vorbeigeht.
Habt ihr da eine Idee wie ich das lösen könnte?
Mit freundlichen Grüßen
Simon
P.S. Als Betriebssystem verwende ich Ubuntu Server 14.04
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 282057
Url: https://administrator.de/contentid/282057
Ausgedruckt am: 23.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Moin Simon,
du musst in der Forward Chain ausfiltern wenn der Traffic per DNAT an einen anderen Host "geforwarded" wird.
Schau dir das Chain-Strukturbild auf folgender Seite mal an, dann verstehst du auch warum:
http://www.iptables.info/en/structure-of-iptables.html (Table 6-3 zeigt die Stationen eines Forwarding-Packets)
Da das Paket in der Prerouting-Tabelle mit einer anderen IP versehen (DNAT) wird geht es nicht durch die INPUT-Filter der Firewall sondern durch den FORWARD-Filter, weil es eben nicht für die Firewall selber vorgesehen ist.
Also: An Punkt 6 ist die Prerouting-Chain mit DNAT, dort wird das Paket mit der neuen IP und Port versehen. Dann geht es zur Routing Decision (Punkt 7), welche entscheidet -> Ist das Paket an die Firewall selber oder an einen anderen Host gerichtet? -> In unserem Fall nicht mehr an die Firewall sondern an den weitergeleiteten Host, und deshalb wird das Paket nicht durch den Input-Filter sondern durch den Forward-Filter geschickt.
Hoffe das bringt etwas Licht in dein Firewall-Verständnis.
Gruß grexit
du musst in der Forward Chain ausfiltern wenn der Traffic per DNAT an einen anderen Host "geforwarded" wird.
Schau dir das Chain-Strukturbild auf folgender Seite mal an, dann verstehst du auch warum:
http://www.iptables.info/en/structure-of-iptables.html (Table 6-3 zeigt die Stationen eines Forwarding-Packets)
Da das Paket in der Prerouting-Tabelle mit einer anderen IP versehen (DNAT) wird geht es nicht durch die INPUT-Filter der Firewall sondern durch den FORWARD-Filter, weil es eben nicht für die Firewall selber vorgesehen ist.
Also: An Punkt 6 ist die Prerouting-Chain mit DNAT, dort wird das Paket mit der neuen IP und Port versehen. Dann geht es zur Routing Decision (Punkt 7), welche entscheidet -> Ist das Paket an die Firewall selber oder an einen anderen Host gerichtet? -> In unserem Fall nicht mehr an die Firewall sondern an den weitergeleiteten Host, und deshalb wird das Paket nicht durch den Input-Filter sondern durch den Forward-Filter geschickt.
INPUT is meant solely for packets to our local host that do not get routed to any other destination.
Gruß grexit
Ja.
Wenn du natürlich auch andere Ports auf der Firewall selber offen haben solltest (z.B. ein dort terminiertes VPN) natürlich zusätzlich auch in der Input-Chain.
Wenn du natürlich auch andere Ports auf der Firewall selber offen haben solltest (z.B. ein dort terminiertes VPN) natürlich zusätzlich auch in der Input-Chain.