Le serveur parfait – Debian 9 (Stretch) avec Apache, BIND, Dovecot, PureFTPD et ISPConfig 3.1

Ce tutoriel montre comment préparer un serveur Debian 9 (avec Apache2, BIND, Dovecot) pour l’installation de ISPConfig 3.1 et comment installer ISPConfig.
Le panneau de configuration de l’hébergement Web ISPConfig 3 vous permet de configurer les services suivants via un navigateur Web :

  • D’un Serveur Web Apache ou nginx,
  • Serveur de messagerie Postfix,
  • Serveur Courier ou Dovecot IMAP / POP3, MySQL, BIND ou MyDNS,
  • PureFTPd,
  • SpamAssassin,
  • ClamAV,
  • Et beaucoup plus.

 Cette configuration couvre Apache (au lieu de nginx), BIND et Dovecot.

1 Note préliminaire

Dans ce tutoriel, j’utiliserai le nom d’hôte server1.example.com avec l’adresse IP 192.168.1.100 et la passerelle 192.168.1.1.
Ces paramètres peuvent différer pour vous, vous devez donc les remplacer le cas échéant.
Avant de poursuivre, vous devez avoir une installation minimale de Debian 9.
Il s’agit peut-être d’une image minimale Debian de votre hébergeur ou de l’utilisation du tutoriel Serveur Debian minimal pour configurer le système de base.

2 Installez le serveur SSH (facultatif).

Si vous n’avez pas installé le serveur OpenSSH lors de l’installation du système, vous pouvez le faire maintenant:


apt-get install ssh openssh-server

Vous pouvez désormais utiliser un client SSH tel que PuTTY et vous connecter depuis votre poste de travail à votre serveur Debian 9 et suivre les étapes restantes de ce tutoriel.

 3 Installer un éditeur de texte shell (facultatif) 

Nous allons utiliser l’éditeur de texte nano dans ce tutoriel. Certains utilisateurs préfèrent l’éditeur classique vi.
Nous allons donc installer les deux éditeurs ici.
Le programme vi par défaut a un comportement étrange sur Debian et Ubuntu; pour résoudre ce problème, nous installons vim-nox:


apt-get install nano vim-nox

 Si vi est votre éditeur favori, remplacez nano par vi dans les commandes suivantes pour modifier les fichiers.

4 Configurez le nom d’hôte

Le nom d’hôte de votre serveur doit être un sous-domaine du type ‘serveur1.exemple.com’.
N’utilisez pas un nom de domaine sans une partie de sous-domaine telle que ‘exemple.com’ comme nom d’hôte, car cela causerait des problèmes ultérieurement avec votre configuration de messagerie.
Tout d’abord, vérifiez le nom d’hôte dans / etc / hosts et modifiez-le si nécessaire.
La ligne doit être: ‘Adresse IP – espace – nom d’hôte complet, y compris domaine – espace – sous-domaine’.
Pour notre nom d’hôte server1.example.com, le fichier doit ressembler à ceci:


nano /etc/hosts

127.0.0.1       localhost.localdomain   localhost
192.168.1.100   server1.example.com     server1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Puis éditez le fichier / etc / hostname:


nano /etc/hostname

Il ne doit contenir que la partie sous-domaine, dans notre cas:


server1

Enfin, redémarrez le serveur pour appliquer la modification:


reboot

Connectez-vous à nouveau et vérifiez si le nom d’hôte est correct maintenant avec ces commandes :


hostname
hostname -f

La sortie doit être comme ceci :

root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com

5 Mettez à jour votre installation Debian

Tout d’abord, assurez-vous que votre /etc/apt/sources.list contient le référentiel stretch / updates (afin que vous obteniez toujours les dernières mises à jour de sécurité), et que les référentiels contrib et non-free sont activés, car certains packages requis ne sont pas dans le référentiel principal.


nano /etc/apt/sources.list


deb http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free

deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

Sauvagardez, et lancer :


apt-get update

Pour mettre à jour la base de données de paquet apt


apt-get upgrade

et d’installer les dernières mises à jour (s’il y en a).

6 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 faisons ceci:


dpkg-reconfigure dash

Use dash as the default system shell (/bin/sh)? <- no
Utilisez dash comme shell système par défaut (/ bin / sh)? <- non

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

7 Synchroniser l’horloge système

Il est judicieux de synchroniser l’horloge système avec un serveur NTP (Network Time Protocol) sur Internet.

Il suffit de lancer :


apt-get install ntp

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

8 Installation de Postfix, Dovecot, MySQL, rkhunter et Binutils

Nous pouvons installer Postfix, Dovecot, MySQL, rkhunter et Binutils avec une seule commande :


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

Si vous préférez MySQL à MariaDB, remplacez les paquets ‘mariadb-client mariadb-server’ dans la commande ci-dessus par ‘mysql-client mysql-server’.

On vous posera les questions suivantes :

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

Pour sécuriser l’installation de MariaDB / MySQL et désactiver la base de données de test, exécutez la commande suivante :


mysql_secure_installation

Répondez aux questions comme suit :

Change the root password? [Y/n] <-- y
New password: <-- Enter a new MySQL root password
Re-enter new password: <-- Repeat the MySQL root password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

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


nano /etc/postfix/master.cf

Décommentez les sections submit et smtps comme suit et ajoutez des lignes si nécessaire pour que cette section du fichier master.cf ressemble exactement à celle ci-dessous.

[...]
submission inet n - - - - smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -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=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - 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=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...]

Redémarrez Postfix après :


service postfix restart

Nous voulons que MySQL écoute sur toutes les interfaces, pas seulement localhost.
Par conséquent, nous modifions /etc/mysql/mariadb.conf.d/50-server.cnf, mettons en commentaire la ligne bind-address = 127.0.0.1 et ajoutons la ligne sql-mode = ‘NO_ENGINE_SUBSTITUTION’ :


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

sql-mode="NO_ENGINE_SUBSTITUTION"

[...]

Définissez la méthode d’authentification de mot de passe dans MariaDB sur native afin que nous puissions utiliser PHPMyAdmin ultérieurement pour vous connecter en tant qu’utilisateur root :


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

Editez le fichier /etc/mysql/debian.cnf et définissez le mot de passe racine MYSQL / MariaDB à deux reprises dans les lignes commençant par mot de passe.


nano /etc/mysql/debian.cnf

Le mot de passe root MySQL à ajouter est indiqué en lecture.
Dans cet exemple, le mot de passe est ‘howtoforge’.

# 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

Pour éviter l’erreur «Erreur lors de l’acceptation: trop de fichiers ouverts», nous allons définir des limites de fichiers ouverts plus élevées pour MariaDB.
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

Créez ensuite un nouveau répertoire /etc/systemd/system/mysql.service.d/ avec la commande mkdir.


mkdir -p /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 mysql restart

Maintenant, vérifiez que la mise en réseau est activée.
Lancer :


netstat -tap | grep mysql

Le résultat devrait ressembler à ceci :

root@server1:/home/administrator# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 17776/mysqld
root@server1:/home/administrator#

9 Installer Amavisd-new, SpamAssassin et ClamAV

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


apt-get 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

Le programme d’installation d’ISPConfig 3 utilise amavisd, qui charge la bibliothèque de filtres SpamAssassin en interne, afin que nous puissions empêcher SpamAssassin de libérer de la mémoire RAM :


service spamassassin stop
systemctl disable spamassassin

9.1 Installer le serveur Metronome XMPP (facultatif)

Cette étape installe le serveur Metronome XMPP, qui fournit un serveur de discussion compatible avec le protocole XMPP. Cette étape est facultative.
Si vous n’avez pas besoin d’un serveur de discussion, vous pouvez ignorer cette étape.
Aucune autre fonction ISPConfig ne dépend de ce logiciel.
Ajoutez le référentiel de paquet Prosody dans Debian.


echo "deb http://packages.prosody.im/debian stretch main" > /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -

Mettez à jour la liste de paquets :


apt-get update

et installez les paquets avec apt.


apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks


luarocks install lpc

Ajoutez un utilisateur de shell pour Metronome.


adduser --no-create-home --disabled-login --gecos 'Metronome' metronome

Téléchargez Metronome dans le répertoire / opt et compilez-le.


cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make install

Metronome est maintenant installé sur / opt / metronome.

10 Installer Apache2, PHP, FCGI, suExec, Pear, phpMyAdmin et mcrypt

Apache2, PHP7, phpMyAdmin, FCGI, suExec, Pear et mcrypt peuvent être installés comme suit :


apt-get -y 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

Vous verrez les questions suivantes :

Web server to reconfigure automatically: <- apache2
 Configure database for phpmyadmin with dbconfig-common? <- yes
Enter the phpmyadmin application password? <-  Just press enter

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


a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers

Pour vous assurer que le serveur ne peut pas être attaqué par la vulnérabilité HTTPOXY, nous allons désactiver l’en-tête HTTP_PROXY dans apache globalement en ajoutant le fichier de configuration /etc/apache2/conf-available/httpoxy.conf.


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

Collez le contenu suivant dans le fichier :

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

Et activez le module en lançant :


a2enconf httpoxy
service apache2 restart

10.1 Installer HHVM (machine virtuelle HipHop)

Il n’y a pas encore de paquets HHVM pour Debian 9.
HHVM est un mode PHP facultatif.
Par conséquent, votre serveur fonctionnera sans lui.
Vous ne pouvez pas utiliser le mode PHP HHVM pour les sites Web.

10.2 SuPHP

SuPHP n’est plus disponible pour Debian 9, les fonctions de SuPHP sont obsolètes et seront également supprimées d’ISPConfig.
Utilisez les modes PHP disponibles PHP-FPM ou PHP-FCGI avec suexec au lieu de SuPHP.

11 Installer Let’s Encrypt

ISPConfig 3.1 prend en charge l’autorité de certification SSL libre Let’s Encrypt .
La fonction Let’s Encrypt vous permet de créer des certificats SSL gratuits pour votre site Web à partir d’ISPConfig.
Nous allons maintenant ajouter le support Let’s encrypt .


cd /usr/local/bin
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --install-only

Aucune autre étape n’est requise que l’installation de Let’s encrypt .
Les certificats SSL du site Web sont créés par ISPConfig lorsque vous ajoutez les sites Web.

12 Installer PHP-FPM

Pour utiliser PHP-FPM avec Apache, nous avons besoin du module Apache mod_proxy_fcgi, qui est installé par défaut et doit simplement être activé. Nous pouvons installer PHP-FPM et comme suit:


apt-get -y install php7.0-fpm

Assurez-vous d’activer les modules et de redémarrer Apache :


a2enmod actions proxy_fcgi alias 
service apache2 restart

12.1 Installer le cache opcode PHP (facultatif)

Opcache est un opcode cacher gratuit pour la mise en cache et l’optimisation du code intermédiaire PHP.
APCu est un module de compatibilité fournissant des fonctions compatibles APC pour Opcache, utilisé par de nombreux systèmes de mise en cache par CMS.
Il est recommandé d’installer ces extensions PHP pour accélérer votre page PHP.
APCu peut être installé comme suit :


apt-get -y install php7.0-opcache php-apcu

Maintenant redémarrez Apache :


service apache2 restart

13 Installer Mailman

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


apt-get install mailman

Sélectionnez au moins une langue, par exemple :

Languages to support: <-- en (English)
 Missing site list <-- Ok

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


newlist mailman

root@server1:~# newlist mailman
Enter the email of the person running the list: <-- admin email address, e.g. listadmin@example.com
Initial mailman password: <-- admin password for the mailman list
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:
 
## 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"
 
Hit enter to notify mailman owner... <-- ENTER
 
root@server1:~#

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écutez :


newaliases

et redémarrez Postfix :


service postfix restart

Enfin, nous devons activer la configuration Mailman Apache :


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

Cela définit l’alias / cgi-bin / mailman / de tous les Vhots Apache, ce qui signifie que vous pouvez accéder à l’interface administrateur Mailman pour obtenir une liste à l’adresse http://server1.example.com/cgi-bin/mailman/admin/.
Une page Web pour les utilisateurs d’une liste de diffusion est disponible à l’adresse http://server1.example.com/cgi-bin/mailman/listinfo/.

Sous http://server1.example.com/pipermail, vous pouvez trouver les archives de la liste de diffusion.
Redémarrez Apache après :


service apache2 restart

Puis démarrez le démon Mailman :


service mailman start

14 Installer PureFTPd et Quota

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


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

Créez le fichier dhparam pour pure-ftpd :


openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

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 que vous 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é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 crypté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 /, c’est pourquoi 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

Country Name (2 letter code) [AU]: <-- Enter your Country Name (e.g., "DE").
State or Province Name (full name) [Some-State]: <-- Enter your State or Province Name.
Locality Name (eg, city) []: <-- Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter your Organization Name (e.g., the name of your company).
Organizational Unit Name (eg, section) []: <-- Enter your Organizational Unit Name (e.g. "IT Department").
Common Name (eg, YOUR name) []: <-- Enter the Fully Qualified Domain Name of the system (e.g. "server1.example.com").
Email Address []: <-- Enter your Email Address.

Modifier les autorisations du certificat SSL :


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

Puis redémarrez PureFTPd :


service pure-ftpd-mysql restart

Éditez / 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>
# / was on /dev/sda1 during installation
UUID=f539c5cb-624f-4c27-a149-1446a251a453 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=8d3194e7-edb5-4492-937d-d066b4994baf none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Pour activer le quota, exécutez ces commandes :


mount -o remount /

quotacheck -avugm
quotaon -avug

15 Installer le serveur DNS BIND

BIND peut être installé comme suit :


apt-get install bind9 dnsutils

Si votre serveur est une machine virtuelle, il est vivement recommandé d’installer le démon hasged pour obtenir une entropie plus élevée pour la signature DNSSEC.
Vous pouvez également installer haveged sur des serveurs non virtuels, cela ne devrait pas faire de mal.


apt-get install haveged

Une explication sur ce sujet peut être trouvée ici.

16 Installation de Webalizer et AWStats

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


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

Ouvrez ensuite /etc/cron.d/awstats


nano /etc/cron.d/awstats

… et commentez tout 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

17 Installer Jailkit

Jailkit est nécessaire uniquement si vous souhaitez chrooter des utilisateurs SSH.
Il peut être installé comme suit :


apt-get install build-essential autoconf automake libtool flex bison debhelper binutils

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
echo 5 > debian/compat
./debian/rules binary

Vous pouvez maintenant installer le paquet Jailkit .deb comme suit :


cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*

18 Installer les pare-feu Fail2ban et UFW

Ceci est facultatif mais recommandé, car le moniteur ISPConfig tente d’afficher le journal :


apt-get install fail2ban

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


nano /etc/fail2ban/jail.local

Et ajoutez-y la configuration suivante.

[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5

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

Redémarrez fail2ban après :


service fail2ban restart

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


apt-get install ufw

19 Installer RoundCube

Installez RoundCube avec cette commande :


apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

L’installateur posera les questions suivantes :

Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube: <-- press enter
Password of the databases administrative user: <-- enter the MySQL root password here.

Editez le fichier RoundCube /etc/roundcube/config.inc.php et ajustez quelques paramètres :


nano /etc/roundcube/config.inc.php

Définissez default_host et smtp_server sur localhost.

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

Editez le fichier de configuration Apache roundcube /etc/apache2/conf-enabled/roundcube.conf :


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

Et ajoutez une ligne d’alias pour l’alias apache /webmail, vous pouvez ajouter cette ligne au tout début du fichier.
NOTE: N’utilisez pas /mail comme alias, sinon le module de messagerie ispconfig cessera de fonctionner !

Alias /webmail /var/lib/roundcube

Rechargez ensuite Apache :


service apache2 reload

Vous pouvez maintenant accéder à RoundCube comme suit :

http://192.168.1.100/webmail
http://www.example.com/webmail
http://server1.example.com:8080/webmail ( Après avoir installé ISPConfig, voir le chapitre suivant.)

20 Télécharger ISPConfig 3

20.1 Télécharger la version stable (recommandée)

Pour installer ISPConfig 3 à partir de la dernière version publiée,
procédez comme suit :


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

20.2 Télécharger une version bêta de la prochaine version 3.1 (recommandé uniquement pour les configurations de test!)

Si vous souhaitez essayer la pré-version d’une version 3.1 à venir, téléchargez-la avec cette commande :


cd /tmp
wget -O ISPConfig-3.1-dev.tar.gz  https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1
tar xfz ISPConfig-3.1-dev.tar.gz
cd ispconfig3-stable-3.1*
cd install

21 Installer ISPConfig

L’étape suivante consiste à exécuter le programme d’installation ISPConfig.


php -q install.php

Cela démarrera le programme d’installation d’ISPConfig 3.
Le programme d’installation configurera pour vous tous les services tels que Postfix, Dovecot, etc.
Une configuration manuelle requise pour ISPConfig 2 (guides d’installation parfaits) n’est pas nécessaire.

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

>> Initial configuration

Operating System: Debian 9.0 (Stretch) or compatible

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 PostgreyConfiguring PostfixGenerating 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 incorporatedinto 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 blankFor 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 incorporatedinto 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 blankFor 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 EnterCommon 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' attributesto be sent with your certificate request
A challenge password []: <-- Hit EnterAn optional company name []: <-- Hit Enter
writing RSA key
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

Le programme d’installation configure automatiquement tous les services sous-jacents.
Aucune configuration manuelle n’est donc nécessaire.
Ensuite, vous pouvez accéder à ISPConfig 3 sous http (s): //server1.example.com: 8080 / ou http (s): //192.168.1.100: 8080 / (http ou https dépend de ce que vous avez choisi lors de l’installation).
Connectez-vous avec le nom d’utilisateur admin et le mot de passe admin (vous devez changer le mot de passe par défaut après votre première connexion) :

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

21.1 Manuel ISPConfig 3

Pour apprendre à utiliser ISPConfig 3, je vous recommande fortement de télécharger le manuel ISPConfig 3.
Sur plus de 300 pages, il couvre le concept à la base d’ISPConfig (administrateur, revendeurs, clients), explique comment installer et mettre à jour ISPConfig 3, inclut une référence pour tous les formulaires et champs de formulaire dans ISPConfig, ainsi que des exemples d’entrées valides et tutoriels pour les tâches les plus courantes dans ISPConfig 3.
Il explique également comment rendre votre serveur plus sécurisé et comporte une section de dépannage à la fin.

22 Notes complémentaires

22.1 OpenVZ

Si le serveur Debian que vous venez de configurer dans ce didacticiel est un conteneur OpenVZ (machine virtuelle), vous devez le faire sur le système hôte (je suppose que l’ID du conteneur OpenVZ est 101 – remplacez-le par le VPSID correct sur votre système) :

VPSID=101
for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
do
  vzctl set $VPSID --capability ${CAP}:on --save
done

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

Ce tutoriel est disponible en tant qu’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 :

SSH / Shell Login

Username: administrator
Password: howtoforge

Username: root
Password: howtoforge

ISPConfig Login

Username: admin
Password: admin

MySQL Login

Username: root
Password: howtoforge

L’adresse IP de la machine virtuelle est 192.168.1.100.
Elle peut être modifiée dans le fichier / etc / network / interfaces.
Veuillez modifier tous les mots de passe ci-dessus pour sécuriser la machine virtuelle.

23 liens

Soyez le premier à commenter

Poster un Commentaire

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