Using Suricata with CUDA

23 mai 2010

Suricata is a next generation IDS/IPS engine developed by the Open Information Security Foundation.

This article describes the installation, setup and usage of Suricata with CUDA support on a Ubuntu 10.04 64bit. For 32 bit users, simply remove 64 occurances where you find them.

Preparation

You need to download both Developper driver and Cuda driver from nvidia website. I really mean both because Ubuntu nvidia drivers are not working with CUDA.

I’ve first downloaded and installed CUDA toolkit for Ubuntu 9.04. It was straightforward:

sudo sh cudatoolkit_3.0_linux_64_ubuntu9.04.run

To install the nvidia drivers, you need to disconnect from graphical session and close gdm. Thus I’ve done a CTRL+Alt+F1 and I’ve logged in as normal user. Then I’ve simply run the install script:

sudo stop gdm

sudo sh devdriver_3.0_linux_64_195.36.15.run

sudo modprobe nvidia

sudo start gdm

After a normal graphical login, I was able to start working on suricata build

Suricata building

I describe here compilation of 0.9.0 source. To do so, you can get latest release from OISF download page and extract it to your preferred directory:

wget http://openinfosecfoundation.org/download/suricata-0.9.0.tar.gz

tar xf suricata-0.9.0.tar.gz

cd suricata-0.9.0

Compilation from git should be straight forward (if CUDA support is not broken) by doing:

git clone git://phalanx.openinfosecfoundation.org/oisf.git

cd oisf

./autogen.sh

Configure command has to be passed options to enable CUDA:

./configure –enable-debug –enable-cuda –with-cuda-includes=/usr/local/cuda/include/ –with-cuda-libraries=/usr/local/cuda/lib64/ –enable-nfqueue –prefix=/opt/suricata/ –enable-unittests

After that you can simply use

make

sudo make install

Now you’re ready to run.

Running suricata with CUDA support

Let’s first check, if previous step were correct by running unittests:

sudo /opt/suricata/bin/suricata -uUCuda

It should display a bunch of message and finish with a summary:

==== TEST RESULTS ====
PASSED: 43
FAILED: 0
======================

Now, it is time to configure Suricata. To do so we will first install configuration file in a standard location:

sudo mkdir /opt/suricata/etc

sudo cp suricata.yaml classification.config /opt/suricata/etc/

sudo mkdir /var/log/suricata

Suricata needs some rules. We will use emerging threats one and use configuration method described by Victor Julien in his article.
wget http://www.emergingthreats.net/rules/emerging.rules.tar.gz
cd /opt/suricata/etc/
sudo tar xf /home/eric/src/suricata-0.9.0/emerging.rules.tar.gz
As our install location is not standard, we need to setup location of the rules by modifying suricata.yaml:
default-rule-path: /etc/suricata/rules/
as to become:
default-rule-path: /opt/suricata/etc/rules/
The classification-file variable has to be modified too to become:
classification-file: /opt/suricata/etc/classification.config
To be able to reproduce test,  will use a pcap file obtained via tcpdump. For example my dump was obtained via:
sudo tcpdump -s0 -i br0 -w Desktop/br0.pcap
Now, let’s run suricata to check if it is working correctly:
sudo /opt/suricata/bin/suricata -c /opt/suricata/etc/suricata.yaml -r /home/eric/Desktop/br0.pcap
Once done, we can edit suricata.yaml. We need to replace mpm-algo value:
#mpm-algo: b2g
mpm-algo: b2g_cuda
Now, let’s run suricata with timing enable:
time sudo /opt/suricata/bin/suricata -c /opt/suricata/etc/suricata.yaml -r /home/eric/Desktop/br0.pcap 2>/tmp/out.log
With Suricata 0.9.0, the run time for a 42Mo pcap file is with starting time deduced:
  • 11s without CUDA
  • 19s with CUDA

Conclusion

As said by Victor Julien during an IRC discussion, CUDA current performance is clearly suboptimal for now because packets are sent to the card one at a time. It is thus for the moment really slower than CPU version. He is working currently at an improved version which will fix this issue.
An updated code will be available soon. Stay tuned !

Quand ça fonctionne tout seul

19 janvier 2010

Je venais d’avoir l’idée d’une modification d’ulogd2 pour réaliser la chose pratique d’avoir deux sorties sur la même stack. J’ai donc rajouté pour tester la stack suivante à mon fichier ulogd.conf :

stack=log2:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR, \\

print1:PRINTPKT,sys1:SYSLOG,mark1:MARK,emu1:LOGEMU

Les tests ont montré que c’était déjà fonctionnel ! D’un coup, la neuvième de Beethoven par Harnoncourt est encore plus grandiose.

Dan Brown est un génie

31 décembre 2009

Et bien oui, dans Da Vinci Code, il a quand même réussi à passionner le monde avec l’histoire d’un mec super intelligent qui cherche à faire un test de filiation mère-fille pour prouver une paternité.

Il faut être génial pour faire passer un truc pareil. Ou alors, on est tous super stupide…

PS: bonne année 2010

Vers une nouvelle agora ?

30 décembre 2009

Récemment, le Nouvel Observateur a réalisé un dossier intitulé « Internet en procès ». Ce dossier a semble-t-il été motivé par l’apparition de plus en plus fréquente d’informations qui font suffisamment de bruit sur Internet pour devoir être reprises par les médias classiques. Le dossier est intéressant mais l’avis des partisans d’un contrôle d’internet me fascine. L’éternel tentation de la censure est toujours bien présente. On peut certes comprendre qu’au vu des affaires récentes (Jean Sarkozy ou Frédéric Mitterand) une envie d’étouffer la contestation naisse dans l’esprit de certaines personnes.

Pour moi, cette envie est d’autant plus forte que la source de l’information n’a pas de visage, ou plutôt qu’elle n’a pas de visage identifiable. Twitter est l’outil par excellence de cette propagation virale et presque anonyme de l’information. Celle-ci se distingue complètement de ce qui se faisait dans les médias standards où tout finit par prendre un visage (le porte parole d’un collectif quel qu’il soit par exemple). Et s’il n’y a pas de visage c’est par un sondage (qui traite de réponses à des questions formulées par le média lui-même) que la voix du peuple s’exprime. Dans cette fabrication de l’information, la communication se fait toujours d’un individu identifié vers le grand nombre. Or, qui dit identification, dit possibilité de contrôle (par contre direct ou par pression par exemple) et c’est pour cela en bonne partie que les médias traditionnels n’effraient aucun homme politique.

Internet fait d’autant plus peur que 2009 a été l’année de l’émergence de Internet comme lieu politique. De nombreux événements ont été architecturés ou conditionnés par Internet :

  • L’élection de Barack Obama qui a fait une campagne utilisant intelligemment les moyens offert par Internet
  • La contestation en Iran (Internet intervenant notamment pour la diffusion des images et pour la synchronisation des manifestants)
  • La manifestation anti-berlusconi du 5 décembre à Rome organisée par des blogueurs

Ces trois événements relèvent du champ de la politique mais Internet est aussi l’endroit de toutes les contestations. J’en tiens pour preuve que Rage Against The Machine a été le numéro 1 de Noël des charts anglais avec « Killing in the Name of » une chanson de 18 ans d’age. L’origine de ce fait inédit est une volonté d’échapper à la « dictature de X-factor » qui s’est matérialisé par un groupe Facebook dont la popularité a explosé en quelques jours. Là aussi, pas de leader charismatique de la contestation mais un intérêt commun qui se nourrit des contributions de chacun et renverse une institution (ici la programmation médiatique de la prise de la tête des charts par le vainqueur de X-factor). Cette histoire est certes anecdotique mais elle montre que l’influence des médias classiques (ici comme prescripteur) peut-être contrée par un mouvement né spontanément sur Internet.

L’équilibre des forces semble être sur le point de basculer. Internet a maintenant la potentialité de devenir une nouvelle agora globalisée, unique et multiple à la fois. Un lieu où une information plus fluide rend possible un échange des idées et un refus de l’arbitraire. Un lieu où des volontés particulières se concertent, se concentrent et font entendre leur voix. Un lieu où des « gus dans un garage » peuvent changer des lois.

GUG !

Il ne faut pas confondre (version 2)

5 août 2009

Je disais donc, il ne faut pas confondre la coquetterie et la classe. Pour certains, la barrière est difficile à estimer:

Ferrari dorée

Une Ferrari, dorée c'est mieux

Pour reprendre approximativement Clint Eastwood : « Peindre une telle voiture dans cette couleur devrait être considéré comme un crime »

Debian, le retour de la faille SSL

13 mai 2009

La distribution Debian GNU/Linux est habituée au problème de hasard pas si aléatoire que ça. Cela s’était illustré avec la faille openssl et cela vient d’être confirmé par le debian logo en ascii art du boot.

J’en tiens pour preuve le screenshot suivant :

Debian et le retour du SSL

Hé oui, on a clairement sur l’avant-dernière ligne -)SSL,,

Deux hypothèses :

  • Un manque de chance lors de la génération du log par le système image vers ASCII
  • Une jolie autodérision

Hadopi, partage et création

4 mai 2009

Bon, oui c’est vrai, je n’ai pas grand chose à dire là dessus. Alors, je laisse la parole à ceux qui savent l’utiliser :

Partager n’est pas voler de La Quadrature du Net.

Si l’on considère les propos de notre ministre de la culture « ce qui compte c’est l’avenir de l’industrie », il est facile d’avoir un majorant du prix de la liberté du peuple français dans son entier : c’est le chiffre d’affaire des industries « culturelles ».

En route vers le 2.6.30 et encore merci Denis

3 avril 2009

Oui, bon, vous savez sans doute que le noyau Linux 2.6.30 est en cours de réalisation. Mais saviez-vous que grâce à l’excellent Denis Bodor toute une série de patchs a été incorporée au noyau ?

Lors de la rédaction du Hors Série Netfilter de GLMF, j’ai, avec tous les autres rédacteurs (Gwenael, Haypo, Pollux et Toady), voulu faire découvrir les dernières avancées de Netfilter. Et, forcément, lorsque l’on est sur le fil du rasoir et que l’on pousse les choses à fond pour être le plus précis possible, il arrive que l’on découvre des problèmes ou des choses pas aussi pratiques que on le désirerait.

J’ai donc réalisé une série de patchs pour améliorer l’expérience des lecteurs de ce splendide Hors Série Netfilter :

GLMF Hors série n°41

Merci donc à Denis pour nous avoir fait confiance pour ces articles et merci à Patrick McHardy d’avoir accepté mes patchs.

Mon bureau en mode noyau

3 avril 2009

Non, non, vous ne verrez pas dans cet article de screenshots du noyau ! J’ai juste envie de poster ici une capture d’écrans que j’ai réalisée et commentée il y a quelque temps. J’étais à ce moment-là en train de réaliser un des mes développements noyau les plus conséquents et cela m’avait conduit à industrialiser mon environnement de travail pour effectuer développements et tests de la manière la plus efficace possible.

Voici donc la capture :

Espace de travail

La résolution est assez élévée puisque mon bureau est constitué d’un écran 19 » et d’un 22 » placés côte à côte en mode twinview.

Le 22 pouces me permet d’utiliser confortablement un gvim ouvert sur 2 colonnes. Je peux ainsi éditer un fichier en lisant la documentation, ou bien comparer deux fichiers facilement. Sur le 19 pouces de gauche, j’ai fait tourner :

  • le shell pour la compilation du noyau
  • virtualbox pour les tests de modification noyau sans les reboot de machine physique
  • giggle pour l’analyse du patchset en cours de préparation

Je pouvais ainsi étudier les crashs ou les problèmes noyaux tout en lisant le code pour trouver mes erreurs.

Lenteur de subversion en image.

5 mars 2009

J’utilise de plus en plus git mais de nombreux projets sur lesquels je travaille utilise « encore » subversion. Récemment dans le cadre d’une séance de debug nocturne avec Pollux, j’ai tapé une commande subversion sur les sources de NuFW :

svn log -r 5437:5443

Là, ça a pris du temps, beaucoup de temps. Bon, d’accord, subversion ne stocke pas l’historique et il faut aller chercher les informations sur le réseau mais tout de même.

J’ai lancé nf3d pour voir la tête des connexions ouvertes par subversion pour réaliser sa tâche. L’analyse des dégâts a été rapide comme le montre le screenshot suivant :

nf3d : svn log sur le projet NuFW

nf3d : svn log sur le projet NuFW

En blanc, on peut voir les connexions de svn. Je ne m’étonne plus du tout de la lenteur en voyant ce carnage…