fil d'ariane

Pages personnelles de Franck GILLET > Tutoriels > IPaudit-Web

IPaudit-Web

Introduction

Après avoir testé les outils proposés dans le package IPaudit, il m’a paru intéressant de rendre opérationnel ces outils pour le contrôle de mon réseau. IPaudit-Web donne accès à une interface Web qui analyse le réseau dans en détail et fournit des rapports (sous forme de textes ou de graphiques) utile pour connaître l’usage du réseau, l’utilisation de la bande passante, découvrir les botnets…

Les outils IPaudit sont utilisés pour fournir des traces précises des paquets entrants et sortants du réseau. Ces tâches sont lancées périodiquement grâce au démon CRON. Enfin des rapports sont générés automatiquement à partir des traces.


Installation

IPaudit est installé sur une Fedora 8. Le système se trouve dans l’état donné dans le sous-menu IPaudit. De plus, l’outil GNUplot, le module Perl "Time::ParseDate" et le serveur http Apache sont requis.

[root@PE1750]# yum list gnuplot
Installed Packages
gnuplot.i386 4.2.2-1.fc8 installed
[root@PE1750]# yum info httpd
Installed Packages
Name : httpd
Arch : i386
Version: 2.2.8
Release: 1.fc8
Size : 2.5 M
Repo : installed
Summary: Serveur web Apache
Description:
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

Pour le module Perl, je fais un petit test.

[root@PE1750]# cat ../test.pl
#!/usr/bin/perl
use Time::ParseDate;
$seconds=parsedate("Mon Jan 2 04:24:27 1995");
print "test: $seconds\n";
[root@PE1750]# ../test.pl
test: 789017067

Il faut créer un utilisateur propre à IPaudit.

[root@PE1750]# useradd ipaudit
[root@PE1750]# cat /etc/passwd
ipaudit:x:501:501::/home/ipaudit:/bin/bash
[root@PE1750]# passwd ipaudit

On passe aux choses sérieuses. Il faut copier le contenu de l'archive dans le dossier utilisateur de IPaudit, avec les droits qu'il faut. On peut continuer l'installation en tant qu'utilisateur IPaudit.

[root@PE1750]# tar zxvf ipaudit-web-0.96b7.tgz
[root@PE1750]# mv ipaudit-web-0.96b7/* /home/ipaudit/
[root@PE1750]# rmdir ipaudit-web-0.96b7
[root@PE1750]# cd /home/ipaudit/
[root@PE1750 ipaudit]# chown -Rv ipaudit ./*
[root@PE1750 ipaudit]# su -l ipaudit
[ipaudit@PE1750 ~]$ ./configure

On constate alors le même problème rencontré dans IPaudit concernant l'usage du numéro d'erreur. La résolution du problème est identique.

[ipaudit@PE1750 ~]$ make
(cd src && make all)
make[1]: entrant dans le répertoire « /home/ipaudit/ipaudit-web-0.96b7/src »
gcc -O2 -c ipaudit.c -I/usr/include/pcap
gcc -O2 -c hash.c
hash.c: In function ht_storekey:
hash.c:315: attention : incompatible implicit declaration of built-in function memcpy
hash.c:338: attention : incompatible implicit declaration of built-in function memcpy
gcc -o ipaudit ipaudit.o hash.o -lnsl -lpcap
/usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in ipaudit.o
/lib/libc.so.6: could not read symbols: Bad value
collect2: ld a retourné 1 code d'état d'exécution
make[1]: *** [ipaudit] Erreur 1
make[1]: quittant le répertoire « /home/ipaudit/ipaudit-web-0.96b7/src »
make: *** [all] Erreur 2
[ipaudit@PE1750 ~]$ grep -r "errno" src/*
src/ipaudit.c: printf ("errmsg <%s>\n", strerror(errno)); fflush(stdout); \
src/ipaudit.c:extern int errno;
src/ipaudit.c: errno = 0;
src/ipaudit.c: if (NULL==fin) return errno;
src/ipaudit.c: errno = 0;
Fichier binaire src/ipaudit.o concorde
src/ipstrings.c: printf ("errmsg <%s>\n", strerror(errno)); fflush(stdout); \
src/ipstrings.c:extern int errno;
src/ipstrings.c: errno = 0;
src/ipstrings.c: errno = 0;
src/makelocal.c:extern int errno;
src/pdate.c:extern int errno;
src/pdate.c: printf ("errmsg <%s>\n", strerror(errno)); fflush(stdout);
[ipaudit@PE1750 ~]$ cp src/ipaudit.c src/ipaudit.c.0
[ipaudit@PE1750 ~]$ diff src/ipaudit.c src/ipaudit.c.0
52d51
< #include <errno.h>
232a232
> extern int errno;

...


On installe enfin IPaudit avec les bons paramètres.

[ipaudit@PE1750 ~]$ make
[ipaudit@PE1750 ~]$ cat ipaudit-web.conf.install
#
LOCALRANGE=157.159
#
INTERFACE=eth1
#
[ipaudit@PE1750 ~]$ su
Mot de passe :
[root@PE1750 ipaudit]# make install
[root@PE1750 ipaudit]# make install-cron

Configuration

Il faut configurer Apache pour fournir une interface à IPaudit.

[root@PE1750 ipaudit]# cd /etc/httpd/conf
[root@PE1750 conf]# vi httpd.conf
ServerName 157.159.226.31
#
<Directory /home/*/public_html>
 AllowOverride All
 Options MultiViews Indexes Includes FollowSymLinks
 Order allow,deny
 Allow from all
</Directory>
#
<Directory /home/*/public_html/cgi-bin>
 Options +ExecCGI -Includes -Indexes
 SetHandler cgi-script
</Directory>
#
ServerTokens Prod
#
<Directory />
 Order deny,allow
 Deny from all
 Options FollowSymLinks
 AllowOverride None
</Directory>
#
<IfModule mod_userdir.c>
 UserDir disable
 UserDir enable ipaudit
 UserDir public_html
</IfModule>

Le serveur est branché sur un switch (Catalyst 4006) placé à la frontière du réseau PERCEVALE. L'interface concernée est "eth1". Pour éviter les catastrophes le routage est désactivé. Le serveur est alors branché au switch concerné et le port d'attache est configuré pour monitorer tous les paquets entrant et sortant du switch.

[root@PE1750 conf]# vi /etc/sysconfig/network
FORWARD_IPV4="no"
[root@PE1750 conf]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
#éventuellement:
[root@PE1750 conf]# cat /proc/sys/net/ipv4/ip_forward
0

[root@PE1750 conf]# cat /etc/minirc.dfl
# Fichier généré automatiquement
# Utilisez « minicom -s » pour changer les paramètres
pu port /dev/ttyS0
pu baudrate 9600
pu minit
pu mreset
pu mhangup
[root@PE1750 gillet]# minicom
Enter password:
Catalyst4006> en
Enter password:
Catalyst4006> (enable) set span 2/3,2/5 2/9 both inpkts disable learning enable create
Overwrote Port 2/9 to monitor transmit/receive traffic of Port 2/3,2/5
Incoming Packets disabled. Learning enabled.
2008 Mar 26 07:30:40 %SYS-5-SPAN_CFGSTATECHG:local span session active for destination port 2/9
Catalyst4006> (enable) sh span

Destination : Port 2/7
Admin Source : Port 2/3,2/5
Oper Source : Port 2/3,2/5
Direction : transmit/receive
Incoming Packets: disabled
Learning : enabled
Filter : -
Status : active

------------------------------------------------------------------------
Total local span sessions: 1

Il ne reste plus qu'à configurer Apache et vérifier que le filtrage n'empêche pas d'accèder à HTTP. La commande "http -t" permet de vérifier la syntaxe saisie dans le fichier de configuration. On vérifie qu'il n'y a pas de problème d'accès. Enfin une barrière d'authentification est mise en place pour accéder à la page IPaudit. Une configuration plus sécurisée HTTPS est prévue.

[root@PE1750 conf]# httpd -k stop
[root@PE1750 conf]# httpd -t
Syntax OK
[root@PE1750 conf]# httpd -k start
[root@PE1750 conf]# chkconfig --level 345 httpd on
[root@PE1750 conf]# chkconfig --list httpd
httpd 0:arrêt 1:arrêt 2:arrêt 3:marche 4:marche 5:marche 6:arrêt
[root@PE1750 conf]# iptables -L
...
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
...
[root@PE1750 home]# chmod 711 ipaudit/
[ipaudit@PE1750 public_html]$ htpasswd -c /home/ipaudit/passwd ipaudit
New password:
Re-type new password:
Adding password for user ipaudit
[ipaudit@PE1750 public_html]$ cat .htaccess
AuthType Basic
AuthName IPAUDIT
AuthUserFile /home/ipaudit/passwd
Require user ipaudit

Je présente ci-dessous un graphique généré automatiquement par IPaudit-Web (avec GNUplot).


Trafic PERCEVALE

mis à jour le 20/07/2009

Raccourcis