• Wer ist schuld am Amoklauf von Winnenden?

    Published 12. March 2009 at 11:38 am - 3 Comments

    So...

  • McColo offline – Spam Volume drops

    Published 13. November 2008 at 5:44 pm - No Comments

    After...

  • Mugabe, Zimbabwe, die Wahl, die Waffen und die “An Yue Jiang”

    Published 21. April 2008 at 11:08 pm - No Comments

    Seit meinem Besuch im August 2007 im westlichen Teil von Zimbabwe geht mir dieses Thema verständlicherweise viel näher als vorher. Nicht allein weil ich live miterleben konnte, wie das Land zu Grunde geht, sondern auch wegen der Anteilnahme, die unsere südafrikanischen Führer der Situation entgegenbrachten und wie sie uns dafür sensibilisierten (links unsere damalige Reiseroute mit Endstation in Zimbabwe). Damals schon wurde hoffnungsvoll auf die kommenden Wahlen geblickt, die nun am 29.3.2008 stattfanden und bei denen allgemein gehofft wurde, dass der 84-jährige Robert Mugabe nach 28-jähriger Amtszeit als Regierungsoberhaupt endlich abgelöst wird. Kein Zweifel besteht daran, dass er in seiner Amtszeit das Land mit diktatorischen und unmenschlichen Aktionen heruntergewirtschaftet hat – im Februar diesen Jahres hatte die Inflationsrate 100.000% überschritten. Die Touristenhochburg Zimbabwes liegt im westlichen Zipfel: Die mächtigen Victoria Falls sind nach wie vor ein beliebtes Reiseziel und sehr beeindruckend, doch auch im Touristädtchen mit dem gleichen Namen macht sich die Armut bemerkbar. An den Tankstellen gibt es keinen Sprit, Softdrinks werden in Kneipen als Spezialität des Tages gelistet (und das ist kein Scherz) und der allgemeine Trend eines jeden zimbabwischen Einwohners ist das Pilgern nach Victoria Falls, um sich dort wenigstens ein kleines Scheibchen vom Tourismus abschneiden zu können. Schlangen über hunderte Meter bilden sich morgens an einem kleinen 7-Eleven Laden, weil das Gerücht umherging, es gäbe Brot. Einheimische kommen dir alle paar Meter entgegen und wollen dir ihre geschnitzten Figuren verkaufen – nicht für Geld, sondern im Tausch gegen dein altes verschwitzes T-Shirt oder deine dreckigen Schuhe. Rießige Hotelanlagen wie “The Kindgom“, das einst Michael Jackson gehörte, sind wie leergefegt – trotz Tourismus. Die Fressmeile im Inneren des Hotelkomplexes hat nur noch wenige Läden geöffnet und wenn man sich eine Pizza bestellen willst, muss man auf 40% seiner Toppings verzichten oder Kompromisse eingehen. Für ein Trinkgeld von einem Dollar wirst du hier zu einem Gott erklärt. Ich habe noch nie jemanden so glücklich über ein kleines Trinkgeld gesehen. Der Import vom Nachbarland Zambia geht nur stückchenweise voran. An der Grenze entstehen unglaublich lange Wartezeiten, nur als Touri darf man schnell mal vor, um die Wasserfälle von der anderen Seite zu sehen. Und jetzt kam Ende März endlich die Wahl und versprach Besserung, die Oppositionspartei Movement for Democratic Change (MDC) hatte eine sehr gute Ausgangsposition und allem Anschein nach auch gewonnen. Allem Anschein nach? Ja, denn nach drei Wochen sind die Wahlergebnisse immernoch nicht veröffentlicht. Mugabe verlange eine erneute Auszählung, da es in einigen Gebieten Probleme bei der Wahl gab – natürlich waren das die MDC-Hochburgen. Da der Verdacht auf möglichen Wahlbetrug schon vor der Wahl (berechtigterweise) laut wurde, waren viele unabhängige Wahlbeobachter im Land. Jüngst bei den Neuauszählungen kam es hier jedoch zu massivem Wahlbetrug, zu Gewalt, Unterdrückung und Folterung Oppositioneller in Foltercamps. Südafrikanische Zeitungen berichten unterdessen, dass Militär, Polizei, der Geheimdienst und sogar Mugabes Leibwache dringend neue Munition und neue Waffen brauchten. Mehrere Lieferungen – Hauptlieferant China – hätten storniert werden müssen, weil die Staatsbank die Rechnungen nicht habe bezahlen können. Und ohne Waffen ist schließlich keine Unterdrückung möglich. Leider jedoch ist die Staatskasse leer und ohne Geld keine Waffen. Im Endeffekt also keine Macht mehr. Doch wer Mugabe kennt, weiß, dass er sich trotz internationalem Druck keine Möglichkeit entgehen lässt, sich an seine Macht zu klammern. Waffen müssen also her, koste es was es wolle. Die “An Yue Jiang” ist ein chinesisches Containerschiff mit genau dieser lang ersehnten Lieferung: 70 Tonnen Waffen und Munition (laut taz: 1.500 Raketen, 2.500 Mörsergranaten, fast 100 Granatwerfer und 3,5 Millionen Schuss Munition) , angeblich im Wert von 40 Millionen EURO. Damit hätte man dem Land auf ganz andere Art und Weise dienen können. Blöd auch, dass Zimbabwe keinen Hafen hat und alle möglichen Anlaufhäfen von Regierungen geführt werden, die verhindern wollen, dass diese Waffen nach Zimbabwe gelangen. So wurde die Entladung im südafrikanischen Durban verweigert und der Transport nach Zimbabwe ohnehin verboten. Abgesehen davon: Die [deutsche] Entwicklungsbank habe dem simbabwischen Staatskonzern “Iron & Steel Company” zur Errichtung eines Stahlwerks 1998 und dann noch einmal als Aufstockung im Jahr 2000 insgesamt Kredite “in zweistelliger Millionenhöhe” bewilligt, für die Simbabwe eine Staatsgarantie übernommen habe. Da Mugabe also noch Schulden in etwa der Höhe der Ladung bei der deutschen Kreditanstalt für Wiederaufbau (KfW) hat, hat die Entwicklungsbank eine Pfändung der Ladung erwirkt – bevor diese jedoch in Kraft treten konnte, legte das Schiff hastig wieder von Durban ab, Ziel unbekannt. Aufgetankt werden konnte vorher allerdings nicht mehr. Es darf gespannt sein, wo das Schiff wiederentdeckt wird und welchen Hafen es versucht anzulaufen. Ob Angola erreicht werden kann steht aufgrund des Spritmangels in den Sternen und ob die Ladung bei Mugabe ankommt ist mehr als fraglich, aber aufgrund der internationalen Mobilmachung und der Entladungsweigerung der südafrikanischen Transportarbeitergewerkschaft hoffentlich eher unwahrscheinlich. Nicht nur Südafrikas Mann im internationalen Bund der Transportarbeiter macht Front gegen Mugabe. Auch die 300.000 Mitglieder starke südafrikanische Transportarbeitergewerkschaft Satawu hat ihre Kollegen in der ganzen Welt aufgerufen, das chinesische Schiff zu boykottieren. Diese Nachrichten habe ich zum Anlass genommen, mir nochmal Lord of War anzuschauen. Denn immernoch aktuell: “While private gunrunners continue to thrive, the Worlds biggest arms suppliers are the U.S., U.K., Russia, France and China.” “They are also the five permanent members of the U.N. Security Council.” Quellen (soweit nicht anders angegeben): Mugabe erwartet Schiffsladung voller Waffen aus China vom 18.4. Mugabes Waffen-Frachter auf dem Weg nach Angola vom 20.4. Mugabe wartet auf das Geisterschiff vom 21.4. Deutsche Förderbank jagt Mugabes Waffenschiff vom 21.4. Meine Fotos von Victoria Falls in Zimbabwe Update: Die Ladung wird wohl zurückgerufen, Spiegelartikel vom 22.4.: Die “An Yue Jiang” mit ihrer Ladung aus Waffen und Munition konnte in keinem afrikanischen Hafen entladen werden, weil der internationale Verband der Transportarbeiter (ITF) überall auf dem Kontinent zu einem Boykott des Schiffes aufgerufen hatte. Heute hatte sich die letzte Hoffnung der Reederei zerschlagen: Als letztes Land weigerte sich auch Angola die Ladung zu löschen. Angolas oberster Hafendirektor Filomeno Mendonca hat den letzten möglichen Schlupfwinkel an Afrikas Küste versperrt. “Das Schiff darf keinen angolanischen Hafen anlaufen,” erklärte er in einem Interview mit Radio Luanda. Menschenrechtsgruppen und Gewerkschaften hatten davor gewarnt, die Waffen nach Simbabwe gelangen zu lassen. Dort mehren sich seit den umstrittenen Wahlen vor mehr als drei Wochen Berichte über blutige Übergriffe gegen die Opposition.

Howto: Copy/Tee/Clone network traffic using iptables

Having to work with Netflow data for my Diploma Thesis I invested quite some time into the following challenge:
Our Routers export Cisco Netflow Data to HOST A, where we do accounting. I want to use HOST B for several Netflow-related tests. The Routers only support one target for their netflow export (as mentioned, this target is HOST A).

Problem: How is it possible to clone the incoming stream of packets at HOST A and forward one copy into HOST A’s userspace (for accounting applications) and the other copy to HOST B’s userspace (for testing purposes)?
The specific challenge is that I do not want a simple FORWARD to HOST B, but a FORWARD of a copy, so that I can work with the data on both machines. This leads to the next problem: Packets arriving at HOST B have the Destination IP address of HOST A in their IP header. We need to rewrite this IP at HOST B so that userspace applications are able to process these packets (which they are not, if the packets are not destined to HOST B’s address).


Note in advance: Despite all efforts this tutorial only works for connectionless udp traffic. A successful 3-way-handshake on HOST A prevents HOST B (despite IP-address rewriting) from accepting the packets in userspace. It just does not work, I appreciate any comments on that. Remember that tee is normally used to clone traffic to another host for passive sniffing and traffic analysis. Note as well, that even if you might want to keep this approach centralized and rewrite the packet’s IP addresses already at HOST A in the POSTROUTING chain, this will not work: Teed packets do not yet show up anywhere within the iptables structures to avoid interfering with the original packet’s table traversal. This is subject to change, though. Thanks to Jan Engelhardt for this information.

So here is how we achieve this goal (tested on Debian Etch stable):
History: There used to be a tee option for an experimental ROUTE target, patchable into iptables with patch-o-matic (pom). This will not work on recent kernels and is deprecated!

This is what we will do on HOST A: Get xtables-addons from http://dev.computergmbh.de:
wget http://dev.computergmbh.de/files/xtables/xtables-combined-1.5.4.1.tar.bz2
This includes a current snapshot of iptables.

Xtables-addons is the proclaimed successor to patch-o-matic(-ng). It
contains extensions that were not accepted in the main Xtables
package.
Xtables-addons is different from patch-o-matic in that you do not have
to patch or recompile either kernel or Xtables(iptables).

Untar, configure, make and make install. Should you run into problems of the kind
warning: #warning You need either CONFIG_NF_CONNTRACK or CONFIG_IP_NF_CONNTRACK
change into your kernel source directory and adapt your kernel. Therefore, look for the Networking option, find the Netfilter (formerly know as ipchains) framework entry and enable the appropriate options. I also ran into problems saying
warning: #warning You have CONFIG_IP_NF_CONNTRACK enabled, but CONFIG_IP_NF_CONNTRACK_MARK or CONFIG_IP_NF_CONNTRACK_SECMARK are not (please enable)
so be sure to enable these options as well in the IP: Netfilter Configuration section.
Save your config and build a new kernel. However, this is not topic of this tutorial.
Should there be other errors because of a special addon, deactivate it in the xtables-addons directory using the mconfig file. Be sure not to deactivate the TEE target, as this is the one we need. The installation success of the xtables-addons may largely depend on the kernel that is being used. If it just won’t work for you with your existing kernel, try another one. I had successful setups on 2.6.23.16 and 2.6.18.6

After successful installation fire the command
iptables -t mangle -A PREROUTING -p udp --dport 9996 -j TEE --gateway <IP of HOST B>.
This command will clone all incoming udp-packets to port 9996 in kernelspace and copy them to HOST B, where we will rewrite the IP addresses. Confirm by typing
iptables -t mangle -L
This will list your rules in the mangle table.
Should there be an error about an unknown table/target/chain, then xtables-addons did not build/install successful, probably because of some missing kernel options.

On HOST B: You do not need xtables-addons here, but only some standard iptables version, as you only need the default DNAT target (Your kernel needs to support it however. Therefore, make sure to have the IPv4 connection tracking support (required for NAT) option enabled in the IP: Netfilter Configuration section of your netfilter kernel category).
iptables -t nat -A PREROUTING -p udp -d <IP of HOST A> --dport 9996 -j DNAT --to-destination <IP of HOST B>:<Port>

That should be it. Now test your setup. You will need three hosts: HOST A and B and another HOST C where you will generate (UDP-) packets. Get a packet generator (I used IP-Packet) and download it to HOST C. Read its documentation, create a config file and fire up your packets to HOST A port 9996. But first, make sure you have a listening process on both, HOST A and B running and waiting for your packets on that specific port. The easiest way will be to use netcat in udp-mode:
nc -ulp9996 on HOST A and on HOST B respective with the port used there. Fire your packets and both netcat instances should receive the UDP payload data. If only HOST A gets them, your tee or DNAT is not working. Debug yourself :( That’s what I need to do now, as well, because teeing seems to work perfectly fine from one host, but not from the other… Same settings, though, this is just not fair :’(

6 Responses to “Howto: Copy/Tee/Clone network traffic using iptables”

  1. Gavin Carr Says:

    Great post Bjou, thanks a lot. I hadn’t realised there’d been a replacement released for -j ROUTE –tee, so your post and the pointer to the xtables-addons were much appreciated. I got this working on CentOS-5 after a bit of hacking on xtables-addons to workaround the RedHat-isms in their 2.6.18 kernel.

  2. ibrahim Says:

    The cloned packets entering loop and coming again if the host B can not accessible on network. Is there any way change the cloned packet destination IP to host B before the sending.

    Regards

  3. j.engelh Says:

    >Despite all efforts [...] only works for connectionless udp traffic. A successful 3-way-handshake on HOST A prevents HOST B (despite IP-address rewriting) from accepting the packets in userspace.

    Correct, because the B kernel’s TCP engine does not know anything about A’s connections and would drop them. While you could get packet delivery to userspace working, just what would you do if the B userspace tries to send packets back? That would not be good…
    IMO, the best solution here is to use libnetfilter_queue to get the packets delivered to userspace.

  4. Mina Says:

    How do you get this to work with centos5?

  5. Mina Says:

    how did you get this to work on centos first gavin????

  6. andre's chaos » linux network traffic clone Says:

    [...] xtables tee 对于udp无连接状态的没问题 对于tcp就不行了 得用libpcap+raw socket自己些程序了 Categories: Uncategorized Tags: Comments (0) Trackbacks (0) Leave a comment Trackback [...]

Leave a Reply