1. Première partie : installation d’un serveur Web/mail/DNS

1.1. Généralités

Cette section est consacrée à l’installation d’un serveur sur lequel tourneront tous les services, ainsi que les environnements virtuels (présentés dans la deuxième partie). Nous considérons dans ce document que ce serveur est appelé ks123456, et que son adresse IP est 91.123.123.123.

1.2. Premier accès

Nous présentons dans cette section les premières opérations à réaliser pour mettre à jour le serveur et le sécuriser. Elles seront également utilisées pour les différentes instances virtualles.

1.2.1. Passage en UTF-8

Il faut tout d’abord se connecter à son serveur depuis son shell local, avec la commande ssh root@ks123456.kimsufi.com.
Une fois connecté, la première chose à faire est de passer le serveur en UTF-8, pour que tous les caractères accentués soient correctement gérés. A priori, les serveurs KIMSUFI en distribution Debian arrivent en fr_FR, ce qu’il est possible de vérifier avec la commande env :
root@ks123456:~# env | grep LANG
LANG=fr_FR
LANGUAGE=fr_FR:fr
root@ks123456:~#
Il faut donc spécifier que la valeur des locales à utiliser est fr_FR.UTF-8, de la façon suivante :
root@ks123456:~# export LANG=fr_FR.UTF-8
root@ks123456:~# export LANGUAGE=fr_FR.UTF-8
root@ks123456:~#
Il faut ensuite mettre à jour le shell pour conserver cette modification à la prochaine ouverture d’un shell, en ajoutant les lignes export LANG="fr_FR.UTF-8" et export LANGUAGE="fr\_FR.UTF-8" à son fichier .bashrc :
root@ks123456:~# vi .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.

# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022

# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
alias ll='ls -al'
#alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
export LANG="fr_FR.UTF-8"
export LANGUAGE="fr_FR.UTF-8"
root@ks123456:~#

1.2.2. Changement du mot de passe root

Une fois le passage en UTF-8 terminé, il est bon de changer le mot de passe root avec la commande passwd :
root@ks123456:~# passwd
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès
root@ks123456:~#
Si nous n’avions pas passé le serveur en UTF-8, nous aurions eu un message du type : « passwd? : le mot de passe a?t? mis? jour avec succ?s ».

1.2.3. Mise à jour aptitude

Il est ensuite nécessaire de mettre à jour les quelques paquets installés à ce stade, avec en premier lieu, la liste elle-même, par la commande aptitude update :
root@ks123456:~# aptitude update
Prendre : 1 http://security.debian.org squeeze/updates Release.gpg [836 B]
Ign http://security.debian.org/ squeeze/updates/main Translation-en
Ign http://security.debian.org/ squeeze/updates/main Translation-fr
Prendre : 2 http://security.debian.org squeeze/updates Release [38,4 kB]
Prendre : 3 http://security.debian.org squeeze/updates/main Sources [21,2 kB]
Prendre : 4 http://security.debian.org squeeze/updates/main amd64 Packages [64,2 kB]
Atteint http://mirror.ovh.net squeeze Release.gpg
Ign http://mirror.ovh.net/debian/ squeeze/main Translation-en
Prendre : 5 http://mirror.ovh.net/debian/ squeeze/main Translation-fr [553 kB]
Atteint http://mirror.ovh.net squeeze Release
Atteint http://mirror.ovh.net squeeze/main Sources
Atteint http://mirror.ovh.net squeeze/main amd64 Packages
 677 ko téléchargés en 3s (215 ko/s)

root@ks123456:~#
Puis, la mise à jour des paquets proprement dite est réalisée avec la commande aptitude full-upgrade :
root@ks123456:~# aptitude full-upgrade
Aucun paquet ne va être installé, mis à jour ou enlevé.
0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d’archives. Après dépaquetage, 0 o seront utilisés.

root@ks123456:~#

1.2.4. Installation de NTP

Afin que le serveur soit toujours à l’heure, il faut installer ntp :
root@ks123456:~# aptitude install ntp
Les NOUVEAUX paquets suivants vont être installés :
  libopts25{a} ntp
0 paquets mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 566 ko d’archives. Après dépaquetage, 1 303 ko seront utilisés.
Voulez-vous continuer? [Y/n/?] Y
Prendre : 1 http://mirror.ovh.net/debian/ squeeze/main libopts25 amd64 1:5.10-1.1 [66,6 kB]
Prendre : 2 http://mirror.ovh.net/debian/ squeeze/main ntp amd64 1:4.2.6.p2+dfsg-1+b1 [499 kB]
 566 ko téléchargés en 0s (6 774 ko/s)
Sélection du paquet libopts25 précédemment désélectionné.
(Lecture de la base de données... 22884 fichiers et répertoires déjà installés.)
Dépaquetage de libopts25 (à partir de .../libopts25 1%3a5.10-1.1 amd64.deb) ...
Sélection du paquet ntp précédemment désélectionné.
Dépaquetage de ntp (à partir de .../ntp 1%3a4.2.6.p2+dfsg-1+b1 amd64.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »... 
Paramétrage de libopts25 (1:5.10-1.1) ...
Paramétrage de ntp (1:4.2.6.p2+dfsg-1+b1) ...
Starting NTP server: ntpd.

root@ks123456:~#
Il n’y a aucune configuration à réaliser, mais il peut être intéressant de s’assurer que les serveurs sont bien spécifiés dans le fichier /etc/ntp.conf.

1.2.5. Installation de postfix

Afin que les programmes puissent envoyer des mails d’information, d’alerte, etc., il est nécessaire d’installer un serveur de messagerie électronique. Nous allons donc installer postfix.
À noter qu’au milieu du process d’installation, il faut sélectionner un choix de distribution. Comme le nôtre sera « Pas de configuration », cette étape n'est pas nécessaire. Nous allons la supprimer en positionnant la variable DEBIAN_FRONTEND à noninteractive :
root@ks123456:~# DEBIAN_FRONTEND=noninteractive aptitude install postfix
Les NOUVEAUX paquets suivants vont être installés :
  postfix ssl-cert{a}
0 paquets mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 1 425 ko d'archives. Après dépaquetage, 3 690 ko seront utilisés.
Voulez-vous continuer ? [Y/n/?] Y
Prendre : 1 http://mirror.ovh.net/debian/ squeeze/main ssl-cert all 1.0.28 [14,8 kB]
Prendre : 2 http://mirror.ovh.net/debian/ squeeze/main postfix amd64 2.7.1-1 [1 410 kB]
 1 425 ko téléchargés en 0s (7 479 ko/s)
Préconfiguration des paquets...
Sélection du paquet ssl-cert précédemment désélectionné.
(Lecture de la base de données... 22926 fichiers et répertoires déjà installés.)
Dépaquetage de ssl-cert (à partir de .../ssl-cert_1.0.28_all.deb) ...
Sélection du paquet postfix précédemment désélectionné.
Dépaquetage de postfix (à partir de .../postfix_2.7.1-1_amd64.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »...
Paramétrage de ssl-cert (1.0.28) ...
Paramétrage de postfix (2.7.1-1) ...
Ajout du groupe « postfix » (GID 109)...
Fait.
Ajout de l'utilisateur système « postfix » (UID 106) ...
Ajout du nouvel utilisateur « postfix » (UID 106) avec pour groupe d'appartenance « postfix » ...
Le répertoire personnel « /var/spool/postfix » n'a pas été créé.
Creating /etc/postfix/dynamicmaps.cf
Adding tcp map entry to /etc/postfix/dynamicmaps.cf
Ajout du groupe « postdrop » (GID 110)...
Fait.

Postfix was not set up.  Start with
  cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
. If you need to make changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

root@ks123456:~#
Comme indiqué dans les messages, on doit copier le fichier main.cf (il est important de lire les retours lors de l'installation d'un paquet) :
root@ks123456:~# cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
root@ks123456:~#
L'installation de postfix a également créé un fichier d'alias, /etc/aliases, dans lequel il est nécessaire de spécifier l'adresse réelle associée à l'alias root (sur la dernière ligne), car tous les autres alias pointent dessus :
root@ks123456:~# vi /etc/aliases
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: adresse@email
root@ks123456:~#
Puis il est nécessaire de relancer la constitution avec la commande newaliases :
root@ks123456:~# newaliases
root@ks123456:~#
Il peut être nécessaire de créer une file d'attente pour postfix si elle n'existe pas : si le fichier /var/spool/postfix/public/pickup n'est pas présent sur votre serveur, il faut le créer avec la commande suivante :
root@ks123456:~# mkfifo /var/spool/postfix/public/pickup
root@ks123456:~#
Il ne vous reste plus ensuite qu'à redémarrer postfix :
root@ks123456:~# /etc/init.d/postfix restart
root@ks123456:~#
Nous allons vérifier qu'avec ses paramètres par défaut, postfix ne fera pas de votre serveur un relais SMTP ouvert à tous les spammeurs. Pour cela, le plus simple est de tester via un site Web dédié, comme par exemple http://www.pagasa.net/test-smtp/ ou http://www.abuse.net/relay.html.
Une série de tests sera déroulée, et vous devriez obtenir à la fin un message vous indiquant que votre serveur est bien configuré.

1.2.6. Sécurisation de l'utilisateur nobody

Certains programmes sont exécutés par l'utilisateur nobody. Théoriquement, il ne peut jamais se logguer sur le serveur. Il n'est donc pas utile de lui laisser l'accès à un shell. Par défaut, il accède à /bin/sh, comme le montre la commande ci-dessous :
root@ks123456:~# grep nobody /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
root@ks123456:~#
On va donc créer un shell false et le lui appliquer :
root@ks123456:~# echo "/bin/false" >> /etc/shells
root@ks123456:~# chsh -s /bin/false nobody
root@ks123456:~# grep nobody /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/bin/false
root@ks123456:~#

1.2.7. Installation de mutt

Nous allons maintenant installer mutt, qui permet d'envoyer des mails en ligne de commande, avec une pièce-jointe (bien pratique pour les fichiers de log peu digestes à étudier via un shell) :
root@ks123456:~# aptitude install mutt
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu
Initialisation de l'état des paquets... Fait
Les NOUVEAUX paquets suivants vont être installés :
  libgpgme11{a} libpth20{a} mutt
0 paquets mis à jour, 3 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 2 505 ko d'archives. Après dépaquetage, 7 143 ko seront utilisés.
Voulez-vous continuer ? [Y/n/?] Y
Prendre : 1 http://mirror.ovh.net/debian/ squeeze/main libpth20 amd64 2.0.7-16 [83,3 kB]
Prendre : 2 http://mirror.ovh.net/debian/ squeeze/main libgpgme11 amd64 1.2.0-1.2 [344 kB]
Prendre : 3 http://mirror.ovh.net/debian/ squeeze/main mutt amd64 1.5.20-9+squeeze1 [2 078 kB]
 2 505 ko téléchargés en 0s (5 533 ko/s)
Sélection du paquet libpth20 précédemment désélectionné.
(Lecture de la base de données... 23113 fichiers et répertoires déjà installés.)
Dépaquetage de libpth20 (à partir de .../libpth20_2.0.7-16_amd64.deb) ...
Sélection du paquet libgpgme11 précédemment désélectionné.
Dépaquetage de libgpgme11 (à partir de .../libgpgme11_1.2.0-1.2_amd64.deb) ...
Sélection du paquet mutt précédemment désélectionné.
Dépaquetage de mutt (à partir de .../mutt_1.5.20-9+squeeze1_amd64.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »...
Paramétrage de libpth20 (2.0.7-16) ...
Paramétrage de libgpgme11 (1.2.0-1.2) ...
Paramétrage de mutt (1.5.20-9+squeeze1) ...
update-alternatives: utilisation de « /usr/bin/mutt-org » pour fournir « /usr/bin/mutt » (mutt) en mode automatique.

root@ks123456:~#
L'utilisation est simple :
mutt -s SujetDuMail -a FichierAJoindre -- email@du.destinataire < "."

1.2.8. Installation de Apticron

Afin d'éviter d'avoir à réaliser régulièrement les recherches de mises à jour de paquets, nous allons installer apticron, qui lance la comme aptitude update une fois par jour, et envoie un mail en cas de mise à jour :
root@ks123456:~# aptitude install apticron}
Les NOUVEAUX paquets suivants vont être installés :
  apticron heirloom-mailx{a}
0 paquets mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 337 ko d'archives. Après dépaquetage, 868 ko seront utilisés.
Voulez-vous continuer ? [Y/n/?] Y
Prendre : 1 http://mirror.ovh.net/debian/ squeeze/main heirloom-mailx amd64 12.4-2 [319 kB]
Prendre : 2 http://mirror.ovh.net/debian/ squeeze/main apticron all 1.1.42 [18,1 kB]
 337 ko téléchargés en 0s (615 ko/s)
Préconfiguration des paquets...
Sélection du paquet heirloom-mailx précédemment désélectionné.
(Lecture de la base de données... 23362 fichiers et répertoires déjà installés.)
Dépaquetage de heirloom-mailx (à partir de .../heirloom-mailx_12.4-_amd64.deb) ...
Sélection du paquet apticron précédemment désélectionné.
Dépaquetage de apticron (à partir de .../apticron_1.1.42_all.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »...
Paramétrage de heirloom-mailx (12.4-2) ...
update-alternatives: utilisation de « /usr/bin/heirloom-mailx » pour fournir « /usr/bin/mailx » (mailx) en mode automatique.
Paramétrage de apticron (1.1.42) ...

Creating config file /etc/apticron/apticron.conf with new version

Creating config file /etc/cron.d/apticron with new version

root@ks123456:~#

1.2.9. Installation de fail2ban

Pour sécuriser le serveur, nous allons installer fail2ban, qui bloque les adresses IP ayant généré trop de tentatives infructueuses :
root@ks123456:~# aptitude install fail2ban}
Les NOUVEAUX paquets suivants vont être installés :
  fail2ban
0 paquets mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 96,8 ko d'archives. Après dépaquetage, 676 ko seront utilisés.
Prendre : 1 http://mirror.ovh.net/debian/ squeeze/main fail2ban all 0.8.4-3 [96,8 kB]
 96,8 ko téléchargés en 0s (2 013 ko/s)
Sélection du paquet fail2ban précédemment désélectionné.
(Lecture de la base de données... 23246 fichiers et répertoires déjà installés.)
Dépaquetage de fail2ban (à partir de .../fail2ban_0.8.4-3_all.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »...
Paramétrage de fail2ban (0.8.4-3) ...
Traitement des actions différées (« triggers ») pour « python-central »...

root@ks123456:~#
La configuration de fail2ban consiste en la création d'un fichier jail.local dans le répertoire /etc/fail2ban/, contenant les filtres à activités à surveiller, ici : ssh, ssh-dos et postfix. C'est également ici que l'on doit spécifier le type d'action à entreprendre.
root@ks123456:~# vi /etc/fail2ban/jail.local
# Fail2Ban configuration locale.
[DEFAULT]
action = %(action_mwl)s

[ssh]
enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6

[ssh-ddos]
enabled = true
port    = ssh
filter  = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 6

[postfix]
enabled  = true
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log
root@ks123456:~#
Il faut ensuite redémarrer fail2ban :
root@ks123456:~# /etc/init.d/fail2ban restart
Restarting authentication failure monitor: fail2ban.
root@ks123456:~#

1.2.10. Création d'un nouvel utilisateur

Nous allons créer un nouvel utilisateur "moi", afin de ne pas toujours travailler en tant que root, et changer son mot de passe :
root@ks123456:~# useradd -m -d /home/moi moi
root@ks123456:~# passwd moi
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès
root@ks123456:~#

1.2.11. Ajout du paquet sudo

Afin que notre nouvel utilisateur puisse effectuer des commandes en tant que root, nous allons installer le paquet sudo et donner les autorisations adéquates à l'utilisateur moi, en l'ajoutant à la liste des "sudoers" :
root@ks123456:~# aptitude install sudo
[...]
root@ks123456:~#
root@ks123456:~# vi /etc/sudoers
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults    env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
moi     ALL=(root) ALL
root    ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL
root@ks123456:~#

Nous en avons terminé avec les actions indispensables à réaliser pendant le premier accès. Il est donc possible de se déconnecter et continuer plus tard.

1.2.12. Script d'installation

Cette première série d'étapes peut être réunie dans un script bash, permettant une exécution moins contraignante. Ce script pourra être utilisé aussi bien pour notre serveur que pour les containers virtuels.
Aucun test particulier, ni vérification ne sont réalisés : il s'agit juste de la reprise et de l'automatisation des commandes vues jusqu'ici. Là encore, les éléments en rouge sont à personnaliser.
root@ks123456:~# cat ScriptPremInstall.sh
#!/bin/bash


# SPI : Script de Première Installation
echo "SPI -- 1. Mise à jour du fichier .bashrc"
cat - << EOF | tee -a /root/.bashrc > /dev/null
export LANG="fr_FR.UTF-8"
export LANGUAGE="fr_FR.UTF-8"
EOF
sed -i "s/# alias ll=.*/alias ll='ls -al'/g" /root/.bashrc

source /root/.bashrc

echo "SPI -- 2. Aptitude : mise à jour de la liste"
aptitude update --assume-yes

echo "SPI --  . Aptitude : mise à jour des paquets"
aptitude full-upgrade --assume-yes

echo "SPI -- 3. Installation de ntp"
aptitude install ntp --assume-yes

echo "SPI -- 4. Postfix : installation du paquet"
DEBIAN_FRONTEND=noninteractive aptitude install postfix --assume-yes

echo "SPI --  . Postfix : copie du ficher de configuration"
cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf

echo "SPI --  . Postfix : mise à jour du fichier d'alias"
sed -i "/root:/d" /etc/aliases
cat - << EOF | tee -a /etc/aliases > /dev/null
root: adresse@email
EOF

echo "SPI --  . Postfix : mise à jour de la base de données d'alias"
newaliases

echo "SPI --  . Postfix : ajout éventuel d'une file d'attente"
if [ ! -e /var/spool/postfix/public/pickup ]
then
	mkfifo /var/spool/postfix/public/pickup
fi

echo "SPI --  . Postfix : redémarrage"
/etc/init.d/postfix restart

echo "SPI -- 5. Sécurisation de l'utilisateur nobody"
echo "/bin/false" >> /etc/shells
chsh -s /bin/false nobody

echo "SPI -- 6. Installation de mutt"
aptitude install mutt --assume-yes

echo "SPI -- 7. Installation de apticron"
aptitude install apticron --assume-yes

echo "SPI -- 8. Fail2ban : installation du paquet"
aptitude install fail2ban --assume-yes

echo "SPI --  . Fail2ban : configuration"
cat - << EOF | tee /etc/fail2ban/jail.local > /dev/null
# Fail2Ban configuration locale.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = IP.DE.LA.MAISON
action = %(action_mwl)s

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
findtime = 172800
bantime = 604800
maxretry = 3

[ssh-ddos]
enabled = true
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 6

[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
findtime = 172800
bantime = 604800
maxretry = 3

[postfixUNKNOWN]
enabled  = true
port = smtp,ssmtp
filter  = postfixUNKNOWN
logpath  = /var/log/mail.log
# findtime sur 48 heures
findtime = 172800
# bantime sur 7 x 24 heures
bantime = 604800
maxretry = 10
EOF

echo "SPI --  . Fail2ban : création du filtre postfixUNNOWN"
cat - << EOF | tee /etc/fail2ban/filter.d/postfixUNKNOWN.conf > /dev/null
# Fail2Ban configuration file

[Definition]
# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#
failregex = lost connection after UNKNOWN from (.*)\[<HOST>\]

#           NOQUEUE: reject: RCPT from (.*)\[<HOST>\]: 450
#           reject_warning: RCPT from (.*)\[<HOST>\]: 450

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
EOF

echo "SPI --  . Fail2ban : redémarrage"
/etc/init.d/fail2ban restart

echo "SPI -- 9. Ajout de l'utilisateur nouvel_utilisateur"
useradd -m -d /home/nouvel_utilisateur nouvel_utilisateur

echo "SPI -- 10. Ajout et configuration du package SUDO"
aptitude install sudo
sed -i "s/root\tALL.*/nouvel_utilisateur\tALL=(root) ALL\nroot\tALL=(ALL) ALL/g" /etc/sudoers

echo "--------- SPI ---------"
echo "--------- SPI ---------"
echo "IL FAUT MAINTENANT MODIFIER LE MOT DE PASSE ROOT AVEC LA COMMANDE passwd"
echo "--------- SPI ---------"
echo "PUIS LE MOT DE PASSE nouvel_utilisateur AVEC LA COMMANDE passwd nouvel_utilisateur"
echo "--------- SPI ---------"
echo "--------- SPI ---------"

root@ks123456:~# 
N'oubliez pas de changer les mots de passe de root et de l'utilisateur nouvellement créé.
Dernière mise à jour : 30/05/2011
Me contacter : olivier chez delloye point org

Valid HTML 4.01 Transitional