Serveurs Virtuels · 12 min read · Dec 17, 2025

Environnement Multiserveur Virtuel Avec Serveurs Web & MySQL, Email & DNS Dédiés Sur Debian Squeeze Avec ISPConfig 3 - Page 2

5 Création Des Serveurs Virtuels

Nous allons maintenant utiliser le panneau Web OVZ pour créer nos serveurs virtuels. Connectez-vous au panneau et ajoutez vos IP sous Adresses IP. Ensuite, cliquez sur localhost et Modèles OS.

Nous devons maintenant télécharger un modèle pour nos serveurs virtuels. Nous le faisons en cliquant sur Installer Nouveau Modèle OS -> Contribué et en sélectionnant debian-6.0-amd64-minimal.

Retournez maintenant à localhost et cliquez sur Créer un serveur virtuel. Remplissez les champs comme ci-dessous :

  • ID du serveur (VEID) : un numéro (je choisirais la dernière partie de votre IP, donc 2 pour le premier)
  • Modèle OS : déjà sélectionné le bon
  • Modèle de serveur : illimité
  • Adresse IP : 192.168.1.2
  • Nom d’hôte : web.example.tld
  • Serveur DNS : 8.8.4.4 8.8.8.8 (qui sont les DNS de Google)
  • laissez le reste tel quel et assignez l’espace disque, la RAM et le CPU comme vous le souhaitez…

Répétez cette étape pour tous vos serveurs virtuels (enfin 4 fois : Web, Mail, 2x DNS).

5.1 Préparation Des Serveurs Virtuels

Vous devriez maintenant vous connecter à chaque serveur virtuel et exécuter ces commandes :

apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade
apt-get -y install nano wget ntp ntpdate

ce qui les mettra à jour vers la dernière version et installera certains paquets manquants.

6 Installation Des Serveurs Dédiés

6.1 Installation Du Serveur Web/DB

Éditez le fichier hosts et ajoutez les adresses IP et les noms d’hôtes pour tous les serveurs. Les noms d’hôtes et les adresses IP doivent être ajustés pour correspondre à votre configuration.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Définissez le nom d’hôte du serveur :

echo web.example.tld > /etc/hostname
/etc/init.d/hostname.sh start

Installez le serveur MySQL. Une instance de serveur MySQL est nécessaire sur chaque serveur car ISPConfig l’utilise pour synchroniser la configuration entre les serveurs.

apt-get -y install mysql-client mysql-server

Entrez le nouveau mot de passe pour MySQL lorsque le programme d’installation le demande.

Nous voulons que MySQL écoute sur toutes les interfaces sur le serveur principal, pas seulement localhost, donc nous éditons /etc/mysql/my.cnf et commentons la ligne bind-address = 127.0.0.1 :

nano /etc/mysql/my.cnf

[...]  
# Au lieu de skip-networking, la valeur par défaut est maintenant d'écouter uniquement sur  
# localhost, ce qui est plus compatible et n'est pas moins sécurisé.  
#bind-address           = 127.0.0.1
[...]  

Puis redémarrez MySQL :

/etc/init.d/mysql restart

Installez maintenant Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear et mcrypt comme suit :

apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby sudo zip wget

Vous verrez la question suivante :

Serveur web à reconfigurer automatiquement : <– apache2

Ensuite, exécutez la commande suivante pour activer les modules Apache suexec, rewrite, ssl, actions, headers, expires et include :

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest headers expires

PureFTPd peut être installé avec la commande suivante :

apt-get -y install pure-ftpd-common pure-ftpd-mysql

Éditez le fichier /etc/default/pure-ftpd-common…

vi /etc/default/pure-ftpd-common

… et assurez-vous que virtualchroot est défini sur VIRTUALCHROOT=true :

[...]  
VIRTUALCHROOT=true  
[...]  

Maintenant, nous configurons PureFTPd pour permettre les sessions FTP et TLS. FTP est un protocole très peu sécurisé car tous les mots de passe et toutes les données sont transférés en texte clair. En utilisant TLS, toute la communication peut être chiffrée, rendant ainsi FTP beaucoup plus sécurisé.

Si vous souhaitez autoriser les sessions FTP et TLS, exécutez

echo 1 > /etc/pure-ftpd/conf/TLS

Pour utiliser TLS, nous devons créer un certificat SSL. Je le crée dans /etc/ssl/private/, donc je crée d’abord ce répertoire :

mkdir -p /etc/ssl/private/

Ensuite, nous pouvons générer le certificat SSL comme suit :

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Nom du pays (code à 2 lettres) [AU] : <– Entrez le nom de votre pays (par exemple, “DE”).
Nom de l’état ou de la province (nom complet) [Some-State] : <– Entrez le nom de votre état ou province.
Nom de la localité (par exemple, ville) [] : <– Entrez votre ville.
Nom de l’organisation (par exemple, entreprise) [Internet Widgits Pty Ltd] : <– Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).
Nom de l’unité organisationnelle (par exemple, section) [] : <– Entrez le nom de votre unité organisationnelle (par exemple, “Département IT”).
Nom commun (par exemple, VOTRE nom) [] : <– Entrez le nom de domaine entièrement qualifié du système (par exemple, “web.example.tld”).
Adresse e-mail [] : <– Entrez votre adresse e-mail.

Changez les permissions du certificat SSL :

chmod 600 /etc/ssl/private/pure-ftpd.pem

Installez vlogger, webalizer et awstats :

apt-get -y install vlogger webalizer awstats

Ouvrez ensuite /etc/cron.d/awstats…

vi /etc/cron.d/awstats

… et commentez les deux tâches cron dans ce fichier :

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Générer des rapports statiques :
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Installez Jailkit : Jailkit est nécessaire uniquement si vous souhaitez chroot les utilisateurs SSH. Il peut être installé comme suit (important : Jailkit doit être installé avant ISPConfig - il ne peut pas être installé après !) :

apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./debian/rules binary
cd ..
dpkg -i jailkit2.14-1.deb
rm -rf jailkit-2.14

Installez fail2ban : C’est optionnel mais recommandé, car le moniteur ISPConfig essaie d’afficher le journal :

apt-get install fail2ban

Pour faire en sorte que fail2ban surveille PureFTPd, créez le fichier /etc/fail2ban/jail.local :

vi /etc/fail2ban/jail.local

[pureftpd]

enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

Puis créez le fichier de filtre suivant :

vi /etc/fail2ban/filter.d/pureftpd.conf

[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =

Redémarrez fail2ban ensuite :

/etc/init.d/fail2ban restart

Ensuite, nous allons installer ISPConfig 3. Pour obtenir l’URL de téléchargement de la dernière version stable d’ISPConfig 3, veuillez visiter le site Web d’ISPConfig : http://www.ispconfig.org/ispconfig-3/download/

Ce serveur est le serveur principal de notre configuration qui exécute l’interface du panneau de contrôle ISPConfig. Pour permettre aux autres instances MySQL de se connecter à la base de données MySQL sur ce nœud pendant l’installation, nous devons ajouter des enregistrements d’utilisateur root MySQL dans la base de données principale pour chaque nom d’hôte et adresse IP de serveur esclave. Le moyen le plus simple de le faire est d’utiliser l’outil d’administration phpmyadmin basé sur le web que nous avons déjà installé. Ouvrez l’URL http://192.168.1.2/phpmyadmin dans un navigateur web, connectez-vous en tant qu’utilisateur root MySQL et exécutez ces requêtes MySQL :

CREATE USER ‘root’@’192.168.1.3’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.1.3’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’192.168.1.4’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.1.4’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’192.168.1.5’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.1.5’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’mail.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’mail.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’ns1.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’ns1.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’ns2.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’ns2.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

Dans les commandes sql ci-dessus, remplacez les adresses IP (192.168.1.3 - 192.168.1.5) par les adresses IP de vos serveurs et remplacez mail.example.tld, ns1.example.tld et ns2.example.tld par les noms d’hôtes de vos serveurs et myrootpassword par le mot de passe root souhaité.

Cliquez sur le bouton recharger les permissions ou redémarrez MySQL. Puis fermez phpmyadmin.

Retournez à la console de web.example.tld et téléchargez la dernière version stable d’ISPConfig 3 :

cd /tmp
wget
http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Puis démarrez le script d’installation :

php -q install.php

Sélectionnez la langue (en,de) [en] : <– en
Mode d’installation (standard,expert) [standard] : <– expert
Nom d’hôte entièrement qualifié (FQDN) du serveur, par ex. server2.domain.tld [web.example.tld] : <– web.example.tld
Nom d’hôte du serveur MySQL [localhost] : <– localhost
Nom d’utilisateur root MySQL [root] : <– root
Mot de passe root MySQL [] : <– Entrez votre mot de passe root MySQL ici
Base de données MySQL à créer [dbispconfig] : <– dbispconfig
Jeu de caractères MySQL [utf8] : <– utf8
Ce serveur doit-il rejoindre une configuration multiserveur ISPConfig existante (y,n) [n] : <– n
Configurer le Mail (y,n) [y] : <– n
Configurer Jailkit (y,n) [y] : <– y
Configurer le Serveur FTP (y,n) [y] : <– y
Configurer le Serveur DNS (y,n) [y] : <– n
Configurer le Serveur Apache (y,n) [y] : <– y
Configurer le Serveur Pare-feu (y,n) [y] : <–n
Installer l’Interface Web ISPConfig (y,n) [y] : <–y
Port ISPConfig [8080] : <– 8080
Activer SSL pour l’interface web ISPConfig (y,n) [y] : <– y
Nom du pays (code à 2 lettres) [AU] : <– ENTRER
Nom de l’état ou de la province (nom complet) [Some-State] : <– ENTRER
Nom de la localité (par exemple, ville) [] : <– ENTRER
Nom de l’organisation (par exemple, entreprise) [Internet Widgits Pty Ltd] : <– ENTRER
Nom de l’unité organisationnelle (par exemple, section) [] : <– ENTRER
Nom commun (par exemple, VOTRE nom) [] : <– ENTRER
Adresse e-mail [] : <– ENTRER
Un mot de passe de défi [] : <– ENTRER
Un nom d’entreprise optionnel [] : <– ENTRER

Nettoyez les répertoires d’installation :

cd /tmp
rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

6.2 Installation Du Serveur Mail

Éditez le fichier hosts et ajoutez les adresses IP et les noms d’hôtes pour tous les serveurs. Les noms d’hôtes et les adresses IP doivent être ajustés pour correspondre à votre configuration.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Définissez le nom d’hôte du serveur :

echo mail.example.tld > /etc/hostname
echo mail.example.tld > /etc/mailname
/etc/init.d/hostname.sh start

Installez postfix, dovecot et MySQL avec une seule commande :

apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d

Entrez le nouveau mot de passe pour mysql lorsque le programme d’installation le demande et répondez aux questions suivantes comme décrit ci-dessous :

Type général de configuration ? <– Site Internet
Nom de mail ? <– mail.example.tld

Pour installer amavisd-new, SpamAssassin et ClamAV, nous exécutons :

apt-get -y install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

Si vous souhaitez utiliser des listes de diffusion sur votre serveur, alors installez mailman. Cette étape est optionnelle. mailman nécessite un serveur web apache, donc si vous ne souhaitez pas exécuter une instance apache sur votre serveur de mail, alors n’installez pas mailman.

apt-get -y install mailman

Le programme d’installation apt pour mailman vous demandera alors de sélectionner les langues pour la liste de diffusion. Activez toutes les langues que vous souhaitez utiliser pour mailman. Ensuite, créez la liste de diffusion “mailman”.

newlist mailman

et entrez l’adresse e-mail et le nouveau mot de passe pour l’administrateur de la liste de diffusion. C’est la dernière étape de l’installation de mailman. La prochaine commande pour installer php doit être exécutée sur chaque serveur, indépendamment de si vous avez installé mailman ou non.

Ensuite, installez la version en ligne de commande de PHP pour pouvoir exécuter des scripts shell basés sur PHP pour ISPConfig :

apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt

Installez fail2ban : C’est optionnel mais recommandé, car le moniteur ISPConfig essaie d’afficher le journal :

apt-get install fail2ban

Pour faire en sorte que fail2ban surveille PureFTPd et Dovecot, créez le fichier /etc/fail2ban/jail.local :

vi /etc/fail2ban/jail.local

[dovecot-pop3imap]

enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

Puis créez le fichier de filtre suivant :

vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf

[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

Redémarrez fail2ban ensuite :

/etc/init.d/fail2ban restart

Maintenant, je vais installer ISPConfig 3 sur ce serveur. Pour obtenir l’URL de téléchargement de la dernière version stable d’ISPConfig 3, veuillez visiter le site Web d’ISPConfig : http://www.ispconfig.org/ispconfig-3/download/

Téléchargez la dernière version stable d’ISPConfig 3 :

cd /tmp
wget
http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Puis démarrez le script d’installation :

php -q install.php

Sélectionnez la langue (en,de) [en] : <– en
Mode d’installation (standard,expert) [standard] : <– expert
Nom d’hôte entièrement qualifié (FQDN) du serveur, par ex. server1.domain.tld [mail.example.tld] : <– mail.example.tld
Nom d’hôte du serveur MySQL [localhost] : <– localhost
Nom d’utilisateur root MySQL [root] : <– root
Mot de passe root MySQL [] : <– Entrez votre mot de passe root MySQL ici
Base de données MySQL à créer [dbispconfig] : <– dbispconfig
Jeu de caractères MySQL [utf8] : <– utf8
Ce serveur doit-il rejoindre une configuration multiserveur ISPConfig existante (y,n) [n] : <– y
Nom d’hôte du serveur maître MySQL [] : <– web.example.tld
Nom d’utilisateur root du serveur maître MySQL [root] : <– root
Mot de passe root du serveur maître MySQL [] : <– Entrez le mot de passe root du serveur maître ici
Nom de la base de données du serveur maître MySQL [dbispconfig] : <– dbispconfig
Configurer le Mail (y,n) [y] : <– y

Nom du pays (code à 2 lettres) [AU] : <– DE (Entrez le code pays ISO où vous vivez ici)
Nom de l’état ou de la province (nom complet) [Some-State] : <– Niedersachsen (Entrez l’état où vous vivez ici)
Nom de la localité (par exemple, ville) [] : <– Lueneburg (Entrez la ville ici)
Nom de l’organisation (par exemple, entreprise) [Internet Widgits Pty Ltd] : <– ENTRER
Nom de l’unité organisationnelle (par exemple, section) [] : <– ENTRER
Nom commun (par exemple, VOTRE nom) [] : <– ENTRER
Adresse e-mail [] : <– ENTRER

Configurer Jailkit (y,n) [y] : <– n
Configurer le Serveur FTP (y,n) [y] : <– n
Configurer le Serveur DNS (y,n) [y] : <– n
Configurer le Serveur Apache (y,n) [y] : <– n
Configurer le Serveur Pare-feu (y,n) [y] : <–n
Installer l’Interface Web ISPConfig (y,n) [y] : <–n

Exécutez…

rm -f /var/www/ispconfig

… pour supprimer le lien de l’interface ISPConfig dans le répertoire /var/www.

Nettoyez les répertoires d’installation :

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.