Installation de ISPConfig sur Debian 9

Article mis à jour pour Debian 9

ISPConfig est un outil d’administation web. Il permet de gérer un serveur via une interface web.

Quand je parle de gestion de serveur, il sert à gérer le serveur DNS, les sites hébergés sur le serveur, le serveur ftp, le serveur mail, etc. C’est très utile pour éviter d’avoir à modifier 36 fichiers en ligne de commande. Ça permet de gagner pas mal de temps.

Toutes les étapes qui vont suivre sont tirées de l’excellent site howtoforge et plus particulièrement de ce tuto que j’ai légèrement adapté à ma configuration.

Les commandes qui vont suivre doivent être rentrée avec l’utilisateur root.

1) Changement du shell

Par défaut, Debian utilise le shell Dash mais ISPConfig a besoin du shell Bash. Pour utiliser le shell Bash, tapez la commande
dpkg-reconfigure dash

Répondez “No” pour utiliser Bash.

2) Installation mail et base de donnée

On va installer tout ce qu’il nous faut pour gérer les mail et la base de donnée.

aptitude install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd

Choisir “Site Internet” sur le premier écran et laisser la valeur par défaut sur le second écran.

Une fois l’installation terminée, lancez la commande mysql_secure_installation pour sécuriser MariaDB. Voici ce qu’il faut répondre aux différentes questions :

  • Enter current password for root (enter for none) : appuyer juste sur entrée. Comme vous venez d’installer MariaDB, l’utilisateur root n’a pas de mot de passe.
  • Set root password? : y
  • Tapez le mot de passe de votre choix, puis confirmez-le.
  • Remove anonymous users? : y. Ca va supprimer le compte anonyme qui peut se connecter au serveur SQL. Ce compte ne sert que pour les tests et est une faille de sécurité une fois en prod.
  • Disallow root login remotely? : y. Désactive la fonction permettant de se connecter à distance au serveur SQL avec le compte root.
  • Remove test database and access to it? : y. Supprime la base de donnée de test.
  • Reload privilege tables now? : y. On recharge les droits.

Une fois tout ça installé, ouvrez le fichier /etc/mysql/mariadb.conf.d/50-server.cnf et commentez la ligne bind-address = 127.0.0.1 en rajoutant un # devant la ligne.

Cela permettra d’éviter que mysql n’écoute qu’en local.

Ensuite, redémarrez mysql avec la commande
systemctl status mariadb .

3) Installation antispam et antivirus

On va ensuite installer amavisd-new, SpamAssassin et ClamAV. Les deux premiers vont nous servir à filtrer le spam sur les boites mails et le dernier est un antivirus. Pour les installer, tapez la commande

aptitude 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 libdbd-mysql-perl postgrey

Il faut savoir que ISPConfig pour filtrer le spam n’utilise pas SpamAssassin mais amavisd qui utilise les filtres de SpamAssassin.

On peut donc arrêter SpamAssassin et empêcher son lancement au démarrage. Ca fera toujours un processus de moins. Tapez ces deux commandes :

  • systemctl stop spamassassin
  • systemctl disable spamassassin

La configuration d’amavis, postfix et roundcube pour les filtres anti-spam est détaillée dans cet article.

4) Installation hébergement web

On va maintenant installer ce qu’il faut pour héberger des sites web. Apache, PHP7, phpMyAdmin, etc. Tapez la commande

aptitude install apache2 apache2-doc apache2-utils libapache2-mod-php php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-imap phpmyadmin php7.0-cli php7.0-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear php7.0-mcrypt mcrypt  imagemagick libruby libapache2-mod-python php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl memcached php-memcache php-imagick php-gettext php7.0-zip php7.0-mbstring memcached libapache2-mod-passenger php7.0-soap

On va vous poser plusieurs questions. Répondez comme suit :

  • Serveur web à reconfigurer automatiquement: <- apache2
  • Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? <- yes
  • Mot de passe de l'administrateur de la base de données <- votre-mot-de-passe-admin-mysql
  • Enter the phpmyadmin application password? <-  Appuyez sur entrée

On va activer certains module de Apache.

Pour ce faire, tapez la commande suivante
a2enmod suexec rewrite ssl actions include auth_digest cgi headers

Pour se protéger de la faille httpoxy, on va ajouter un fichier de configuration à Apache2. Tapez la commande nano /etc/apache2/conf-available/httpoxy.conf pour créer le fichier et collez les lignes suivantes dedans :

<IfModule mod_headers.c>
    RequestHeader unset Proxy early
</IfModule>

Pour activer ce fichier de configuration, il faut taper la commande a2enconf httpoxy.

Pour que ça soit pris en compte il va falloir redémarrer Apache. Tapez la commande
service apache2 restart

Plus de détail dans l’hébergement de site peut être trouvé dans cet article.

5) Installation serveur FTP

Maintenant que la partie mail, base de donnée et site c’est fait, on va installer ce qu’il faut pour gérer un serveur ftp.

On va utiliser pure-ftp et le coupler à une base de donnée mysql avec pure-ftpd-mysql.

Tapez la commande
aptitude install pure-ftpd-common pure-ftpd-mysql quota quotatool.

Ouvrez le fichier /etc/default/pure-ftpd-common et modifier la valeur de VIRTUALCHROOT de “false” à “true”. Cette modification permet d’autoriser les utilisateurs virtuels à suivre les liens symboliques.

Tapez la commande systemctl restart pure-ftpd-mysql.service pour prendre en compte les modifications.

Si vous souhaitez utiliser une connexion TLS avec pure-ftp, c’est expliqué dans cet article.

6) Installation serveur DNS

Passons ensuite au serveur DNS. On va utiliser Bind. Pour l’installer, tapez la commande aptitude install bind9 dnsutils.

L’article sur l’hébergement de site explique également comment configurer Bind.

 

7) Installation Fail2Ban

Pour se protéger des attaques, on va également installer Fail2Ban.

C’est un moniteur de log qui banni automatiquement des ip suivant certaines règles. Je ferai un article dédié à Fail2Ban et à ses filtres.

Pour l’installer, tapez la commande
aptitude install fail2ban

8) Installation ISPConfig

Un dernier paquet à installer et on sera bon. Tapez la commande aptitude install patch

Maintenant qu’on a tout, on va enfin pouvoir installer ISPConfig. Aller dans le répertoire /tmp avec la commande
cd /tmp.

Téléchargez l’installateur de ISPConfig :
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz

Dézippez-le avec la commande
tar xfz ISPConfig-3-stable.tar.gz.

Allez dans le répertoire créé :
cd ispconfig3_install/install/.

Pour lancer l’installation, lancer la commande
php -q install.php.

Pour quasiment toutes les questions, il vous suffira de laisser les réponses par défaut en appuyant sur Entrée, à part quand il demandera le mot de passe root mysql et le numéro du port de ISPConfig si vous voulez le modifier.

Voilà, ISPConfig est installé. Vous n’avez plus qu’à ouvrir le port de ISPConfig et vous pourrez y accéder à l’adresse http://ipduserver:8080. Le login est admin et le mode de passe admin par défaut. Je vous invite à le modifier.

Vous trouverez plusieurs articles expliquant comment utiliser ISPConfig ici.

8 réponses pour “Installation de ISPConfig sur Debian 9”

  1. Ping : Nagios 4.X | Memo du Geek

  2. christelle marie11 septembre 2017 à 15 h 08 minRépondre

    salut jai un soucis avec cette commande wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz je suis débutant et je veux installer ispconfig pour administrer mon serveur FTP mais je n’arrive pas à l’installer sur debian 8 en machine virtuelle on m’envoi toujours un message d’erreur du genre resolution de ” http (http) … echec : nom ou service inconu” wget : impossible de resoudre l’adresse de l’hote (http)

    1. fate11 septembre 2017 à 15 h 19 minRépondre

      Bonjour,
      Ta machine virtuelle a bien accès à internet ? Au vu du message que tu reçois, je dirais que wget n’arrive pas à accéder à l’adresse http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz, alors que cette adresse est toujours valide. A part ta machine virtuelle qui n’aurait pas accès à ta connexion internet, je ne vois pas pourquoi la commande wget ne fonctionnerai pas. Tu peux essayer de télécharger manuellement le fichier ISPConfig-3-stable.tar.gz en dehors de ta machine virtuelle, puis de le copier sur ta machine virtuelle. Une fois cela fait, tu peux reprendre le tuto

  3. Ping : Spamassassin et Amavis | Memo du Geek

  4. Stéphane8 mai 2019 à 11 h 16 minRépondre

    Salut je bloque à la 2ieme commande ! Quelqu’un pour m’aider ?

    root@Serveur-stephane:/home/stephane# aptitude install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd
    bash: aptitude : commande introuvable

    1. fate8 mai 2019 à 11 h 20 minRépondre

      Salut Stéphane,

      Il existe deux gestionnaires de paquet sous Debian, apt et aptitude. Aptitude n’est pas installé par défaut contrairement à apt. Si tu ne veux pas t’embêter à installer aptitude, remplace tous les “aptitude install” par “apt-get install” 😉

  5. zaho1 octobre 2019 à 14 h 17 minRépondre

    bonjour a tous
    j’ai un souci…….quand exécute la commande php -q install.php il ressort commande introuvable
    que faire………….merci……………

    1. fate1 octobre 2019 à 17 h 02 minRépondre

      Salut ZAHO,

      Ce n’est pas précisé dans mon tuto, ni dans celui de Howtoforge, mais il faut que tu ais PHP d’installé.
      Lance la commande “php -v”. Si tu as également “commande introuvable” c’est que PHP n’est pas installé.
      Pour l’installer, lance la commande “sudo aptitude install php7.2” ou “sudo apt-get install php7.2”. Si tu as Debian 10 d’installé (je suis encore sous Debian 9), c’est php7.3 qu’il te faudra installer.

      Si en lançant la commande “php -v” tu as un truc de ce style “PHP 7.2.9-1 (cli) (built: Aug 19 2018 06:56:13) ( NTS )” c’est que PHP est installé et je n’ai alors malheureusement aucune idée de pourquoi tu as ton problème.

Répondre à fate Annuler la réponse

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.