Iptables-Spoofing aus 2 Subnetzen

Iptables-Spoofing aus 2 Subnetzen

In meine Firewall eth1 gelangen Pakete aus zwei Subnetzen:

10.111.12.0/24 und 10.10.100.0/24

Ich lege die iptables-Regeln folgendermaßen fest:

 iptables -A INPUT -i eth1 ! -s 10.111.12.0/24 -j DROP
 iptables -A INPUT -i eth1 ! -s 10.10.100.0/24 -j DROP

Aber - die erste Regel erlaubt es nicht, die zweite zu überprüfen, da 10.10.100.0/24 NICHT 10.111.12.0/24 ist und der ersten Regel entspricht. Wie kann ich das beheben?

Antwort1

Der einfachste Weg, dies zu tun, besteht darin, zulässige Pakete zu markieren und später alle nicht markierten Pakete zu verwerfen:

iptables -t mangle -A PREROUTING -i eth1 -s 10.111.12.0/24 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -s 10.10.100.0/24 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -m mark ! --mark 1 -j DROP

Sie sollten bedenken, dass es möglicherweise noch andere Pakete gibt, die Sie durchlassen müssen/möchten.

Antwort2

Eine Kette wäre hier eine nützliche Methode. Eine Kette verhält sich ähnlich wie eine Subroutine oder Funktion. RETURN bedeutet lediglich, dass die Kontrolle für dieses Paket an die vorherige Kette zurückgegeben wird und die Regeln weiterhin ausgewertet werden.

# create a new chain
iptables -t filter -N in_validnet

# all incoming packets on eth1 are evaluated by the chain
iptables -t filter -A INPUT -i eth1 -j in_validnet

# packets from these networks are returned for further evaluation
iptables -A in_validnet -s 10.111.12.0/24 -j RETURN
iptables -A in_validnet -s 10.10.100.0/24 -j RETURN

# everything else gets dropped
iptables -A in_validnet -j DROP

verwandte Informationen