simi123
Goto Top

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

Content-ID: 282057

Url: https://administrator.de/forum/iptables-geoip-firewall-und-weiterleitung-282057.html

Ausgedruckt am: 23.12.2024 um 18:12 Uhr

122990
Lösung 122990 05.09.2015 aktualisiert um 12:56:47 Uhr
Goto Top
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.

INPUT is meant solely for packets to our local host that do not get routed to any other destination.
Hoffe das bringt etwas Licht in dein Firewall-Verständnis.

Gruß grexit
simi123
simi123 05.09.2015 um 11:16:02 Uhr
Goto Top
Ich muss meine GeoIp Regel also im Forward einstellen?

Also so: iptables -A FORWARD -m geoip ! --source-country DE-j DROP

Und dann per iptables -t nat -A PREROUTING -p tcp --dport 12345 -j DNAT --to-destination 111.111.111.111:12345 weiterleiten?
122990
Lösung 122990 05.09.2015 aktualisiert um 12:56:58 Uhr
Goto Top
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.
simi123
simi123 05.09.2015 um 12:57:09 Uhr
Goto Top
Danke face-smile