Lors de migration sous linux il peut apparaitre des problèmes pour reconnaitre la bonne résolution de l’écran. Cela est peut être du à la reconnaissance des fréquences de rafraichissement. Suite à une migration de mon ordinateur principal sous ubuntu j’ai eu quelques problème pour régler la résolution d’un de mes écran IISonic, Je partage ici le méthode de résolution. si un réglage avec l’outil fournit par nVidia:

sudo sudo nvidia-settings

ne résout pas le problème, alors régler l’écran mal reconnut au plus proche de la résolution souhaité, dans mon cas 1024×768:

réglage résolution d'un ecran sous Ubuntu-linux avec les drivers Nvidia

réglage résolution d'un ecran sous Ubuntu-linux avec les drivers Nvidia

Le plus simple pour avoir ces valeur est de faire un petit retour sous Windows, et de récupérer ces valeurs dans le menu de votre écran. Il y’en a deux: rafraichissement vertical et rafraichissement horizontal. (il existe bien sur un petit programme sous linux ddcprobe pour les obtenir sous linux, mais il ne donnait aucun résultat dans mon cas). Retourner sous linux et éditer le fichier /etc/X11/xorgf.conf, vous trouverez une section Monitor qui ressemble à cela, par écran installé sur votre système: le premier écran bien reconnut: Section « Monitor » Identifier « Configured Monitor » EndSection et le second le IISOnic

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "CRT-0"
    HorizSync       28.0 - 85.0
    VertRefresh     43.0 - 85.0
EndSection

Vérifier que les deux intervalles HorizSync 28.0 – 85.0 et et VertRefresh 43.0 – 85.0 contiennent bien les valeurs  relevées sous Windows. Ensuite dans la section screen qui ressemble à cela:

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "1"
    Option         "TwinViewXineramaInfoOrder" "DFP-1"
    Option         "metamodes" "CRT: 1024x768 +1680+0, DFP: nvidia-auto-select +0+0; CRT: NULL, DFP: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Sur la ligne « metamodes » modifier les informations de votre écran mal reconnut sous la forme x_

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "1"
    Option         "TwinViewXineramaInfoOrder" "DFP-1"
    Option         "metamodes" "CRT: 10280x1024_75 +1680+0, DFP: nvidia-auto-select +0+0; CRT: NULL, DFP: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

MISE A JOUR:un mise ajour se trouve ici. Certains robots d’indexation (dont ceux de google) se font piéger par cette version

Ce tuto s’inspire fortement de la discutions de ce thread des forums d’OVH. Après quelques passages de robots sur le serveur dont les intentions sont mauvaises: Ils recherchent sur le serveur des scripts qui possèdent des failles afin d’être exploité par le propriétaire du robot.

L’idéal est de ne pas avoir de scripts avec des failles connu,… utopique n’est-ce pas…

Une première méthode pour contrer ces recherches  est de supprimer tous les accès à apache sans non de domaine ou mauvais nom de domaine: (cas des wildcard avec dyndns par exemple). En effet aucun utilisateur arrivera sur votre sites en utilisant l’IP de votre machine…. Par contre il peut arriver que des utilisateurs se trompent de nom de domaine donc faites attention…

Commencer par faire un dossier vide:

sudo mkdir /var/empty

Maintenant on va créer un serveur virtuel qui récupère tous les noms de domaine qui ne sont pas déclaré. Dans /etc/apache2/sites-avaible/default, mettre:

<VirtualHost *>
        DocumentRoot /var/empty/
        <Directory /var/empty>
              Order Deny,
              Allow Deny from All
        </Directory>
</VirtualHost>

tous les autre sites garde la forme:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName ffwill.homelinux.com

        ......
</VirtualHost>

recharger apache:

sudo /etc/init.d/apache2 reload

Maintenant tous les robots qui accèdent à votre serveur n’utilisant pas un de vos nom de domaine ou votre adresse IP se verra refoulé.

Une autre étape est de rajouter ces « attaques » dans le système de détection de fail2ban.
Pour cela on va rajouter une section dans /etc/fail2ban/jail.conf:

[apache_nodnsuse]
enabled = true
port    = http,https
filter  = apache-nodnsuse
logpath = /var/log/apache*/*error.log
maxretry = 1

dans le cas de DNS avec wildcard, éviter de mettre « maxretry » à 1.
puis on rajoute le filtre correspondant /etc/fail2ban/filter.d/apache_nodnsuse.conf qui contiendra:

[Definition]
failregex = [[]client []] client denied by server configuration: /var/empty/.*
ignoreregex=

Installer Qt sous Ubuntu

26 avril 2009

J’ai tenté d’utiliser QTCreator à partir des dépôts mais il manque les sources de QT et est donc non utilisable directement….

J’ai donc téléchargé QtCreator avec la librairie Qt pré-compilé directement sur le site de QtSoftware

La version 32 bits

la version 64 bits

comme indiqué sur le site l’installation se fait facilement avec:

chmod u+x qt-sdk-linux-x86_64-opensource-2009.02.bin

puis

./qt-sdk-linux-x86_64-opensource-2009.02.bin

ensuite si vous chercher directement à compiler un projet d’exemple vous risquer de tomber sur une erreur du type:

/usr/bin/ld: cannot find -lfreetype

ou encore

/usr/bin/ld: cannot find -lgobject-2.0
/usr/bin/ld: cannot find -lSM
/usr/bin/ld: cannot find -lrender

c’est qu’il manque des librairies de développement sur votre système, dans mon cas il a fallut installer en plus (cela dépend de ce que vous avez installer auparavant…):

libfreetyper6-dev libglib2.0-dev libsm-dev libXrender-dev libfontconfig-dev

donc un

sudo apt-get install libfreetyper6-dev libglib2.0-dev libsm-dev libXrender-dev libfontconfig-dev

vous pouvez utiliser le gestionnaire de paquets,

ou cliquer simplement sur ce lien: apt://libfreetype6-dev,libglib2.0-dev,libsm-dev,libxrender-dev,libfontconfig-dev, qui installera tous ce qu’il faut.

(testé et fonctionnel sous Ubuntu Linux Jaunty Jackalope 9.04)

Édit: 7/08/2009: pour compiler les projets contenant de l’OpenGl vous aurez besoin de: mesa-common-dev,libglu1-mesa-dev, pour vous éviter:

 erreur: GL/gl.h : Aucun fichier ou dossier de ce type
error: GL/glu.h: Aucun fichier ou dossier de ce type

Édit: 31/1/2010 une version plus à jour de ce billet est disponible ici

Après avoir bidouiller mon serveur sous Ubuntu-Server depuis plus d’un an, J’ai eu envie de passer mon ordinateur principal sous Linux cette ordinateur servant principalement d’ordinateur de loisir multimédia et de développement (faut bien assumer son status de geek…)

Mes billets trouverons leurs places dans deux nouvelles catégories:  Ubuntu tous les jours et Développement sous Ubuntu

Voila un nouveau script pour le [search]monitoring de Neuf Box[/search] avec munin: J’ai mis quelques temps avant de le diffuser. En effet il y’ avait un problème de détection de client non connecté qui se remarque par le nombre de client total qui ne vaut pas la somme des clients sur les différents réseau lan2 lan3 lan4 et Wifi (wlan0). Mais depuis quelques temps plus aucun bug… A vérifier….

Voila le plus important le code du script:

#!/bin/sh
##############################################################################
##                     DESCRIPTION                                          ##
##############################################################################
#
#  Ce script reupère les donnée sur la page "detecttion des intrusions" et
#formate ces donnée pour munin
#utilise XMLStarlet
#apt-get install xmlstarlet
#
#le script comprent les commandes:
#  -> autoconf
#  -> config
#  -> <vide>
##############################################################################
##                     Variable de configuration                            ##
##############################################################################

#l'adresse ip du modem routeur TELE2
IP_NEUFBOX="192.168.1.1"

#############################################################################
##                CONSTANTE POUR FACILITE L'EVOLUTION DU SCRIPT            ##
#############################################################################
#
#ces constantes sont là pour s'adapter à d'eventuelles modifications
#du firmware du modem ou pour permetre au script d'évoluer
#

#page de l'interface WEB qui liste les info de la neuf
PAGE_INFO="/stb/info"

#fichier temporaire ou sera stocké cette page pour faire les traitements
PAGE_FILE="/tmp/temp.munin.neufboxV4.stb.info"

# PORTS diponible sur la neufbox
PORTS="lan2 lan3 lan4 wlan0"

#############################################################################
##                          SCRIPT                                         ##
#############################################################################

getfile()
{
  wget -q -O"$PAGE_FILE" "http://$IP_NEUFBOX$PAGE_INFO"
}

if [ "$1" = "autoconf" ]; then
    #on recupère la page
    getfile
    #on verifie que c'est la bonne page avec son titre
    ret=$(grep "<lan>" "$PAGE_FILE" | wc -l)
       if [ "$ret" > "0" ] ; then
		echo yes
		exit 0
	else
		echo no
		exit 1
	fi
fi

if [ "$1" = "config" ]; then
     echo 'graph_title NeufBox Clients Counts'
     echo 'graph_args --base 1000 -l 0 -u 1'
     echo 'graph_vlabel Clients Count'
     echo 'graph_category NEUFBOXV4'
     for s in $PORTS
         do
             echo "$s"'.label '"$s"
             if [ "$s" = "lan2" ]; then
                echo "$s"'.draw AREA'
             else
                echo "$s"'.draw STACK'
             fi
         done
     echo 'total.label total'
     echo 'total.draw LINE1'
     exit 0
fi

if ! [ -f $PAGE_FILE ]; then
  getfile
elif [ $(expr `date '+%s'` -  `date -r $PAGE_FILE '+%s'`) -ge 250 ]; then
  getfile
fi

#repartition des ports
port_used=$(xmlstarlet sel  -T -t -m /info/lan/client -v "port" -n $PAGE_FILE)

#echo $port_used

for s in $PORTS
    do
        ret=$(echo $port_used | grep -o $s | wc -l)
        echo "$s"'.value '$ret
    done

#nombre de clients total
nbclient=$(xmlstarlet sel  -t -v "count(//info/lan/client)" $PAGE_FILE)

echo 'total.value '$nbclient

Et pour télécharger le plugin c’est ici ou ici.

Le résultat en image:

Voici le deuxième plugins pour le [search]monitoring de Neuf Box[/search]: celui-ci consulte les status des différents éléments de la neuf box: la ligne DSL, le PPP (« connexion avec internet »), et la VOIP (le téléphone), Ce plugin marche comme le précédent basé sur la page: http://192.168.1.1/stb/info.
Voici le code du plugin:
(sous license GNU-GPL)

#!/bin/sh
##############################################################################
##                     DESCRIPTION                                          ##
##############################################################################
#
#  Ce script reupère les donnée sur la page "detecttion des intrusions" et
#formate ces donnée pour munin
#utilise XMLStarlet
#apt-get install xmlstarlet
#
#le script comprent les commandes:
#  -> autoconf
#  -> config
#  -> <vide>

##############################################################################
##                     Variable de configuration                            ##
##############################################################################

#l'adresse ip du modem routeur TELE2
IP_NEUFBOX="192.168.1.1"

#############################################################################
##                CONSTANTE POUR FACILITE L'EVOLUTION DU SCRIPT            ##
#############################################################################
#
#ces constantes sont là pour s'adapter à d'eventuelles modifications
#du firmware du modem ou pour permetre au script d'évoluer
#

#page de l'interface WEB qui liste les info de la neuf
PAGE_INFO="/stb/info"

#fichier temporaire ou sera stocké cette page pour faire les traitements
PAGE_FILE="/tmp/temp.munin.neufboxV4.stb.info"

#services suportant le champ status
# la voip est traité part
SERVICES="dsl ppp voip"

#############################################################################
##                          SCRIPT                                         ##
#############################################################################

getfile()
{
  wget -q -O"$PAGE_FILE" "http://$IP_NEUFBOX$PAGE_INFO"
}

if [ "$1" = "autoconf" ]; then
    #on recupère la page
    getfile
    #on verifie que c'est la bonne page avec son titre
    ret=$(grep "status" "$PAGE_FILE" | wc -l)
       if [ "$ret" > "0" ] ; then
		echo yes
		exit 0
	else
		echo no
		exit 1
	fi
fi

if [ "$1" = "config" ]; then
     echo 'graph_title NeufBox Status'
     echo 'graph_args --base 1000 -l 0 -u 1'
     echo 'graph_vlabel Status 1:up 0:down'
     echo 'graph_category NEUFBOXV4'
     for s in $SERVICES
         do
             echo "$s"'_status.label '"$s"
             echo "$s"'_status.min 0'
             echo "$s"'_status.max 1'
         done
     exit 0
fi

if ! [ -f $PAGE_FILE ]; then
  getfile
elif [ $(expr `date '+%s'` -  `date -r $PAGE_FILE '+%s'`) -ge 250 ]; then
  getfile
fi

for s in $SERVICES
    do
        if [ "$s" = "voip" ]; then
            ret=$(xmlstarlet sel -t -v  "/info/voip/linestatus" $PAGE_FILE)
        else
            ret=$(xmlstarlet sel -t -v  "/info/$s/status" $PAGE_FILE)
        fi
        if [ "$ret" = "up" ]; then
            echo "$s"'_status.value 1'
        else
            echo "$s"'_status.value 0'
        fi
    done

Et pour télécharger le plugin c’est ici ou ici.

Et le resultat en image:

(rien de pertinent: y’a pas de problème donc tous les status restent à UP=1)

localhostlocaldomain-neufboxv4_status-day

Donc voila le premier script pour le monitoring de la NB4 de [search]sfr[/search] via [search]munin[/search]. J’ai remarqué qu’il était possible d’accéder à la [shal]neuf box[/shal] avec le programme fourni par neuf , et ceci sans aucun mots de passe, avec un petit espion sur le réseau m’aurrai permis de voir comment cela était possible, mais cela peut être relativement long et barbant… Heureusement j’ai trouvé un site ou cette étape a déjà été réalise: NeufboxOpenSource CommandesHttp. Cette documentation a été relativement dur à trouver, en effet on cherche plutôt un accès en telnet avec mots de passe qu’un simple accès via http…

Pour conclure cette partie beaucoup d’information se trouvent tous simplement sur la page http://192.168.1.1/stb/info de la neuf box.

Donc voici le premier plugin: celui-ci surveille la bande passante montante et descendante du modem. Après une semaine de test je me rend compte que ce plugin n’est pas très pertinent, en effet au contraire du modem télé2 la bande passant alloué est toujours constante! mais bon voici le code quand même:

 
#!/bin/sh
##############################################################################
##                     DESCRIPTION                                          ##
##############################################################################
#
#  Ce script recupère les donnée sur la page "détection des intrusions" et
#formate ces donnée pour munin
#utilise XMLStarlet
#apt-get install xmlstarlet
#
#le script comprent les commandes:
#  -&gt; autoconf
#  -&gt; config
#  -&gt; &lt;vide&gt;

##############################################################################
##                     Variable de configuration                            ##
##############################################################################

#l'adresse ip du modem routeur NeufBox
IP_NEUFBOX="192.168.1.1"

#############################################################################
##                CONSTANTE POUR FACILITE L'EVOLUTION DU SCRIPT            ##
#############################################################################
#
#ces constantes sont là pour s'adapter à d'eventuelles modifications
#du firmware du modem ou pour permetre au script d'évoluer
#

#page de l'interface WEB qui liste les info de la neuf
PAGE_INFO="/stb/info"

#fichier temporaire ou sera stocké cette page pour faire les traitements
PAGE_FILE="/tmp/temp.munin.neufboxV4.stb.info"

#############################################################################
##                          SCRIPT                                         ##
#############################################################################

getfile()
{
  wget -q -O"$PAGE_FILE" "http://$IP_NEUFBOX$PAGE_INFO"
}

if [ "$1" = "autoconf" ]; then
    #on recupère la page
    getfile
    #on verifie que c'est la bonne page avec son titre
    ret=$(grep "streamrate" "$PAGE_FILE" | wc -l)
       if [ "$ret" &gt; "0" ] ; then
		echo yes
		exit 0
	else
		echo no
		exit 1
	fi
fi

if [ "$1" = "config" ]; then
     echo 'graph_title NeufBox Stream Rate'
     echo 'graph_args --base 1000 -l 0'
     echo 'graph_vlabel time'
     echo 'graph_category NEUFBOXV4'

     echo 'streamrate_down.label Down Stream Rate'
     echo 'streamrate_up.label Up Stream Rate'
     exit 0

fi

if ! [ -f $PAGE_FILE ]; then
  getfile
elif [ $(expr `date '+%s'` -  `date -r $PAGE_FILE '+%s'`) -ge 250 ]; then
  getfile
fi

  ret=$(xmlstarlet sel -t -v  "/info/dsl/downstreamrate" $PAGE_FILE)
  echo "streamrate_down.value"  $ret

  ret=$(xmlstarlet sel -t -v  "/info/dsl/upstreamrate" $PAGE_FILE)
  echo "streamrate_up.value"  $ret

Vous le remarquerez le script utilise xmlstarlet pour parcer le fichier xml reçu. Pour installer ce programme sous linux ubuntu/debian il faut juste faire:

apt-get install xmlstarlet

Et voila le résultat en image: (deux jolies droites!)

Pour le serveur j’ai installé un onduleur afin de limiter les problèmes provenant de l’alimentation.

Celui ci dispose bien entendu d’un logiciel de surveillance: le Belkin Power Management Software afin d’ arrêter proprement le serveur en cas de coupure de courant. Le script de surveillance régulièrement  consulter l’état de l'[search]onduleur [/search]et stocke les informations dans le fichier: /etc/belkin/belkin.q1

On a tout ce qu’il faut pour « monitorer » le fonctionnement de l'[search]onduleur [/search]avec quelques [search]plugins Munin[/search]:

Fréquence de fonctionnement

le premier surveille la fréquence du l’alimentation secteur,  je n’ai jamais vu bouger le 50Hz d’edf!

#!/bin/bash

#ceci est un fichier qui contient les infos des senseurs: on en profite!
BELKINFILE=/etc/belkin/belkin.q1

if [ "$1" = "autoconf" ]; then
        if [ -n "${BELKINFILE}" ] ; then
		echo yes
		exit 0
	else
		echo no
		exit 1
	fi
fi

if [ "$1" = "config" ]; then
        echo 'graph_title Belkin utility frequency '
        echo 'graph_args --base 1000 -l 0'
        echo 'graph_vlabel W'
        echo 'graph_category Belkin'
        echo 'v2.label UPSLOAD'
        echo 'ups_frequency.label main frequency'
        exit 0
fi

#V2=$( cut -d\  -f8 "$BELKINFILE" )
freq=$( cut -d\  -f5 "$BELKINFILE" )
echo "ups_frequency.value ${freq}"

Une Jolie Constante!

Charges de l’onduleur

Le second donne des informations un peu plus intéressantes: la consommation des appareils branchés sur l’onduleur, et la charge de la batterie, les unité sont un peu étrange je n’ai pas réussi à faire de corrélation très propre mais l’unité de puissance correspondrait à environ 5W et pour la batterie çà serait sa tension…

Enfin bref le plugin:

#!/bin/bash

#ceci est un fichier qui contient les infos des senseur: on en profite!
BELKINFILE=/etc/belkin/belkin.q1

if [ "$1" = "autoconf" ]; then
        if [ -n "${BELKINFILE}" ] ; then
		echo yes
		exit 0
	else
		echo no
		exit 1
	fi
fi

if [ "$1" = "config" ]; then
        echo 'graph_title Belkin Load'
        echo 'graph_args --base 1000 -l 0'
        echo 'graph_vlabel W'
        echo 'graph_category Belkin'
        echo 'load.label UPS LOAD'
        echo 'load.warning 8:13'
        echo 'load.critical 7:14'
        echo 'battery.warning 10:'
        echo 'battery.critical 7:'
        echo 'battery.label battery'
        exit 0
fi

#if [ -n "${BELKINFILE}" ] ; then
  V1=$( cut -d\  -f4 "$BELKINFILE" )
  V2=$( cut -d\  -f6 "$BELKINFILE" )
#fi
echo "load.value ${V1}"
echo "battery.value ${V2}"

Enfin des informations pertinantes sans echelle ni unité!

La température

Le troisième script donne des informations sur la température de l’onduleur enfin en théorie car je ne l’ai jamais vu bouger quelque soit la température de la pièce!

#!/bin/sh

#ceci est un fichier qui contient les infos des senseur: on en profite!

BELKINFILE=/etc/belkin/belkin.q1

if [ "$1" = "autoconf" ]; then
        if [ -n "${BELKINFILE}" ] ; then
		echo yes
		exit 0
	else
		echo no
		exit 1
	fi
fi

if [ "$1" = "config" ]; then
        echo 'graph_title Belkin Temperature'
        echo 'graph_args --base 1000 -l 0'
        echo 'graph_vlabel °C'
        echo 'graph_category Belkin'
        echo 'temp.label UPS Temp'
        exit 0
fi

V1=$( cut -d\  -f7 "$BELKINFILE" )
echo "temp.value ${V1}"

Encore une jolie constante

Les Tensions

Et le dernier script qui surveille les tentions d’entré de sortie et une troisième dont je n’ai pas trouvé la signification:

#!/bin/bash
#ceci est un fichier qui contient les informations des senseurs: on en profite!

BELKINFILE=/etc/belkin/belkin.q1

if [ "$1" = "autoconf" ]; then
        if [ -n "${BELKINFILE}" ] ; then
		echo yes
		exit 0
	else
		echo no
		exit 1
	fi
fi

if [ "$1" = "config" ]; then
        echo 'graph_title Belkin Utility Voltage'
        echo 'graph_args --base 1000 -l 0'
        echo 'graph_vlabel V'
        echo 'graph_category Belkin'
#on met une echelle entre 200 et 270
        echo 'graph_scale no'
        echo 'graph_args --upper-limit 270 -l 200'
#descrition des senseurs
        echo ups_input_voltage.label UPS input Voltage
        echo ups_output_voltage.label UPS output Voltage
        echo ups_v3_voltage.label UPS V3 Voltage
#        echo ups_frequency.label UPS Frequency
        echo 'ups_input_voltage.warning 210:250'
        echo 'ups_input_voltage.critical 200:260'
        exit 0
fi

V1=$( cut -d\  -f1 "$BELKINFILE" | cut -d\( -f2)
V2=$( cut -d\  -f2 "$BELKINFILE" )
V3=$( cut -d\  -f3 "$BELKINFILE" )
freq=$( cut -d\  -f5 "$BELKINFILE" )
echo "ups_input_voltage.value ${V1}"
echo "ups_output_voltage.value ${V2}"
echo "ups_v3_voltage.value ${V3}"

comme on peut le voir le 220V-240V d' EDF c'est large et non constant!

Et le résultat en images:

Et voila le résultat en temps réel.

(ces scripts sont fournis en Licence GNU-GPL)

Je suis actuellement en train de travailler sur des scripts de monitoring pour le modem Neuf Box de SFR. J’ai retrouvé quelques scripts pour la surveillance du précédent modem SpeedTouch de télé2. Je ne les ai pas gardé très longtemps, en effet destiné à comprendre pourquoi la box plantait régulièrement, il la rendait encore plus instable….

Donc voici ces scripts (ils sont fournis en licence GPL):

Le premier sert à surveiller les débits sur lesquels se règle le modem:

#!/bin/sh
##############################################################################
##                     DESCRIPTION                                          ##
##############################################################################
#
# Par Florent Fortin
# sous Licence GPL
#
#  Ce script reupère les donnée sur la page "detecttion des intrusions" et
#formate ces donnée pour munin
#
#le script comprent les commandes:
#  -> autoconf
#  -> config
#  -> <vide>

##############################################################################
##                     Variable de configuration                            ##
##############################################################################

#l'adresse ip du modem routeur TELE2
IP_TELE2="192.168.1.254"

#############################################################################
##                CONSTANTE POUR FACILITE L'EVOLUTION DU SCRIPT            ##
#############################################################################
#
#ces constantes sont là pour s'adapter à d'eventuelles modifications
#du firmware du modem ou pour permetre au script d'évoluer
#

#page de l'interface WEB qui liste les tentative d'intrusion
PAGE_TELE2="/cgi/b/dsl/dt/?be=0&l0=1&l1=0"
#son titre pour verifier que c'est bien elle:
PAGE_TELE2_TITLE="SpeedTouch - Connexion DSL"

#fichier temporaire ou sera stocké cette page pour faire les traitements
PAGE_FILE="/tmp/temp.TELE2.page.bandwidth"

#############################################################################
##                          SCRIPT                                         ##
#############################################################################

if [ "$1" = "autoconf" ]; then
    #on recupère la page
    wget -q -O"$PAGE_FILE" "http://$IP_TELE2$PAGE_TELE2"
    #on verifie que c'est la bonne page avec son titre
    ret=$(grep "<title>$PAGE_TELE2_TITLE</title>" "$PAGE_FILE" | wc -l)
       if [ "$ret" = "1" ] ; then
        echo yes
        exit 0
    else
        echo no
        exit 1
    fi
fi

if [ "$1" = "config" ]; then
     echo 'graph_title TELE2 BandWidth'
     echo 'graph_args --base 1000 -l 0'
     echo 'graph_vlabel Kbps/s'
     echo 'graph_category TELE2'

     echo 'BW_IN.label BandeWidth Up'
     echo 'BW_OUT.label BandeWidth Down'
     exit 0

fi

  wget -q -O"$PAGE_FILE" "http://$IP_TELE2$PAGE_TELE2"

  ret=$(grep "Bande passante" "$PAGE_FILE" | cut -d\> -f5 | cut -d\< -f1 | cut -d\/ -f1)
  echo "BW_IN.value  $ret"
  ret=$(grep "Bande passante" "$PAGE_FILE" | cut -d\> -f5 | cut -d\< -f1 | cut -d\/ -f2)
  echo "BW_OUT.value $ret"

Le deuxième surveille les erreurs survenues pendant la transition DSL:

#!/bin/sh
##############################################################################
##                     DESCRIPTION                                          ##
##############################################################################
#
# Par Florent Fortin
# sous Licence GPL
#
#  Ce script reupère les donnée sur la page "detecttion des intrusions" et
#formate ces donnée pour munin
#
#le script comprent les commandes:
#  -> autoconf
#  -> config
#  -> <vide>

##############################################################################
##                     Variable de configuration                            ##
##############################################################################

#l'adresse ip du modem routeur TELE2
IP_TELE2="192.168.1.254"

#############################################################################
##                CONSTANTE POUR FACILITE L'EVOLUTION DU SCRIPT            ##
#############################################################################
#
#ces constantes sont là pour s'adapter à d'eventuelles modifications
#du firmware du modem ou pour permetre au script d'évoluer
#

#page de l'interface WEB qui liste les tentative d'intrusion
PAGE_TELE2="/cgi/b/dsl/dt/?be=0&l0=1&l1=0"
#son titre pour verifier que c'est bien elle:
PAGE_TELE2_TITLE="SpeedTouch - Connexion DSL"

#fichier temporaire ou sera stocké cette page pour faire les traitements
PAGE_FILE="/tmp/temp.TELE2.page.error"

#############################################################################
##                          SCRIPT                                         ##
#############################################################################

if [ "$1" = "autoconf" ]; then
    #on recupère la page
    wget -q -O"$PAGE_FILE" "http://$IP_TELE2$PAGE_TELE2"
    #on verifie que c'est la bonne page avec son titre
    ret=$(grep "<title>$PAGE_TELE2_TITLE</title>" "$PAGE_FILE" | wc -l)
       if [ "$ret" = "1" ] ; then
		echo yes
		exit 0
	else
		echo no
		exit 1
	fi
fi

if [ "$1" = "config" ]; then
     echo 'graph_title TELE2 Errors'
     echo 'graph_args --base 1000 -l 0'
     echo 'graph_vlabel Attaque/s'
     echo 'graph_category TELE2'

     echo 'Erreurs_FEC_IN.label Erreurs FEC Montant'
     echo 'Erreurs_FEC_IN.type DERIVE'
     echo 'Erreurs_FEC_IN.min 0'

     echo 'Erreurs_FEC_OUT.label Erreurs FEC Desendant (*1000)'
     echo 'Erreurs_FEC_OUT.type DERIVE'
     echo 'Erreurs_FEC_OUT.min 0'

     echo 'Erreurs_CRC_IN.label Erreurs CRC Montant'
     echo 'Erreurs_CRC_IN.type DERIVE'
     echo 'Erreurs_CRC_IN.min 0'

     echo 'Erreurs_CRC_OUT.label Erreurs CRC Desendant'
     echo 'Erreurs_CRC_OUT.type DERIVE'
     echo 'Erreurs_CRC_OUT.min 0'

     echo 'Erreurs_HEC_IN.label Erreurs HEC Montant'
     echo 'Erreurs_HEC_IN.type DERIVE'
     echo 'Erreurs_HEC_IN.min 0'

     echo 'Erreurs_HEC_OUT.label Erreurs HEC Desendant'
     echo 'Erreurs_HEC_OUT.type DERIVE'
     echo 'Erreurs_HEC_OUT.min 0'

     exit 0

fi

  wget -q -O"$PAGE_FILE" "http://$IP_TELE2$PAGE_TELE2"

  ret=$(grep "Erreurs FEC" "$PAGE_FILE" | cut -d\> -f5 | cut -d\< -f1 | cut -d\  -f1 | awk '{ gsub("\.","");print}' )
  echo "Erreurs_FEC_IN.value  $ret"
#on prend le muntilple de 1000 pour les fec pour garder une echelle comparable entres les grandeur
  ret=$(grep "Erreurs FEC" "$PAGE_FILE" | cut -d\> -f5 | cut -d\< -f1 | cut -d\/ -f2 | awk '{ gsub("\.[0-9][0-9][0-9]$","");print}' | awk '{ gsub("\.","");print}' )
  echo "Erreurs_FEC_OUT.value $ret"
  ret=$(grep "Erreurs FEC" "$PAGE_FILE" | cut -d\> -f5 | cut -d\< -f1 | cut -d\  -f1 | awk '{ gsub("\.","");print}' )
  echo "Erreurs_CRC_IN.value  $ret"
  ret=$(grep "Erreurs CRC" "$PAGE_FILE" | cut -d\> -f5 | cut -d\< -f1 | cut -d\/ -f2 | awk '{ gsub("\.","");print}' )
  echo "Erreurs_CRC_OUT.value $ret"
  ret=$(grep "Erreurs CRC" "$PAGE_FILE" | cut -d\> -f5 | cut -d\< -f1 | cut -d\  -f1 | awk '{ gsub("\.","");print}' )
  echo "Erreurs_HEC_IN.value  $ret"
  ret=$(grep "Erreurs HEC" "$PAGE_FILE" | cut -d\> -f5 | cut -d\< -f1 | cut -d\/ -f2 | awk '{ gsub("\.","");print}' )
  echo "Erreurs_HEC_OUT.value $ret"

Et le dernier, qui surveille les paquets et actions pouvant servir aux intrusions:

#!/bin/sh
##############################################################################
##                     DESCRIPTION                                          ##
##############################################################################
#
# par Florent Fortin
# sous license GPL
#
#  Ce script récupère les donnée sur la page "détection des intrusions" et
#formate ces donnée pour munin
#
#le script comprent les commandes:
#  -> autoconf
#  -> config
#  -> 

##############################################################################
##                     Variable de configuration                            ##
##############################################################################

#l'adresse ip du modem routeur TELE2
IP_TELE2="192.168.1.254"

#############################################################################
##                CONSTANTE POUR FACILITE L'EVOLUTION DU SCRIPT            ##
#############################################################################
#
#ces constantes sont là pour s'adapter à d'eventuelles modifications
#du firmware du modem ou pour permetre au script d'évoluer
#

#page de l'interface WEB qui liste les tentative d'intrusion
PAGE_TELE2="/cgi/b/ids/ov/?be=0&l0=2&l1=7"
#son titre pour verifier que c'est bien elle:
PAGE_TELE2_TITLE="SpeedTouch - Détection des intrusions"

#fichier temporaire ou sera stocké cette page pour faire les traitement
PAGE_FILE="/tmp/temp.TELE2.page.intrusions"

#Liste des intrusion possible
INTRUSIONS="fragment_sweep zero-length_fragment_size small_fragment_size fragment_size_overrun \
fragment_overlap fragment_out-of-order ip_protocol_scan tcp_port_scan tcp_syn_scan \
stealth_tcp_null_scan stealth_tcp_fin_scan stealth_tcp_xmas_scan stealth_tcp_full_xmas_scan \
stealth_tcp_vecna_scan stealth_tcp_syn-fin_scan udp_port_scan ping_sweep_scan tcp_syn_flood \
udp_flood ping_flood icmp_unreachable_storm smurf_broadcast_attack smurf_storm_attack \
fraggle_broadcast_attack fraggle_storm_attack land_attack tcp_null_port tcp_data_on_syn_segment \
tcp_invalid_urgent_offset udp_null_port icmp_type_unknown p_code_unknown ip_zero_payload tcp_rate_limiting \
udp_rate_limiting icmp_rate_limiting ip_rate_limiting"

#############################################################################
##                          SCRIPT                                         ##
#############################################################################

if [ "$1" = "autoconf" ]; then
    #on recupère la page
    wget -q -O"$PAGE_FILE" "http://$IP_TELE2$PAGE_TELE2"
    #on verifie que c'est la bonne page avec son titre
    ret=$(grep "$PAGE_TELE2_TITLE" "$PAGE_FILE" | wc -l)
       if [ "$ret" = "1" ] ; then
		echo yes
		exit 0
	else
		echo no
		exit 1
	fi
fi

if [ "$1" = "config" ]; then
     echo 'graph_title TELE2 Detection des intrusions'
     echo 'graph_args --base 1000 -l 0'
     echo 'graph_vlabel UNITE'
     echo 'graph_category TELE2'
     for i in $INTRUSIONS
        do
           name=$(echo $i | awk '{ gsub("-","_");print}')
           echo "$name.label $i"
#A verifier si on laisse en DERIVE
           echo "$name.type DERIVE"
           echo "$name.min 0"
        done
     exit 0

fi

wget -q -O"$PAGE_FILE" "http://$IP_TELE2$PAGE_TELE2"
for i in $INTRUSIONS
  do
      name=$(echo $i | awk '{ gsub("-","_");print}')
      ret=$(grep "$i" "$PAGE_FILE" | cut -d\> -f5 | cut -d\< -f1)
      echo "$name.value $ret"
  done

EDIT 28-03-2009: modification afin que apache puissent loger des informations dans /var/log/munin-graph.log

Lors du scan des différents logs pour la génération des graphiques pour [search]munin[/search] c’est la création des graphiques qui prend le plus de ressource processeur. La lecture et l’archivage des valeurs se fait très rapidement. Ces graphiques ne seront jamais vu dans la plus-part des cas. Ainsi l’idée est de généré les images uniquement au moment où vous consulterez les images.

Dans ce mode de fonctionnent c’est [search]apache[/search] qui va générer les fichiers, il lui faut donc un accès en écriture à ces fichiers:

sudo chgrp www-data /var/log/munin/ /var/log/munin/munin-graph.log
chmod g+w /var/log/munin /var/log/munin/munin-graph.log

sudo chown -R www-data /var/www/munin
sudo chmod -R g+w /var/www/munin

On peut maintenant configurer munin pour fonctionner en CGI, on ajoute au debut du fichier /etc/munin/munin.conf:

graph_strategy cgi
cgiurl /cgi-bin
giurl_graph /cgi-bin/munin-cgi-graph

n’oublier pas de valider le dossier CGI dans apache (contenue dans /etc/apache2/sites-available/default avec la configuration par défaut d’Ubuntu)

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
     AllowOverride None
     Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
     Order allow,deny
     Allow from all
</Directory>

Pour que la gestion des logs se face correctement:

modifier /etc/logrotate.d/munin afin que lors de la création des fichier de log, apache (www-data) puisse y insérer des informations

/var/log/munin/munin-update.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        create 660 munin www-data
}

On valide le tout avec un:

sudo /etc/init.d/apache2 restart

source

Voici l’influence du passage en CGI sur le serveur: