# [How-to] Snort, MySQL et ACID

## -KuRGaN-

Snort est un NIDS (Network Intrusion Detection System) sous license GNU, il permet de surveiller le réseau en analysant le traffic  en temps réel sur un réseau IP. Toutes les alertes de Snort seront redirigés dans une base de données MySQL puis ensuite, nous analyserons ces alertes grâce à ACID (Analysis Console for Intrusion Database).

Installation

```

echo "net-analyzer/acid ~x86" >> /etc/portage.package.keywords

echo "dev-php/jpgraph ~x86" >> /etc/portage/package.keywords

emerge mysql apache php mod_php snort acid
```

Si vous faîtes une installation de MySQL toute fraîche:

```
/etc/init.d/mysql_install_db
```

Ensuite il faut mettre un mot de passe root mour MySQL:

```
mysql -u root -p
```

Puis il faut créer une base db_snort avec un utilisateur snort qui a les droits CREATE,INSERT, SELECT, DELETE, UPDATE uniquement sur cette base avec comme mot de passe pass_snort

Je ne suis pas très bon niveau base de données alors pour faire ça, j'utilise Webmin. (Ha le clic des fois c'est bien !!!  :Wink:  )

Configuration de MySQL

Bon maintenant, il faut modifier la structure de la base de donnée snort afin qu'elle puisse directement recevoir les alertes de Snort.

```
cd /etc/snort

mysql -u root snort < .contrib/create_mysql
```

Et Voilà, c'est finit pour Mysql  :Razz: 

Configuration de Apache

Ici, nous allons juste passer l'option PHP à Apache. Editons le fichier /etc/conf.d/apache2 et ajoutons php à cette ligne:

```
APACHE2_OPTS="-D PHP4 -D SSL"
```

Configuration de Snort

C'est dans le fichier de conf de Snort, /etc/snort/snort.conf que nous allons rediriger les alertes vesr MySQL. Rechercher cette ligne et renseigner les champs suivant votre configuration:

```
output database: alert, mysql, user=snort password=pass_snort dbname=db_snort host=localhost
```

Donc là normalement, snort redirigera toutes les alertes sur la base de données snort présent sur la même machine en utilisant l'utilisateur mysql snort avec son mot de passe (pass_snort).

Il est bon aussi d'indiquer sur quelle interface Snort va écouter les alertes, c'est tout simple et le fichier bien renseigné donc je vous laisse faire tout seul  :Evil or Very Mad: 

Configuration de ACID

Pour fonctionner, ACID a besoin de deux librairies importante, Adobd et JPGraph. La première permet la gestion de base de données alors que la deuxième permet de représenter des graphes à partir de statistiques.

Adobd est une dépendance directe d'ACID, donc le première on l'oublie  :Laughing: 

Pour JPGraph, il faut la télécharger (http://www.aditus.nu/jpgraph/index.php)

Ensuite on la décompresse dans le répertoire root d'Apache, qui est /var/www/localhost/htdocs par défaut.

```
tar -zxvf jpgraph.xxxx.tar.gz -C /var/www/localhost/htdocs
```

Ensuite renommons le réertoire de JPGraph sans le luméro de version:

```
cd /var/www/localhost/htdocs/

mv jpgrah.xxxxxxx jpgraph
```

Maintenant on édite le fichier de conf d'ACID (/var/www/localhost/htdocs/acid/acid_conf.php) afin de renseigner tout d'abord les informations concernant la base de donnée snort.

```
$DBType = "mysql";

$alert_dbname = "db_snort";

$alert_host       = "localhost";

$alert_port       = "";

$alert_user       = "snort";

$alert_password = "pass_snort";

$archive_dbname = "db_snort";

$archive_host       = "localhost";

$archive_port       = "";

$archive_user       = "snort";

$archive_password = "pass_snort";
```

Puis nous allons indiquer le répertoire de la librairie JPGraph:

```
$ChartLib_path = "/var/www/localhost/htdocs/jpgraph/src";
```

Finalisation

Une fois tout ceci terminé, il faut démarrer ou redémarrer tous les services:

```
/etc/init.d/apache2 start

/etc/init.d/mysql restart

/etc/init.d/snort start
```

Et afin que tout se petit monde se lance au démarrage de la machine:

```
rc-update add mysql default

rc-update add snort default

rc-update add apache2 default
```

Puis à l'aide d'un naviguateur web, se connecter à http://localhost/acid/ et suivez les instructions pour finalisez l'installation.

Pour vérifier, attaquer votre Snort à grands coups de Nmap pour voir si des alertes sont générées.

Tips: Sécuriser l'accès à ACID

Afin que tout le monde ne puisse pas avoir accès à notre page d'alerte, nous allons en resteindre l'accès grâce à Apache.

Editons le fichier /etc/apache/conf/apache2.conf et ajoutons ceci:

```
< Location /acid>

AuthType Basic

AuthName "ACID"

AuthUserFile /etc/snort/acid_access

           <Limit GET POST OPTIONS PROPFIND>

           require user acid

           Order deny,allow

           Deny from All

           Allow from nom_machine.mon_domaine

           </Limit>

</Location>
```

Conclusion

Voilà et bon sniffage de réseau  :Laughing: 

Il semblerait que ACID soit remplacé par BASE mais ce dernier n'est pas intégré dans portage, a suivre ........  :Wink: 

Ce document est sous licence GNU/FDL

----------

## kernelsensei

ben bravo, et merci tout plein  :Smile: 

----------

## ultrabug

merchi  :Smile: 

----------

## Enlight

Classe!  :Cool:  Merci!

----------

## scout

merci beaucoup  :Mr. Green: 

----------

## boozo

'alute

c'est bien çà tiens justement je voulais mettre acid pour voir c'est l'occasion  :Razz:   Merci !

(HS : ? webmin c'est vraiment mieux pour la gestion ? moi je suis encore à : sql>  :Laughing: )

Si je puis me permettre deux remarques --> peut-être rajouter les rc-update pour ces services non ?

et quelque chose sur les update des snort.rules --> je ne me rappelle plus si ils ont intégré le oinkcode mais c'est toujours faisable à la main  :Wink:  celà me semble utile non ?

Sinon, dans cette optique, il serait peut-être bien de rajouter un bout sur le filtrage actifs... j'avais dans l'idée de faire un tip dans cette idée mais puisque tu t'es déja collé à la première étape   :Mr. Green: 

Je pensais au portscan detect et au script d'ajout de règles iptables en fonction des snort logs. Je te met un liens vers ce post que j'avais lancé mais qui est tombé à plat toutefois depuis j'ai guardian qui tourne depuis qqes temps et c'est pas mal (je me suis pas encore collé au portscan detect car j'ai y faut que je bidouille un peu pour l'installer sur ma gw mais faut que j'm'y mettes un de ces jours  :Rolling Eyes: )

Pour psad c'est dans portage donc pas de pb ; avec guardian j'avais dans l'idée de créer un ebuild çà serait peut-être pas mal comme outils enfin tu as les liens mais après y'en a surement d'autres et puis tu peux étendre/améliorer le hw2 dans cette direction avec du portknocking (y'a aussi le script de LostControl fail2ban  :Wink:  ), etc... 

Enfin c'est juste une remarque (et mon avis) après à toi de voir selon les retours que tu as et si tu as besoin...

 :Smile: 

----------

## -KuRGaN-

ok ok, je vais essayer de rajouter tout ce que tu m'as dit, je le ferai ce week-end car la j'ai  pas de gentoo sur moi et en plus je viens d'acheter GTA St Andreas  :Laughing:   :Laughing: 

Sinon, si tu a un betit bout de how-to que tu veux que je rajoute, envoie le par mail et je le rajouterai volontier afin que l'on est un how-to assez complet.

Et merci pour les liens  :Wink: 

----------

## Pachacamac

Pas mal ! Je n'ai pas d'ordi dispo pour tester ton install mais ça à l'air d'enfer !

----------

## Darkael

Joli howto, néanmoins il me semblait qu'il était préférable d'utiliser BASE plutot qu'ACID, qui n'est plus développé depuis 2 ans? Ca ne doit pas changer grand chose au niveau de l'installation vu que les deux sont très similaires, mais BASE est plus récent et a plus de fonctionnalités si je me souviens bien.

[EDIT] Bon par contre BASE n'est pas dans portage apparement, mais j'avais vu trainer des ebuilds quelque part

----------

## Pachacamac

T'as le lien vers BASE stp ?

----------

## Darkael

 *Pachacamac wrote:*   

> T'as le lien vers BASE stp ?

 

http://secureideas.sourceforge.net/

J'ai un ebuild mais je sais plus où je l'ai trouvé.

----------

## -KuRGaN-

Ben ce serait quand même bien qu'il soit intégré dans portage, histoire d'avoir une install plus propre  :Smile: 

----------

## Pachacamac

Ici : http://home.comcast.net/~travis.post/base-1.1.3.ebuild

EDIT : Un autre tuto est dispo ici : http://gentoo-wiki.com/HOWTO_Setup_BASE_with_Apache,_Snort,_and_PostgreSQL

----------

## -KuRGaN-

Bon allez je remonte mon vieux how-to pour dire que j'en ai fait un autre, avec Base cette fois et en plus il est dans portage.

Par contre je n'ai pas encore mis à jour celui-ci que je ferai quand j'aurai le temps.

Mais sinon, pour ceux que celà interresse, une version de mon how-to est dispo sur mon wiki ici

----------

