Archive pour la catégorie ‘Sécurité’

Using Suricata with CUDA

Dimanche 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 !

Total annihilation (version C)

Jeudi 20 novembre 2008

Bon, je m’amuse en ce moment à rajouter une fonctionnalité à snort-inline. En finissant mes modifications, je suis tombé sur le morceau de code suivant :

/* Check to see if we got a Reinjection rule or not */
if(!pv.ipfw_reinject_rule)
{
pv.ipfw_reinject_rule = 0;
}

Pour les non développeurs c’est un peu l’équivalent de :

Si t’es mort, meurt encore

Tient, ça pourrait faire un titre de James Bond.

Chrome de Google, attention à vos droits !

Mercredi 3 septembre 2008

Chrome, je pense que presque tout le monde le sait, est le nouveau navigateur développé par google. Il est rapide, sécurisé, simple d’utilisation et surtout pratique pour Google !

Si l’on prend la peinde de lire la licence de Chrome (qu’il est nécessaire d’accepter pour utiliser le logiciel) on découvre des choses hallucinantes :

Vous conservez les droits d’auteur et tous les autres droits en votre possession vis-à-vis du Contenu que vous fournissez, publiez ou affichez sur les Services ou par le biais de ces derniers. En fournissant, publiant ou affichant le contenu, vous accordez à Google une licence permanente, irrévocable, mondiale, gratuite et non exclusive permettant de reproduire, adapter, modifier, traduire, publier, présenter en public et distribuer tout Contenu que vous avez fourni, publié ou affiché sur les Services ou par le biais de ces derniers.

Comment dire simplement, vous donnez un droit d’usage illimité à Google sur l’ensemble des documents et textes passant par le navigateur. Imaginons par exemple que JK Rowling envoie la suite cachée de Harry Potter par webmail à son éditeur en utilisant Chrome. Elle accorde donc gratuitement à google le droit de traduction, publication de l’ouvrage. Pratique !

Mais rassurons-nous en lisant la fin de cette article 11.1 :

Cette licence a pour seul but de permettre à Google d’afficher, de distribuer et de promouvoir les Services et peut être révoquée pour certains Services, selon les dispositions des Conditions supplémentaires applicables à ces Services.

Je suis tout rassuré d’un coup.

Journée utilisateurs du Netfilter Workshop

Mercredi 3 septembre 2008

La journée utilisateurs du Netfilter Workshop aura lieu à Paris le 29 septembre 2008. Cette journée prendra la forme d’une série de conférences sur Netfilter. Les sujets seront variés allant de la description de l’utilisation de Netfilter chez un ISP dannois à la présentation par David Miller (maiteneur de la couche réseau de Linux) ou Patrick McHardy (Leader du projet Netfilter) de leurs derniers développements.

Je donnerai d’ailleurs lors de cette journée une conférence sur ulogd2, la nouvelle infrastructure de journalisation de Netfilter.

L’événement aura lieu dans les locaux de l’ESIEA dans le 13ème arrondissement de Paris. L’accès est libre et une inscription est demandée.

Lutter contre la faille DNS avec Netfilter

Lundi 14 juillet 2008

La découverte récente d’une méthode permettant d’exploiter des failles dans la plupart des implémentations DNS à fait beaucoup de bruits. J’en tiens pour preuve des articles dans ZDNET (Colmatage d’une faille de grande envergure sur les serveurs DNS), Le Monde et les échos.

Si l’on étudie ce qu’écrit le CERT dans l’article Multiple DNS implementations vulnerable to cache poisoning, une méthode de contournement de la faille consiste à rendre aléatoire le port source utilisé pour les requêtes DNS.

Lors de recherches faites sur le bloquage de Skype, j’avais implémenté la traduction d’adresse avec attributions de port source aléatoire dans Netfilter et Iptables. Cette modification avait été faite pour empêcher l’établissement de connexions directes entre deux machines situés derrière des routeurs malgré la traduction d’adresse. Cette fonctionnalité est disponible dans Linux depuis le noyau 2.6.21. Elle peut-être utilisée pour lutter contre la faille DNS.

Si les serveurs DNS relais ou les clients se trouvent derrière votre pare-feu Netfilter, il suffit de rajouter la règle de NAT suivante :

iptables -I POSTROUTING -t nat -p udp --dport 53 -j SNAT --to IP --random

Netfilter va alors rendre aléatoire le port source des connexions DNS tel qu’il est vu derrière la passerelle (et donc pour le monde extérieur) luttant ainsi contre les attaques de cache poisonning.

Présentation de ulogd2 et nf3d au SSTIC 2008

Mardi 10 juin 2008

J’ai présenté Ulogd2 et nf3d lors de la rump session du SSTIC 2008.
Après une brève introduction sur l’architecture de ulogd2, j’ai montré le résultat de mon travail sur la visualisation des connexions et des paquets loggués, nf3d.
Les slides sont disponibles.

Je me rend compte que je n’ai pas encore parlé de nf3d ici. Il s’agit d’un logiciel représentant sur une vue 3D les connexions Netfilter et les paquets loggués. Comme une image vaut mieux qu’un long discours :




Les cylindres représentent les connexions et les sphères les paquets loggués. L’axe des X est le temps et l’axe des Y indique la succession des connexions. Chaque paquet est représenté sur la connexion dont il est issu.

Wolfotrack ou comment gérer les connexions de Netfilter

Mercredi 30 avril 2008

Après des années de développements acharnés, l’interface ultime de gestion du suivi de connexions de Netfilter est enfin disponible :


Wolfotrack, c’est son nom, est une interface de gestion du suivi de connexions basé sur wolfeinstein 3D. Chaque soldat réprésente une connexion et pour tuer une connexion, il suffit de tuer le soldat correspondant.

Interview dans le cadre des RMLLs

Vendredi 25 avril 2008

Je vais donner une conférence sur NuFW et les interactions entre espace utilisateur et noyau dans Netfilter lors des rencontres mondiales du logiciel libre 2008 à Mont-de-Marsans.

Dans ce cadre, Christophe Brocas m’a gentillement interviewé par mail. L’interview est en ligne sur le site des RMLLs : Interview Éric Leblond.

À noter qu’une interview de l’excellent Pablo Neira est elle aussi disponible sur le site.

Spam et astuce d’affichage

Vendredi 25 avril 2008

J’ai reçu ce spam qui semblait à première vue avoir complètement passé indemne mes logiciels anti-spams. Le sujet notamment n’était pas taggué *SPAM*. Enfin, je ne voyais pas qu’il était taggué :

Received: by d10.nt.com (Postfix, from userid 0)
id D73C21E4490; Thu, 24 Apr 2008 23:03:13 +0200 (CEST)
To: XXXXXXXX@XXX.fr
Subject: Invitation XXXXXXXX 2008
Date: Thu, 24 Apr 2008 23:03:13 +0200
From: SPAMMER <noreply@mailing.spam.com>
Message-ID: <67190e93d75ec77aea41896d6c6d6f89@localhost.localdomain>
X-Priority: 3
X-Mailer: EmailingSoft Powered [version 1.73]
MIME-Version: 1.0
Content-Type: text/html; charset= »iso-8859-1″
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 7.7 (+++++++)
Subject: *SPAM* Invitation XXXXXXXXX 2008

En mettant le sujet en double, le spammer a réussi à profiter d’une différence de traitement entre le logiciel anti spam et le lecteur de mail. Encore une dépense d’énergie et d’intelligence bien utile…

Cisco en avance sur le poisson d’Avril et Halloween

Jeudi 20 mars 2008

La companie Cisco, leader des équipements réseau, a le sens de l’humour mais a aussi un problème de calendrier. Elle a en effet annoncé qu’à partir du 26 mars, les correctifs de sécurité sur IOS ne seront publiés que deux fois par an, les 4eme mercredi du mois de mars et de septembre. À mon avis, ils devaient vouloir sortir l’annonce le premier avril pour faire une blague à leurs utilisateurs. J’imagine en effet Renault annoncer :

On ne vous préviendra que deux fois par an si nos voitures sont susceptibles d’exploser.

Cisco fait la même chose mais précise tout de même dans le communiqué:

Si un groupe terroriste ou quelqu’un d’autre déclenche les explosions en rafale, on vous préviendra rapidement en faisant une annonce exceptionnelle.

On est dans le grandiose, dans la victoire du marketing sur le bon sens. Cisco fait en effet pire que Microsoft qui réalise les mises à jour tous les premiers mardi du mois. De 12 annonces par an, on passe à 2. C’est prodigieux, surtout si l’on considère que le fonctionnement de la majeure partie d’internet est assuré par les équipements du fabriquant.

Voilà donc pour le côté poisson d’avril, passons donc maintenant à Halloween. Cette fois-ci, l’avance est encore plus conséquente, Cisco a en effet décidé de nous faire très peur en annonçant une énorme faille de sécurité. L’un de leur logiciel fournit lorsqu’il est lancé un accès à distance permettant à n’importe qui de prendre le contrôle de la machine. Cette faille qui ressemble pour moi à une malveillance, étonne tout le monde par sa gravité.

Je propose donc à Cisco si l’entreprise souhaite continuer à faire deux annonces de sécurités par an de changer la date en utilisant:

  • Le premier avril pour les annonces distrayantes
  • Halloween pour les problèmes graves

Mais la logique et le bon sens sont sauf si l’on reprend le communiqué de Cisco :

Cisco is adopting this approach in response to extensive feedback from customers, who seek further predictability for support planning and deployment cycles.

soit en français :

Cisco adopte cette approche en réponse à des retours fréquents de ses clients, qui demandent plus de prédictibilité pour la planification et le déploiement des correctifs.

Ce qui donne en clair :

Monsieur, c’est quand l’apocalypse ?

Les 4ème mercredi de mars et de septembre…