Catégories
Open-source Reseau

Tutoriel Wireshark (ex Ethereal)

SharkIl y a quelques mois, le logiciel open-source Ethereal est devenu Wireshark. Derrière ces deux noms se cache un même logiciel graphique de capture et d’analyse réseau qui est la solution idéale si l’interface textuelle de tcpdump vous donnes des boutons. Nous allons, dans ce tutoriel, apprendre à se servir des fonctions de base de ce logiciel.

Installation

Wirshark est disponible sur un nombre très important d’operating system. Rendez-vous sur cette page pour télécharger la dernière version stable. On se retrouve dans quelques minutes…

Description de la fenêtre principale

Première capture

Pour effectuer une capture, il faut aller dans le menu Capture / Interface (ou cliquer sur le bouton correspondant).

Catégories
Open-source Reseau

Du Wifi gratuit à Paris

Si on doit envier les Parisiens sur un point, c’est bien sûr l’avance de la capitale dans le domaine des nouvelles technologies. En effet, après avoir été précurseur pour les accès ADSL et les accès en fibre optique, voilà que Paris se voit doté, par la municipalitée, de hotspots Wifi répartis un peu partout dans la ville.

Ces hotspots sont disponibles gratuitement dans des lieux publics de 7h à 23h sans limitation. C’est donc environ 400 bornes Wifi qui couvrent 260 lieux publics. La liste des bornes évoluera petit à petit.

Au niveau de la sécurité, le réseau met en place:

  • un système de type filtre parental pour éviter les sites violents, pornos…
  • un blocage des communications ‘Ad Hoc’ (c’est-à-dire communication directe entres deux utilisateurs)
  • la compatibilité avec les réseau VPN (type VPN pass-through)

C’est donc un système que l’on souhaite voir étendu dans d’autres villes !

Catégories
Open-source Reseau Systeme

Installation de Centreon (Oreon)

Update: Ce billet n’est plus à jour.
Merci de consulter cet autre tutoriel pour une installation de Centreon 2 avec Nagios 3:
http://blog.nicolargo.com/2009/01/le-serveur-de-supervision-libre-part-3.html

Nagios, que j’ai abordé dans de nombreux articles est un outil de monitoring système et réseau de très grande qualité pour sa souplesse de configuration, sa puissance de traitement ou encore sa stabilité. Par contre, son interface ulisateur n’est pas des plus réussie et il est impossible de faire des actions d’administrations de base (comme ajouter une nouvelle machine à monitorer) dans l’interface Web. Centreon (anciennement appelé Oreon) a pour but de combler ces lacunes.


Avant (Nagios) / Après (Nagios+Centreon)

Oreon est une interface Web (écrite en PHP) venant s’ajouter à Nagios. Cette interface permet:

  • d’amméliorer l’interface de base de Nagios
  • ajouter des fonctions de reporting (des graphes par exemple)
  • d’administrer Nagios à partir d’une interface Web (plus besoin de toucher les fichiers de configurations)

Installation de Centreon

Nous allons détailler l’installation de Centreon sur une machine Fedora Core 6 (mais la procèdure devrait être la même sur d’autres distributions Linux). Dans notre exemple, la machine a déjà les services suivants installés:

Nous allons installer la version 1.4 de Centreon (dernière version stable).

Catégories
Open-source Reseau

Générer des paquets IP avec HPING…

… ou comment tester de manière efficace son réseau…

Installation (sur Fedora)

Après avoir récupéré les sources sur le site officiel, dézippé et détarré…

yum install libnet-devel libpcap-devel
ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
./configure –no-tcl
make
make install

Exemples d’utilisations

Un ping TCP simple (pardéfaut sur le port 0):

# hping 192.168.29.1
HPING 192.168.29.1 (eth0 192.168.29.1): NO FLAGS are set, 40 headers + 0 data bytes
len=46 ip=192.168.29.1 ttl=64 id=21068 sport=0 flags=RA seq=0 win=0 rtt=0.3 ms
len=46 ip=192.168.29.1 ttl=64 id=48983 sport=0 flags=RA seq=1 win=0 rtt=0.3 ms
len=46 ip=192.168.29.1 ttl=64 id=44368 sport=0 flags=RA seq=2 win=0 rtt=0.2 ms

Un ping TCP sur le port 80:

# hping 192.168.29.1 -c 2 -S -p 80 -n
HPING 192.168.29.1 (eth0 192.168.29.1): S set, 40 headers + 0 data bytes
len=46 ip=192.168.29.1 ttl=64 DF id=14101 sport=80 flags=SA seq=0 win=57344 rtt=0.2 ms
len=46 ip=192.168.29.1 ttl=64 DF id=6759 sport=80 flags=SA seq=1 win=57344 rtt=0.5 ms

Un ping ICMP (même fonction que le ping classique):

#hping 192.168.29.1 -1
HPING 192.168.29.1 (eth0 192.168.29.1): icmp mode set, 28 headers + 0 data bytes
len=46 ip=192.168.29.1 ttl=64 id=52414 icmp_seq=0 rtt=0.3 ms
len=46 ip=192.168.29.1 ttl=64 id=18412 icmp_seq=1 rtt=0.2 ms

Un ping TCP avec spoofing (c’est à dire génération d’un paquet avec une adresse IP source différente de celle de la machine qui lance le hping):

# hping 192.168.29.1 -a www.google.fr
HPING 192.168.29.1 (eth0 192.168.29.1): NO FLAGS are set, 40 headers + 0 data bytes

PS: dans ce mode, vous n’aurez bien sur pas les réponses, qui seront envoyés à la machine spécifiée par l’option -a… c’est pour cela que c’est une attaque ben connue dans le monde des réseaux).

Quelques options…

-i : permet de fixer l’intervalle de temps (en seconde) entre deux pings
-c : nombre de paquets à générer
-q: affiche seulement le rapport final

Exemple:

— 192.168.29.1 hping statistic —
5 packets tramitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.3 ms

-V: active le mode verbose

Exemple:
len=46 ip=192.168.29.1 ttl=64 id=6825 tos=0 iplen=40
sport=0 flags=RA seq=2 win=0 rtt=0.3 ms
seq=0 ack=624676233 sum=fdf5 urp=0
-0: active le mode RAW IP
-1: active le mode ICMP
-2: active le mode UDP

Si vous voulez une liste de toutes les options, c’est par ici.

Catégories
Open-source Reseau

Comment surveiller son réseau avec le cochon Snort ?

Distribué sous licence open source (GPL), Snort est un IDS: c’est à dire un système de détection d’intrusion.

Souvent les réseaux (personnel ou d’entreprise) sont protégés par des Firewalls. Cette protection, bien que nécessaire, ne permet pas la détection des attaques extérieures. En effet, un Firewall est fait pour bloquer les flux réseaux non désirés tout en laissant passer le « trafic utile ». Deux problèmes peuvent se poser:

  • comment analyser à l’interieur d’un « trafic utile », les données potentiellement dangereuses (par exemple un script CGI contenant un virus).
  • comment se prévenir de attaques de type DOS (flood UDP).

Snort est une des réponses possible. Il va analyser, en temps réel, le trafic réseau, rechercher dans sa base de donnée des profils d’attaques connus et logger les résultats.

Nous allons donc dans ce billet installer Snort sur un routeur sous FreeBSD (mais la procédure est la même pour un OS de type Linux).

Installation de Snort

Snort est disponible dans les ports FreeBSD, il faut donc effecter les actions suivantes afin de le compiler sur votre système:

# cd /usr/ports/security/snort
# make WITH_MYSQL=YES WITH_FLEXRESP=YES install

Remarque: Sur Fedora, l’installation peut être effectuée avec la commande: « yum install snort »

Pour automatiser le lancement de Snort au démarrage du serveur FreeBSD, il faut éditer le fichier /etc/rc.conf et ajouter les lignes suivantes:

snort_enable= »YES »
snort_interface:= »bge0″

PS: il faut remplacer bge0 par le nom de l’interface qui se trouve du coté du réseau que l’on veut surveiller

Configuration de la base de donnée

Snort utilise une base de donnée pour stocker les attaques. Le schéma de la base de donnée se trouve dans le fichier ../usr/ports/security/snort/work/snort-<version>/schemas/create_mysql, il faut alors effectuer les taches suivantes sur la machine qui héberge votre serveur MySQL:

# mysql -u root -p
mysql> CREATE DATABASE snort;
mysql> GRANT ALL PRIVILEGES ON snort.* TO ‘snortuser’@’localhost’ IDENTIFIED BY ‘snortpassword’;
mysql> FLUSH PRIVILEGES;
# mysql -u root -p snort < ./create_mysql

Configuration de Snort

Le fichier de configuration par défaut se nomme snort.conf (sous FreeBSD dans /usr/local/etc/snort). Par rapport au fichier par défaut, j’ai juste modifié les deux lignes suivantes:

# vi /usr/local/etc/snort/snort.conf
var HOME_NET [192.168.1.0/24]
output database: log, mysql, user=snortuser password=snortpassword dbname=snort host=localhost
var SSH_PORTS 22
include $RULE_PATH/bleeding-all.rules

Il faut également mettre en commentaire toutes les autres lignes commencant par include « $RULE_PATH ».

Dans cette configuration, les attaques seront logger à la fois dans le fichier standard (/var/log/snort sous FreeBSD) et dans la base de donnée.

Initialisation des règles (attaques)

De nouvelles attaques apparaissant tous les jours, une mise à jour régulière des règles doit être effectuée. Direction le site officiel pour s’enregistrer en ligne et récupérer les dernières règles stables pour votre version de Snort.

Une fois les règles téléchargées (Sourcefire VRT Certified Rules – The Official Snort Ruleset (registered user release)), il faut les décompresser dans le répertoire /usr/local/etc/snort/rules.

Cette opération est à faire régulièrement, à chaque mise à jour des règles.

Lancement de Snort

On ajoute les options suivantes dans le fichier rc.d (sous FreeBSD):

# SNORT
snort_enable= »YES »
snort_interface= »em0″

Il ne reste plus qu’a lancer Snort.

Sous FreeBSD:
# /usr/local/etc/rc.d/snort start

Sous Fedora:
# service snort start

Comment exploiter les résultats

C’est très bien d’avoir un IDS en fonctionnement, mais maintenant comment voir et analyser les résultats…

Le plus rapide est d’aller voir le fichier alert (sous /var/log/snort). C’est ici qu’est logger la liste des attaques reconnus par vos règles.

Si vous voulez une interface plus « user friendly », vous pouvez utiliser Base, un autre outil open source proposant une interface Web pour l’analyse des logs venant de Snort.

Catégories
Reseau Systeme

Installation de Squid sur Fedora


Voici un tutoriel pour installer Squid sur une distribution Fedora (Core 6). Squid est un serveur proxy gérant les protocoles HTTP, HTTPS et FTP. Il offre des performances de haut niveau, même si le service tourne sur une machine peu puissante.

L’installation peut se faire soit depuis les sources, soit depuis le repo Fedora.

Installation depuis les sources

Il faut d’abord récupérer les sources de la dernière version stable (2.6 au moment de l’écriture de ce post):

# wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE13.tar.gz

On lance la séquence de compilation:

# tar zxvf squid-2.6.STABLE13.tar.gz
# cd squid-2.6.STABLE13
# ./configure –enable-snmp
# make
# make install

Le répertoire d’installation par défaut est /usr/local/squid/.

Pour des raisons de sécurité, le processus sera lancé par l’utilisateur ‘squid’ (à créer si il n’existe pas…). Il faut donc créer les répertoires suivants:

# mkdir /var/spool/squid
# chown -R squid:squid /var/spool/squid
# mkdir /var/log/squid
# chown -R squid:squid /var/log/squid

La configuration est centralisé dans le fichier /usr/local/squid/etc/squid.conf.

Installation depuis le repos Fedora (méthode plus simple…)

On utilise yum pour installer Squid sur son système:

# yum install squid

Sous Fedora, l’automatisation du lancement de Squid au démarrage de la machine doit se faire de la manière suivante:

# chkconfig squid on

La configuration est centralisé dans le fichier /etc/squid/squid.conf.

Configuration

Voici, en exemple, mon fichier de configuration squid.conf:

http_port 3128
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 16 MB
cache_dir ufs /var/spool/squid 3000 16 256
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl user src 192.168.0.0/255.255.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow user all
http_access deny all
http_reply_access allow all
icp_access allow all
snmp_access allow all
coredump_dir /usr/local/squid/var/cache

Avant de pouvoir utiliser le proxy, il faut générer la structure de base du répertoire de cache, pour cela on fait:

# squid -z
2007/06/07 17:14:38| Creating Swap Directories

Remarque: Si vous rencontrez l’erreur suivante:
FATAL: Could not determine fully qualified hostname. Please set ‘visible_hostname’
Il faut renseigner l’option visible_hostname dans le fichier de configuration squid.conf.

Il ne reste plus qu’à lancer le serveur:

# squid
ou
# service squid start

Si le serveur ne démarre pas, c’est qu’il doit y avoir une erreur dans la configuration. Le plus simple pour identifier cette erreur est de lancer squid en mode console:

# squid -N -d 255

Si le PC système sur lequel est installé Squid intégre un Firewall de type Iptables, il faut penser à ajouter la règles suivantes:

# iptables -A RH-Firewall-1-INPUT -p tcp -m tcp –dport 3128 -j ACCEPT
# /sbin/iptables-save

Configuration des clients

Sur Firefox, il faut aller dans le menu Preférences/Avancé/Réseau/Paramètres… puis saisir les informations:

Et voila… bon surf !

Catégories
Reseau

Utilisation avancée de Iperf

Suite à ce premier article décrivant les fonctions de base, voici un complément d’informations sur l’utilisation du logiciel Iperf.

Changement de la taille des buffers

Par défaut, les buffer d’écriture et de lecture sont the 8000 octets. On peut utiliser la fonction ‘-l’ pour modifier cette taille (taille minimum: 12 octets).

Par exemple, pour generer des paquets UDP (mais cela fonctionne aussi avec le protocole TCP) avec des buffers (in/out) de 40 octets.

Serveur:

# iperf -s -u -l 40

Client:

# iperf -c <adresse IP client> -u -l 40

Remarque: cela a pour effet de produire sur le réseau des paquets UDP de 40 octets (en tête UDp inclus), ce qui correspond à la moyenne de la taille des paquets utilisés avec les protocoles de VoIP de type SIP ou H.323).

Afficher la taille du MTU

Il est parfois utile de connaître la taille du MTU sur un chemin réseau (par l’exemple pour customize son stack IP en fonction de sa connection Internet). Iperf permet, grâce à l’option ‘-m’ d’afficher cette valeur dans le rapport.

Serveur:

# iperf -s -m

Client:

# iperf -c <adresse IP client> -m

————————————————————
Client connecting to 192.168.29.1, TCP port 5001
TCP window size: 65.0 KByte (default)
————————————————————
[ 3] local 192.168.29.157 port 51850 connected with 192.168.29.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 111 MBytes 93.0 Mbits/sec
[ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)

Il est alors possible de tester le réseau en fixant cette valeur avec l’option ‘-M’:

Serveur:

# iperf -s -M 40

Client:

# iperf -c <adresse IP client> -M 40

Faire un test bi-directionnel en UDP

Par défaut, lorsque l’on utilise le protocole UDP (option ‘-u’), les flux vont du client vers le serveur. Pour faire un test bi-directionnel (c’est à dire avec 2 flux simultanés, client->serveur et serveur->client), il suffit d’utiliser l’option ‘-d’ au niveau du client. Si vous souhaitez que ce test se fasse de manière non simultané, il faut utiliser l’option ‘-r’ en lieu et place de l’option ‘-d’.

# iperf -s -u

Client:

# iperf -c <adresse client> -u -d
… Client report:
[ 5] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 13.697 ms 0/ 893 (0%)
[ 7] Server Report:
[ 7] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.027 ms 0/ 891 (0%)

Faire un test avec plusieurs flux

Si vous souhaitez que Iperf génére non pas 1 seul flux réseau entre le client et le serveur mais plusieurs. Il faut fixer le nombre avec l’option ‘-P’. Par exemple pour génerer 5 flux UDP simultanés entre le client et le serveur, il faut utiliser les commandes suivantes:

Serveur:

# iperf -s -u

Client:

# iperf -c <adresse IP client> -u -P 5

Taguer le champs Diffserv

Si votre réseau est compatible avec la QoS Diffserv, vous pouvez taguer le champs DSCP les paquets générés par Iperf  en utilisant l’option -S:

# iperf -c <adresse IP client> -u -S 0x99

Changer le port d’écoute par défaut

Par défaut, le port d’écoute du serveur est le 5001 (UDP ou TCP). Pour le modifier (par exemple si vous devez traverser un Firewall ou vous n’avez pas la main, il faut utiliser l’option ‘-p’ sur le serveur et le client.

Par exemple pour utiliser le port HTTP (80):

Serveur:

# iperf -s -p 80

Client:

# iperf -c <adresse IP client> -p 80


Catégories
Open-source Reseau Systeme

MacFuse devient plus facile à utiliser

MacFuse est l’adaptation de Fuse pour Mac OS X. Nous avions déjà parlé de Fuse dans un précédant article, mais une piqûre de rappel est peut être utile:

Fuse est une extension permettant de présenter sous la forme d’une arborescence locale (par exemple sur votre disque dûr), un répertoire distant. Ce répertoire pouvant être stocké sur un serveur FTP, SSH, Gmail… (il existe un grand nombre d’extensions).

Pour revenir à nos pommes moutons, Google a développé, sous licence BSD, le portage de Fuse sous Mac OS X.

Jusqu’a présent, la configuration demandait certaine connaissance Unix (enfin BSD pour être précis) pour monter et démonter les répertoires distants. heureusement pour les alergiques à la ligne de commande, Michel Gorbach a développé un logiciel permettant d’effectuer ces taches « ingrates » de manières très simples: MacFusion.

Après installation de MacFuse et de MacFusion, un nouvel icone vient se positionner dans la barre des menus:

On peut alors ajouter simplement des disques distant (pour l’instant seulement avec le support FTP et SSH, mais les prochaines versions devraient intégrer d’autres protocoles).

D’autres options sont disponibles comme:

  • le montage automatique de répertoires au démarrage de l’ordinateur.
  • le montage/remontage auomatique en cas de mise en veille.

Bref un outil très simple et qui va devenir indispensable si comme moi vous êtes toujours en train de faire des scp à la main pour copier des fichiers sur d’autres machines 😉

Catégories
Open-source Reseau Systeme

Un pont FreeBSD

25/02/2010: mise à jour du tutoriel pour FreeBSD 8.0

Voici un petit tutorial pour configurer un routeur FreeBSD (machine avec deux interfaces réseaux minimum, par exemple pour protéger votre réseau) en mode pont (ou bridge dans la langue de Beckham).

Avant de commencer un petit rappel sur ce qu’est un pont réseau: le « livre de main » qui va bien.

La configuration est la suivante:

  • un PC avec deux interfaces réseaux (minimum) nommées bge0 et bge1
  • un OS de type FreeBSD (6.2 8.0 dans notre cas)
  • de l’huile de coude

Ce que l’on veut obtenir:

  • un pont réseau entre ces deux interfaces
  • une adresse IP privée assignée aux interfaces (192.168.1.254/24)

Configuration du pont

On veut donc créer un pont entre les interfaces bge0 et bge1.

La première chose à faire est de demander le chargement du module au boot:

[shell]
# vi /boot/loader.conf
bridge_load="YES"
if_bridge_load="YES"
[/shell]

Et configurer les interface réseau, notamment la nouvelle interface virtuelle que nous allons nommer bridge0:

[shell]
# vi /etc.rc.conf
ifconfig_bge0="up"
ifconfig_bge1="up"
cloned_interfaces="bridge0"
ifconfig_bridge0="addm bge0 addm bge1 up"
ifconfig_bridge0_alias="inet 192.168.1.254/24"
[/shell]

Et voila le travail !

Catégories
Blog Reseau

Tester la vitesse de chargement de votre blog

Un site intéressant que je viens de découvrir: http://webwait.com.

Celui-ci permet de calculer le temps de chargement de votre blog (ou site internet) vu par l’utilisateur.
Il suffit de saisir l’URL du site à tester et d’attendre quelques secondes.

Par exemple, le résultat pour le Blog de Nicolargo est:

C’est donc un outil de plus à mettre dans la besace de chaque Blogmaster. très utilite lors de l’installation de nouveaux thèmes/plugins pour voir l’impact sur le temps de chargement.

En se basant sur la liste des blogueurs les plus « influants » (basée sur l’indice Technorati), voici les temps de chargement correspondant:

Loic Le Meur blog FR: 41 secondes.
Pointblog.com le magazine du blogging: 6 secondes.
TechCrunch en français: 7 secondes.
Journal d’un avocat: 15 secondes.
Blog à la ciboulette: 22 secondes.
Clea cuisine: 18 secondes.
FredCavazza.net: 27 secondes.
Standblog Tristan Nitot: 6 secondes.
Presse citron: 18 secondes.
InternetActu.net: 23 secondes.

Je trouve la moyenne de ces temps un peu long pour le chargement de site dont le but est de lire rapidement une information.