GNU/Linux >> Tutoriels Linux >  >> Ubuntu

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, de messagerie, de liste de diffusion, DNS et FTP.

ISPConfig est un panneau de contrôle d'hébergement Web qui vous permet de configurer les services suivants via un navigateur Web :serveur Web Apache ou Nginx, serveur de messagerie Postfix, serveur Courier ou Dovecot IMAP/POP3, MariaDB en remplacement de MySQL, serveur de noms BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV et bien d'autres. Cette configuration couvre l'installation d'Apache (au lieu de Nginx), BIND (au lieu de MyDNS) et 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 différer pour vous, vous devez donc les remplacer le cas échéant. Avant de continuer, vous devez avoir une installation minimale de base d'Ubuntu 20.04 comme expliqué dans le tutoriel.

Les commandes de ce didacticiel doivent être exécutées avec les autorisations root. Pour éviter d'ajouter sudo devant chaque commande, vous devrez passer en tant qu'utilisateur root en exécutant :

sudo -s

avant de continuer.

2. Modifiez /etc/apt/sources.list et mettez à jour votre installation Linux

Modifiez /etc/apt/sources.list. Commentez ou supprimez le CD d'installation du fichier et assurez-vous que les référentiels univers et multivers sont activés. Cela devrait ressembler à ceci après :

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

Puis lancez

apt-get update

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

apt-get upgrade

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

reboot

3. Changer le shell par défaut

/bin/sh est un lien symbolique vers /bin/dash, cependant nous avons besoin de /bin/bash, pas de /bin/dash. Par conséquent, nous procédons comme suit :

dpkg-reconfigure dash

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

Si vous ne le faites pas, l'installation d'ISPConfig échouera.

4. Désactiver AppArmor

AppArmor est une extension de sécurité (similaire à SELinux) qui devrait fournir une sécurité étendue. À mon avis, vous n'en avez pas besoin pour configurer un système sécurisé, et cela cause généralement plus de problèmes que d'avantages (pensez-y après avoir effectué une semaine de dépannage car certains services ne fonctionnaient pas comme prévu, puis vous trouvez que tout allait bien, seul AppArmor causait le problème). Par conséquent, je le désactive (c'est indispensable si vous souhaitez installer ISPConfig plus tard).

Nous pouvons le désactiver comme ceci :

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

5. Synchroniser l'horloge système

C'est une bonne idée de synchroniser l'horloge système avec un NTP (n réseau t temps p rotocol) sur Internet lorsque vous exécutez un serveur physique. Si vous exécutez un serveur virtuel, vous devez ignorer cette étape. Courez 

apt-get -y install ntp

et l'heure de votre système sera toujours synchronisée.

6. Installez 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écutez 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.

C'est bon, cela signifie simplement que sendmail n'a pas été installé, donc il n'y avait rien à supprimer.

Nous pouvons maintenant 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 vous seront posées :

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

Il est important que vous utilisiez un sous-domaine comme "nom de messagerie système" comme serveur1.exemple.com ou serveur1.votredomaine.com et non un domaine que vous souhaitez utiliser ultérieurement comme domaine de messagerie (par exemple, votredomaine.tld).

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

nano /etc/postfix/master.cf

Décommentez les sections de soumission et smtps comme suit - ajoutez la ligne -o smtpd_client_restrictions=permit_sasl_authenticated,reject aux deux sections et laissez tout commenté par la suite :

[...]
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 !

Redémarrez 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écuter :

mysql_secure_installation

Ces questions vous 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éfinissez la méthode d'authentification par mot de passe dans MariaDB sur native afin 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

Modifiez le fichier /etc/mysql/debian.cnf et définissez-y le mot de passe root MYSQL / MariaDB deux fois dans les lignes commençant par password.

nano /etc/mysql/debian.cnf

Le mot de passe root MySQL qui doit être ajouté est affiché en rouge. Dans cet exemple, le mot de passe est "howtoforge". Remplacez le mot "howtoforge" par le mot de passe que vous avez défini pour l'utilisateur root 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

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

nano /etc/security/limits.conf

et ajoutez ces lignes à la fin du fichier.

mysql soft nofile 65535
mysql hard nofile 65535

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

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

et ajoutez un nouveau fichier à l'intérieur :

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

collez les lignes suivantes dans ce fichier :

[Service]
LimitNOFILE=infinity

Enregistrez le fichier et fermez l'éditeur nano.

Ensuite, nous rechargeons systemd et redémarrons MariaDB :

systemctl daemon-reload
service mariadb restart

Vérifiez maintenant que la mise en réseau est activée. Exécuter

netstat -tap | grep mysql

Le résultat devrait ressembler à ceci :

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

7. Installez 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 commencer à utiliser ClamAV :

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. Installez Apache, PHP, phpMyAdmin, FCGI, SuExec, poire

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

Vous verrez la question suivante :

Web server to reconfigure automatically: <-- apache2


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

MySQL application password for phpmyadmin: <-- Press enter

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

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

Pour m'assurer que le serveur ne peut pas être attaqué via la vulnérabilité HTTPOXY, je vais désactiver globalement l'en-tête HTTP_PROXY dans apache. Créez un nouveau fichier httpoxy.conf avec nano :

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

Collez ce contenu dans le fichier :

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

Activez le fichier de configuration en exécutant :

a2enconf httpoxy

Redémarrez ensuite Apache :

service apache2 restart

Si vous souhaitez héberger des fichiers Ruby avec l'extension .rb sur vos sites Web créés via ISPConfig, vous devez 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 sont prêts à l'emploi.)

Redémarrez ensuite Apache :

service apache2 restart

9. Installer Let's Encrypt

ISPConfig 3.2 a une prise en charge intégrée de l'autorité de certification SSL gratuite Let's encrypt. La fonction Let's Encrypt vous permet de créer des certificats SSL gratuits pour votre site Web dans ISPConfig.

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

apt-get install certbot

10. Installer Mailman

ISPConfig vous permet de gérer (créer/modifier/supprimer) des listes de diffusion Mailman. Si vous souhaitez utiliser cette fonctionnalité, installez Mailman comme suit :

apt-get -y install mailman

Sélectionnez au moins une langue, par exemple :

Langues à prendre en charge :<-- fr (anglais)
Liste de sites manquante <-- Ok

L'erreur 'La tâche pour mailman.service a échoué car le processus de contrôle s'est terminé avec code d'erreur. ' peut être ignoré pour le moment.

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

newlist mailman

[email protected] : # newlist mailman
Saisissez l'adresse e-mail de la personne qui gère la liste : <-- l'adresse e-mail de l'administrateur, par ex. [email protected]
Mot de passe initial mailman : <-- mot de passe admin pour la liste mailman 
Pour finir la création de votre liste de diffusion, vous devez modifier votre /etc/aliases (ou
équivalent) fichier en en ajoutant les lignes suivantes et éventuellement en exécutant le programme
`newaliases'  :

## 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 rebondit mailman"
mailman-confirm :      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join :         "|/var/lib/mailman/mail/mailman join mailman"
mailman- congé :        "|/var/lib/mailman/mail/mailman congé 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"

Appuyez sur Entrée pour notifier le propriétaire du mailman... <-- ENTER

[e-mail protégé] :~#

Ouvrez ensuite /etc/aliases...

nano /etc/aliases

... et ajoutez 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écuter

newaliases

ensuite et relancez Postfix :

service postfix restart

Enfin, il faut activer la configuration de Mailman Apache :

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 vous pouvez accéder à l'interface d'administration Mailman pour une liste à http:///cgi-bin/mailman/admin/, et la page Web pour les utilisateurs d'une liste de diffusion se trouve à http:///cgi-bin/mailman/listinfo/.

Sous http:///pipermail, vous trouverez les archives de la liste de diffusion.

Activez la configuration avec :

a2enconf mailman

Redémarrez ensuite Apache :

service apache2 restart

Démarrez ensuite le démon Mailman :

service mailman start

11. Installez 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

Editez le fichier /etc/default/pure-ftpd-common...

nano /etc/default/pure-ftpd-common

... et assurez-vous que le mode de démarrage est défini sur autonome et définissez VIRTUALCHROOT=true :

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

Nous configurons maintenant 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 texte clair. En utilisant TLS, toute la communication peut être cryptée, ce qui rend le 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] :<-- Saisissez 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 de votre province.
Nom de la localité (par exemple, ville) [] :<-- Entrez votre ville.
Nom de l'organisation (par exemple, société) [Internet Widgits Pty Ltd] :<-- Entrez le nom de votre organisation (par exemple, le nom de votre société).
Nom de l'unité organisationnelle (par exemple, section) [] :<-- Saisissez le nom de votre unité organisationnelle (par exemple, "Service informatique").
Nom commun (par exemple, VOTRE nom) [] :<-- Entrez le nom de domaine complet du système (par exemple, "serveur1.exemple.com").
Adresse e-mail [] :<-- Entrez votre adresse e-mail.

Modifiez les autorisations du certificat SSL :

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

Redémarrez ensuite PureFTPd :

service pure-ftpd-mysql restart

Modifiez /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écutez ces commandes :

mount -o remount /
quotacheck -avugm
quotaon -avug

Ce qui affichera 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

Activez et démarrez le démon haveged :

systemctl enable haveged
systemctl start haveged

13. Installez 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

Installation de la dernière version de GoAccess directement à partir du 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

Ouvrez ensuite /etc/cron.d/awstats...

nano /etc/cron.d/awstats

... et commentez 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. Installer Jailkit

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

apt-get -y install jailkit

15. Installez fail2ban et UFW

Ceci est facultatif mais recommandé car le moniteur ISPConfig essaie d'afficher le journal :

apt-get -y install fail2ban

Pour que fail2ban surveille PureFTPd et Dovecot, créez 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émarrez ensuite fail2ban :

service fail2ban restart

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

apt-get install ufw

16. Installer la messagerie Web Roundcube

Pour installer Roundcube Webmail, exécutez :

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

Le programme d'installation peut poser les questions suivantes :

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

Ne vous inquiétez pas si vous ne recevez pas ces questions et un avertissement concernant le script ucf, ce n'est pas grave.

L'avertissement ucf que vous obtiendrez sur le shell peut être ignoré, il n'a aucun impact négatif sur l'installation.

Modifiez ensuite le fichier de configuration Apache RoundCube.

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

et supprimez le # devant la ligne Alias, puis ajoutez la deuxième ligne Alias ​​pour /webmail et ajoutez la ligne "AddType application/x-httpd-php .php" juste après le "" ligne :

# 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émarrez apache

service apache2 restart

Modifiez ensuite le fichier de configuration RoundCube config.inc.php :

nano /etc/roundcube/config.inc.php

et changez l'hôte par défaut en localhost :

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

et le serveur SMTP pour :

$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. Installez 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/

La prochaine étape 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 vous.

# 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.

The installer automatically configures all underlying services, so there is no manual configuration needed.

Afterward you can access ISPConfig 3 under http(s)://server1.example.com:8080/ or http(s)://192.168.0.100:8080/ (HTTP or HTTPS depends on what you chose during installation). Log in with the username admin and the password admin (you should change the default password after your first login):






The system is now ready to be used.

18. Virtual machine image download of this tutorial

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

Connexion SSH/shell

Nom d'utilisateur :administrateur
Mot de passe :howtoforge

Cet utilisateur a les droits sudo.

ISPConfig Login

Username:admin
Password:howtoforge

Connexion MySQL

Nom d'utilisateur :root
Mot de passe :howtoforge

The IP of the VM is 192.168.0.100, it can be changed in the file /etc/netplan/01-netcfg.yaml . Veuillez modifier tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.

19. Links

  • Ubuntu :http://www.ubuntu.com/
  • ISPConfig:http://www.ispconfig.org/

Ubuntu
  1. Le serveur parfait - Ubuntu 15.04 (Vivid Vervet) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3

  2. Le serveur parfait - Ubuntu 15.04 (nginx, BIND, Dovecot et ISPConfig 3)

  3. Le serveur parfait - Ubuntu 15.10 (nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD et ISPConfig 3)

  4. Le serveur parfait - Ubuntu 16.10 (Yakkety Yak) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.1

  5. Le serveur parfait - Ubuntu 17.04 (Zesty Zapus) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.1

Le serveur parfait CentOS 7.2 avec Apache, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.1

Le serveur parfait CentOS 7.3 avec Apache, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.1

Le serveur parfait CentOS 7.4 avec Apache, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.1

Le serveur parfait CentOS 7.6 avec Apache, PHP 7.2, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.1

Le serveur parfait CentOS 8 avec Apache, PHP, Postfix, Dovecot, Pure-FTPD, BIND et ISPConfig 3.2

Le serveur parfait - Ubuntu 14.10 avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig