DROP ein Paket abhängig von seinen Optionen oder seinem Typ

DROP ein Paket abhängig von seinen Optionen oder seinem Typ

Aus Testgründen möchte ich bestimmte Pakete je nach Option oder Typ blockieren.

Beispielsweise möchte ich bei einer DHCP-DORA-Transaktion nur DHCP-ACK-Pakete blockieren.

Ist dies mit iptables möglich? Wenn nicht, welche Möglichkeiten gibt es?

Antwort1

Sie könnten das u32Modul verwenden. (Siehe dieManpage füriptables-extensions). Es ist nicht besonders benutzerfreundlich, sollte aber verwendbar sein.

DHCP ist etwas schwierig zu analysieren, da Teile der Daten, einschließlich des DHCP-Nachrichtentyps, in den Optionen enthalten sind, die in beliebiger Reihenfolge stehen können. Die Nachrichtentypoption ist jedoch wahrscheinlich die erste.

Die DHCP-Optionen beginnen bei Offset 236 im UDP-Paket, und die IP- und UDP-Header sind 20+8 Bytes lang. Wir sind also an den Bytes interessiert, die bei Offset 264 beginnen. Die ersten vier Bytes sollten der magische Bezeichner sein, und die nächsten drei können auf die Nachrichtentypoption überprüft werden. Der Typcode ist 0x35, die Länge ist immer 0x01und für DHCPACKden Wert ist 0x05. (DerDas DHCP-Paketformat wird beispielsweise auf tcpipguide.com beschrieben.)

Der Ausdruck für u32könnte also lauten:

--u32 '268 >> 8 = 0x350105'

Das bedeutet einfach, 4 Bytes am Offset 268 (als Big-Endian-Zahl) zu lesen, sie 8 Bits nach rechts zu verschieben (um die ersten drei Bytes zu behalten) und das mit dem erwarteten Wert zu vergleichen.

Wir könnten auch die magische Zahl überprüfen:

--u32 '264 = 0x63825363 && 268 >> 8 = 0x350105'

Mit herkömmlichen Regeln lässt sich leichter prüfen, ob tatsächlich ein UDP-Paket an den richtigen Port gesendet wird. iptablesDaher würden wir zum Abgleichen der erwarteten DHCP-Pakete etwa Folgendes verwenden.

iptables -A foo -m udp --dport bootpc -m u32 --u32 '264 = 0x63825363 && 268 >> 8 = 0x350105'

Wie gesagt, die DHCP-Optionen können jedoch in beliebiger Reihenfolge stehen, daher ist dies keine robuste Methode, insbesondere wenn jemand aktiv versucht, sie zu umgehen. Aber vielleicht könnte es zum Testen funktionieren. Außerdem bin ich davon ausgegangen, dass der IP-Header keine Optionen enthält.

verwandte Informationen