Le serveur parfait – Ubuntu 20.04 avec Apache, PHP, MariaDB, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.2

Ce tutoriel montre l’installation d’un serveur d’hébergement Web Ubuntu 20.04 (Focal Fossa) avec Apache 2.4, Postfix, Dovecot, Bind et PureFTPD pour le préparer à l’installation d’ISPConfig 3.2. Le système résultant fournira un serveur Web, Mail, Mailinglist, DNS et FTP.

ISPConfig est un panneau de contrôle d’hébergement Web qui te permet de configurer les services suivants via un navigateur Web : Serveur Web Apache ou Nginx, serveur de messagerie Postfix, serveur IMAP/POP3 Courier ou Dovecot, MariaDB en remplacement de MySQL, serveur de noms BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV, et bien d’autres encore. Cette configuration couvre l’installation d’Apache (au lieu de Nginx), de BIND (au lieu de MyDNS) et de Dovecot (au lieu de Courier).

1. Remarque préliminaire

Dans ce tutoriel, j’utilise le nom d’hôte server1.example.com avec l’adresse IP 192.168.0.100 et la passerelle 192.168.0.1 Ces paramètres peuvent être différents pour toi, tu dois donc les remplacer le cas échéant. Avant de poursuivre, tu dois avoir une installation minimale de base d’Ubuntu 20.04 comme expliqué dans le tutoriel.

Les commandes de ce tutoriel doivent être exécutées avec les droits de root. Pour éviter d’ajouter sudo devant chaque commande, tu devras devenir utilisateur root en exécutant :

sudo -s

avant de poursuivre.

2. Modifie /etc/apt/sources.list et mets à jour ton installation Linux

Modifie /etc/apt/sources.list. Commente ou supprime le CD d’installation du fichier et assure-toi que les dépôts universe et multiverse sont activés. Le fichier devrait ressembler à ça ensuite :

nano /etc/apt/sources.list
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu focal main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu focal-updates main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu focal universe
# deb-src http://de.archive.ubuntu.com/ubuntu focal universe
deb http://de.archive.ubuntu.com/ubuntu focal-updates universe
# deb-src http://de.archive.ubuntu.com/ubuntu focal-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu focal multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal multiverse
deb http://de.archive.ubuntu.com/ubuntu focal-updates multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu focal partner
# deb-src http://archive.canonical.com/ubuntu focal partner

deb http://de.archive.ubuntu.com/ubuntu focal-security main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal-security main restricted
deb http://de.archive.ubuntu.com/ubuntu focal-security universe
# deb-src http://de.archive.ubuntu.com/ubuntu focal-security universe
deb http://de.archive.ubuntu.com/ubuntu focal-security multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal-security multiverse

Exécute ensuite

apt-get update

pour mettre à jour la base de données des paquets apt et

apt-get upgrade

pour installer les dernières mises à jour (s’il y en a). Si tu vois qu’un nouveau noyau est installé dans le cadre des mises à jour, tu dois ensuite redémarrer le système :

reboot

3. Change le shell par défaut

/bin/sh est un lien symbolique vers /bin/dash, mais nous avons besoin de /bin/bash, pas de /bin/dash. Par conséquent, nous faisons ceci :

dpkg-reconfigure dash

Utiliser dash comme shell système par défaut (/bin/sh) ? <– Non

Si tu ne fais pas cela, l’installation d’ISPConfig échouera.

4. Désactive AppArmor

AppArmor est une extension de sécurité (similaire à SELinux) qui devrait fournir une sécurité étendue. À mon avis, tu n’en as pas besoin pour configurer un système sécurisé, et elle cause généralement plus de problèmes que d’avantages (pense à cela après avoir fait une semaine de dépannage parce qu’un service ne fonctionnait pas comme prévu, puis tu découvres que tout allait bien, que seul AppArmor causait le problème). Par conséquent, je le désactive (c’est indispensable si tu veux installer ISPConfig par la suite).

Nous pouvons le désactiver comme suit :

service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

5. Synchronise l’horloge du système

C’est une bonne idée de synchroniser l’horloge du système avec un serveur NTP(network time protocol) sur Internet lorsque tu exécutes un serveur physique. Si tu exécutes un serveur virtuel, tu peux sauter cette étape. Exécute simplement

apt-get -y install ntp

et l’heure de ton système sera toujours synchronisée.

6. Installe Postfix, Dovecot, MariaDB, rkhunter et binutils

Pour installer Postfix, nous devons nous assurer que sendmail n’est pas installé et en cours d’exécution. Pour arrêter et supprimer sendmail, exécute cette commande :

service sendmail stop; update-rc.d -f sendmail remove

Le message d’erreur :

Failed to stop sendmail.service: Unit sendmail.service not loaded.

Est correct, cela signifie simplement que sendmail n’était pas installé, il n’y avait donc rien à supprimer.

Maintenant, nous pouvons installer Postfix, Dovecot, MariaDB (en remplacement de MySQL), rkhunter et binutils avec une seule commande :

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

Les questions suivantes te seront posées :

General type of mail configuration: <-- Internet Site
System mail name: <-- server1.example.com

Il est important que tu utilises un sous-domaine comme « nom de messagerie du système » comme server1.example.com ou server1.yourdomain.com et non un domaine que tu veux utiliser comme domaine de messagerie (par exemple yourdomain.tld) plus tard.

Ensuite, ouvre les ports TLS/SSL et de soumission dans Postfix :

nano /etc/postfix/master.cf

Décommente les sections submission et smtps comme suit – ajoute la ligne -o smtpd_client_restrictions=permit_sasl_authenticated,reject aux deux sections et laisse tout ce qui suit commenté :

[...]
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING [...]

REMARQUE : Les espaces devant les lignes « -o …. » sont importants. « sont importants !

Redémarre ensuite Postfix :

service postfix restart

Nous voulons que MySQL écoute sur toutes les interfaces, pas seulement sur localhost. Par conséquent, nous éditons /etc/mysql/mariadb.conf.d/50-server.cnf et commentons la ligne bind-address = 127.0.0.1:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1

[...]

Maintenant, nous définissons un mot de passe root dans MariaDB. Exécute :

mysql_secure_installation

Les questions suivantes te seront posées :

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Définis la méthode d’authentification du mot de passe dans MariaDB sur native pour que nous puissions utiliser PHPMyAdmin plus tard pour nous connecter en tant qu’utilisateur root :

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Modifie le fichier /etc/mysql/debian.cnf et définis-y le mot de passe root MySQL / MariaDB deux fois dans les lignes qui commencent par password.

nano /etc/mysql/debian.cnf

Le mot de passe root MySQL qui doit être ajouté est indiqué en rouge. Dans cet exemple, le mot de passe est « howtoforge ». Remplace le mot « howtoforge » par le mot de passe que tu as défini pour l’utilisateur racine de MySQL avec la commande mysql_secure_installation.

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

Ouvre le fichier /etc/security/limits.conf avec un éditeur :

nano /etc/security/limits.conf

et ajoute ces lignes à la fin du fichier.

mysql soft nofile 65535
mysql hard nofile 65535

Ensuite, crée un nouveau répertoire /etc/systemd/system/mysql.service.d/ avec la commande mkdir.

mkdir /etc/systemd/system/mysql.service.d/

et ajoute un nouveau fichier à l’intérieur :

nano /etc/systemd/system/mysql.service.d/limits.conf

Colle les lignes suivantes dans ce fichier :

[Service]
LimitNOFILE=infinity

Sauvegarde le fichier et ferme l’éditeur nano.

Ensuite, nous rechargeons systemd et redémarrons MariaDB :

systemctl daemon-reload
service mariadb restart

Vérifie maintenant que la mise en réseau est activée. Exécute

netstat -tap | grep mysql

La sortie devrait ressembler à ceci :

[email protected]:~# netstat -tap | grep mysql
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      51836/mysqld
[email protected]:~#

7. Installe Amavisd-new, SpamAssassin et Clamav

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

apt-get -y install amavisd-new spamassassin clamav clamav-daemon 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 postgrey

La configuration d’ISPConfig 3 utilise amavisd qui charge la bibliothèque de filtres SpamAssassin en interne, nous pouvons donc arrêter SpamAssassin pour libérer de la RAM :

service spamassassin stop
update-rc.d -f spamassassin remove

Pour démarrer ClamAV, utilise :

freshclam
service clamav-daemon start

L’erreur suivante peut être ignorée lors de la première exécution de freshclam.

ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

8. Installe Apache, PHP, phpMyAdmin, FCGI, SuExec, Pear

Apache 2.4, PHP 7.4, phpMyAdmin, FCGI, suExec et Pear peuvent être installés comme suit :

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.4 php7.4-common php7.4-gd php7.4-mysql php7.4-imap phpmyadmin php7.4-cli php7.4-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear libruby libapache2-mod-python php7.4-curl php7.4-intl php7.4-pspell php7.4-sqlite3 php7.4-tidy php7.4-xmlrpc php7.4-xsl memcached php-memcache php-imagick php7.4-zip php7.4-mbstring php-soap php7.4-soap php7.4-opcache php-apcu php7.4-fpm libapache2-reload-perl

Tu verras la question suivante :

Web server to reconfigure automatically: <-- apache2

Activer PHPMyAdmin dans Apache2


Configure database for phpmyadmin with dbconfig-common? <-- Yes
DBConfig Commun

MySQL application password for phpmyadmin: <-- Press enter

MySQL application password

Exécute ensuite la commande suivante pour activer les modules Apache suexec, rewrite, ssl, actions et include (plus dav, dav_fs et auth_digest si tu veux utiliser WebDAV) :

a2enmod suexec rewrite ssl actions include cgi alias proxy_fcgi
a2enmod dav_fs dav auth_digest headers

Pour que le serveur ne puisse pas être attaqué par la vulnérabilité HTTPOXY, je vais désactiver l’en-tête HTTP_PROXY dans apache de manière globale. Crée un nouveau fichier httpoxy.conf avec nano :

nano /etc/apache2/conf-available/httpoxy.conf

Colle ce contenu dans le fichier :

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

Active le fichier de configuration en exécutant :

a2enconf httpoxy

Redémarre ensuite Apache :

service apache2 restart

Si tu veux héberger des fichiers Ruby avec l’extension .rb sur tes sites Web créés avec ISPConfig, tu dois commenter la ligne application/x-ruby rb dans /etc/mime.types:

nano /etc/mime.types
[...]
#application/x-ruby                             rb
[...]

(Ceci n’est nécessaire que pour les fichiers .rb; les fichiers Ruby avec l’extension .rbx fonctionnent d’emblée).

Redémarre ensuite Apache :

service apache2 restart

9. Installe Let’s Encrypt

ISPConfig 3.2 a un support intégré pour l’autorité de certification SSL gratuite Let’s Encrypt. La fonction Let’s Encrypt te permet de créer des certificats SSL gratuits pour ton site Web dans ISPConfig.

Nous allons maintenant ajouter la prise en charge de Let’s encrypt.

apt-get install certbot

10. Installe Mailman

ISPConfig te permet de gérer (créer/modifier/supprimer) les listes de diffusion Mailman. Si tu veux utiliser cette fonctionnalité, installe Mailman comme suit :

apt-get -y install mailman

Sélectionne au moins une langue, par exemple :

Langues à prendre en charge : <– en (anglais)
Liste des sites manquants <– Ok

L’erreur‘La tâche pour mailman.service a échoué car le processus de contrôle a quitté avec le code d’erreur.‘ peut être ignorée pour l’instant.

Avant de pouvoir lancer Mailman, une première liste de diffusion appelée mailman doit être créée :

newlist mailman

[email protected]:~# newlist mailman
Saisis l’email de la personne qui gère la liste :
<– adresse email admin, par [email protected]
Mot de passe initial de mailman :<– mot de passe admin pour la liste mailman
Pour terminer la création de ta liste de diffusion, tu dois modifier ton fichier/etc/aliases (ou son équivalent
) en ajoutant les lignes suivantes, et éventuellement en exécutant le programme
`newaliases’ :

## mailman mailing list
mailman : »|/var/lib/mailman/mailman post mailman »
mailman-admin : »|/var/lib/mailman/mailman admin mailman »
mailman-bounces : »|/var/lib/mailman/mailman bounces mailman »
mailman-confirm : »|/var/lib/mailman/mailman confirme mailman »
mailman-join : »|/var/lib/mailman/mailman join mailman »
mailman-leave : »|/var/lib/mailman/mailman leave mailman »
mailman-owner : »|/var/lib/mailman/mailman owner mailman »
mailman-request : »|/var/lib/mailman/mailman request mailman »
mailman-subscribe : »|/var/lib/mailman/mailman subscribe mailman »
mailman-unsubscribe : « |/var/lib/mailman/mailman unsubscribe mailman »

Appuie sur la touche Entrée pour informer le propriétaire de mailman….<– ENTREE

[email protected]:~#

Ouvre ensuite /etc/aliases

nano /etc/aliases

… et ajoute les lignes suivantes :

[...]
## mailman mailing list
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Exécute

newaliases

après et redémarre Postfix :

service postfix restart

Enfin, nous devons activer la configuration Apache de Mailman :

ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf

Cela définit l’alias /cgi-bin/mailman/ pour tous les vhosts Apache, ce qui signifie que tu peux accéder à l’interface d’administration Mailman pour une liste à l’adresse http://<vhost>/cgi-bin/mailman/admin/<listname>, et que la page Web pour les utilisateurs d’une liste de diffusion se trouve à l’adresse http://<vhost>/cgi-bin/mailman/listinfo/<listname>.

Sous http://<vhost>/pipermail, tu trouveras les archives des listes de diffusion.

Active la configuration avec :

a2enconf mailman

Redémarre ensuite Apache :

service apache2 restart

Puis démarre le démon Mailman :

service mailman start

11. Installer PureFTPd et Quota

PureFTPd et Quota peuvent être installés avec la commande suivante :

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

Modifie le fichier /etc/default/pure-ftpd-common….

nano /etc/default/pure-ftpd-common

… et assure-toi que le mode de démarrage est défini sur standalone et que VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

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

Si tu veux autoriser les sessions FTP et TLS, exécute

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

Afin d’utiliser TLS, nous devons créer un certificat SSL. Je le crée dans /etc/ssl/private/, c’est pourquoi je crée ce répertoire en premier :

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 de 2 lettres) [AU] : <– Saisis le nom de ton pays (par exemple, « DE »).
Nom de l’État ou de la province (nom complet) [Some-State] :
<– Saisis le nom de ton État ou de ta province.
Nom de la localité (par exemple, la ville) [] :
<– Saisis ta ville.
Nom de l’organisation (ex : société) [Internet Widgits Pty Ltd] :
<– Saisis ton nom d’organisation (par exemple, le nom de ton entreprise).
Nom de l’unité organisationnelle (par exemple, la section) [] :
<– Saisis le nom de ton unité organisationnelle (par exemple, le « département informatique »).
Nom commun (par exemple, VOTRE nom) [] :
<– Saisis le nom de domaine entièrement qualifié du système (par exemple, « server1.example.com »).
Adresse e-mail [] :
<– Saisis ton adresse e-mail.

Change les permissions du certificat SSL :

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

Puis redémarre PureFTPd :

service pure-ftpd-mysql restart

Modifie /etc/fstab. Le mien ressemble à ceci (j’ai ajouté ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 à la partition avec le point de montage /) :

nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/server1--vg-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
/dev/mapper/server1--vg-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

Pour activer le quota, exécute ces commandes :

mount -o remount /
quotacheck -avugm
quotaon -avug

Qui afficheront la sortie suivante :

[email protected]:/tmp# quotacheck -avugm
quotacheck: Scanning /dev/mapper/server1--vg-root [/] done
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Checked 13602 directories and 96597 files
quotacheck: Old file not found.
quotacheck: Old file not found.
[email protected]:/tmp# quotaon -avug
/dev/mapper/server1--vg-root [/]: group quotas turned on
/dev/mapper/server1--vg-root [/]: user quotas turned on

12. Installer le serveur DNS BIND

BIND peut être installé comme suit :

apt-get -y install bind9 dnsutils haveged

Active et démarre le démon BIND :

systemctl enable haveged
systemctl start haveged

13. Installe Vlogger, Webalizer, AWStats et GoAccess

Vlogger, Webalizer et AWStats peuvent être installés comme suit :

apt-get -y install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

Installe la dernière version de GoAccess directement depuis le référentiel GoAccess :

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
sudo apt-get update
sudo apt-get install goaccess

Ouvre ensuite /etc/cron.d/awstats

nano /etc/cron.d/awstats

… et commente tout ce qui se trouve dans ce fichier :

#MAILTO=root

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

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

14. Installe Jailkit

Jailkit est utilisé pour emprisonner les utilisateurs shell et les cronjobs dans ISPConfig. Installe jailkit avec apt :

apt-get -y install jailkit

15. Installe fail2ban et UFW

C’est facultatif mais recommandé car le moniteur d’ISPConfig essaie d’afficher le journal :

apt-get -y install fail2ban

Pour que fail2ban surveille PureFTPd et Dovecot, crée le fichier /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local
[pure-ftpd]
enabled  = true
port     = ftp
filter   = pure-ftpd
logpath  = /var/log/syslog
maxretry = 3

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

[postfix]
enabled  = true
port     = smtp
filter   = postfix
logpath  = /var/log/mail.log
maxretry = 3

Redémarre ensuite fail2ban :

service fail2ban restart

Pour installer le pare-feu UFW, exécute cette commande apt :

apt-get install ufw

16. Installe Roundcube Webmail

Pour installer Roundcube Webmail, exécute :

apt-get -y install roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra javascript-common libjs-jquery-mousewheel php-net-sieve tinymce

L’installateur peut te poser les questions suivantes :

Configure database for roundcube with dbconfig-common? <-- Yes
MySQL application password for roundcube: <-- Press enter

Ne t’inquiète pas si tu ne reçois pas ces questions et un avertissement concernant le script ucf, ce n’est pas grave.

L’avertissement ucf que tu obtiendras sur le shell peut être ignoré, il n’a aucun impact négatif sur l’installation.

Ensuite, édite le fichier de configuration apache de RoundCube.

nano /etc/apache2/conf-enabled/roundcube.conf

et supprime le # devant la ligne Alias, puis ajoute la deuxième ligne Alias pour /webmail et ajoute la ligne « AddType application/x-httpd-php .php » juste après la ligne « <Directory /var/lib/roundcube> » :

# Those aliases do not work properly with several hosts on your apache server
# Uncomment them to use it or adapt them to your configuration
Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube [...] <Directory /var/lib/roundcube> AddType application/x-httpd-php .php [...]

Et redémarre apache

service apache2 restart

Puis édite le fichier de configuration RoundCube config.inc.php :

nano /etc/roundcube/config.inc.php

et change l’hôte par défaut en localhost :

$config['default_host'] = 'localhost';

et le serveur SMTP à :

$config['smtp_server'] = 'localhost';

et

$config['smtp_port']  = 25;

Cela empêche Roundcube d’afficher le champ de saisie du nom du serveur dans le formulaire de connexion.

17. Installe ISPConfig 3.2

Nous utiliserons ici la version stable d’ISPConfig 3.2.

cd /tmp 
wget -O ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ispconfig.tar.gz
cd ispconfig3*/install/

L’étape suivante consiste à exécuter

php -q install.php

Cela lancera le programme d’installation d’ISPConfig 3. Le programme d’installation configurera tous les services comme Postfix, Dovecot, etc. pour toi.

# php -q install.php

--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------

>> Initial configuration
Operating System: Ubuntu 20.04.1 LTS (Focal Fossa)
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: <-- Hit Enter
Installation mode (standard,expert) [standard]: <-- Hit Enter
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.canomi.com]: <-- Hit Enter
MySQL server hostname [localhost]: <-- Hit Enter
MySQL server port [3306]: <-- Hit Enter
MySQL root username [root]: <-- Hit Enter
MySQL root password []: <-- Enter your MySQL root password
MySQL database to create [dbispconfig]: <-- Hit Enter
MySQL charset [utf8]: <-- Hit Enter
Configuring Postgrey
Configuring Postfix
Generating a 4096 bit RSA private key
.......................................................................++
........................................................................................................................................++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Configuring Mailman
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring BIND
Configuring Jailkit
Configuring Pureftpd
Configuring Apache
Configuring vlogger
Configuring Metronome XMPP Server
writing new private key to 'localhost.key'
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) [server1.canomi.com]: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Configuring Ubuntu Firewall
Configuring Fail2ban
[INFO] service OpenVZ not detected
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]:
Admin password [admin]:
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- Hit Enter
Generating RSA private key, 4096 bit long modulus
.......................++
................................................................................................................................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-- Hit Enter
An optional company name []: <-- Hit Enter
writing RSA key

Symlink ISPConfig LE SSL certs to postfix? (y,n) [y]:  <-- Hit Enter
Symlink ISPConfig LE SSL certs to pureftpd? Creating dhparam file takes some times. (y,n) [y]:  <-- Hit Enter
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.............................................................+.........................................................................................................................................................................+...................

Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

L’installateur configure automatiquement tous les services sous-jacents, il n’y a donc pas besoin de configuration manuelle.

Ensuite, tu peux accéder à ISPConfig 3 sous http(s)://server1.example.com:8080/ ou http(s)://192.168.0.100:8080/ (HTTP ou HTTPS dépend de ce que tu as choisi pendant l’installation). Connecte-toi avec le nom d’utilisateur admin et le mot de passe admin (tu dois changer le mot de passe par défaut après ta première connexion) :

Connexion à ISPConfig sur Ubuntu 18.04 LTS

Tableau de bord d'ISPConfig 3.2

Le système est maintenant prêt à être utilisé.

18. Téléchargement de l’image de la machine virtuelle de ce tutoriel

Ce tutoriel est disponible sous forme d’image de machine virtuelle prête à l’emploi au format ovf/ova qui est compatible avec VMWare et Virtualbox. L’image de la machine virtuelle utilise les informations de connexion suivantes :

Connexion SSH / Shell

Nom d’utilisateur : administrator
Mot de passe : howtoforge

Cet utilisateur a des droits sudo.

Connexion ISPConfig

Nom d’utilisateur : admin
Mot de passe : howtoforge

Connexion MySQL

Nom d’utilisateur : root
Mot de passe : howtoforge

L’IP de la VM est 192.168.0.100, elle peut être modifiée dans le fichier /etc/netplan/01-netcfg.yaml. Change tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.

19. Liens

Vous aimerez aussi...