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://
Sous http://
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 "
# 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/