Serveur Web · 9 min read · Jan 08, 2026

Le Serveur Parfait - CentOS 6.5 x86_64 (Apache2, MySQL, PHP, PureFTPD, Postfix, Dovecot et ISPConfig 3) - Page 4

13 Définir les mots de passe MySQL et configurer phpMyAdmin

Définissez des mots de passe pour le compte root MySQL :

mysql_secure_installation

[root@server1 tmp]# mysql_secure_installation

NOTE : L’EXÉCUTION DE TOUTES LES PARTIES DE CE SCRIPT EST RECOMMANDÉE POUR TOUS LES SERVEURS MySQL EN USAGE PRODUCTION ! VEUILLEZ LIRE CHAQUE ÉTAPE ATTENTIVEMENT !

Pour se connecter à MySQL afin de le sécuriser, nous aurons besoin du mot de passe actuel pour l’utilisateur root. Si vous venez d’installer MySQL et que vous n’avez pas encore défini le mot de passe root, le mot de passe sera vide, donc vous devriez simplement appuyer sur entrer ici.

Entrez le mot de passe actuel pour root (appuyez sur entrer pour aucun) : OK, mot de passe utilisé avec succès, passage à l’étape suivante…

Définir le mot de passe root ? [Y/n] <– ENTRER Nouveau mot de passe : <– votremotdepasseRootSQL Ressaisir le nouveau mot de passe : <– votremotdepasseRootSQL Mot de passe mis à jour avec succès ! Rechargement des tables de privilèges.. … Succès !

Par défaut, une installation MySQL a un utilisateur anonyme, permettant à quiconque de se connecter à MySQL sans avoir à avoir un compte utilisateur créé pour eux. Ceci est destiné uniquement aux tests, et pour rendre l’installation un peu plus fluide. Vous devriez les supprimer avant de passer à un environnement de production.

Supprimer les utilisateurs anonymes ? [Y/n] <– ENTRER … Succès !

Normalement, root ne devrait être autorisé à se connecter que depuis ‘localhost’. Cela garantit que quelqu’un ne peut pas deviner le mot de passe root depuis le réseau.

Interdire la connexion root à distance ? [Y/n] <– ENTRER … Succès !

Par défaut, MySQL est livré avec une base de données nommée ‘test’ à laquelle quiconque peut accéder. Ceci est également destiné uniquement aux tests, et devrait être supprimé avant de passer à un environnement de production.

Supprimer la base de données de test et l’accès à celle-ci ? [Y/n] <– ENTRER

  • Suppression de la base de données de test… … Succès !
  • Suppression des privilèges sur la base de données de test… … Succès !

Recharger les tables de privilèges garantira que tous les changements effectués jusqu’à présent prendront effet immédiatement.

Recharger les tables de privilèges maintenant ? [Y/n] <– ENTRER … Succès !

Nettoyage…

Tout est fait ! Si vous avez complété toutes les étapes ci-dessus, votre installation MySQL devrait maintenant être sécurisée.

Merci d’utiliser MySQL !

[root@server1 tmp]#

Maintenant, nous configurons phpMyAdmin. Nous changeons la configuration d’Apache afin que phpMyAdmin autorise les connexions non seulement depuis localhost (en commentant la section ) :

vi /etc/httpd/conf.d/phpmyadmin.conf

CentOS est incohérent dans les noms de fichiers que ses paquets utilisent, selon l’ordre de votre dépôt, il se peut que le fichier de configuration phpmyadmin soit en camelcase. Donc, si la commande vi ci-dessus aboutit à un nouveau fichier vide, utilisez plutôt cette commande :

vi /etc/httpd/conf.d/phpMyAdmin.conf

| # # Application Web pour gérer MySQL # # # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 # Alias /phpmyadmin /usr/share/phpmyadmin Alias /phpMyAdmin /usr/share/phpmyadmin Alias /mysqladmin /usr/share/phpmyadmin |

Ensuite, nous changeons l’authentification dans phpMyAdmin de cookie à http :

vi /usr/share/phpmyadmin/config.inc.php

| [...] /* Type d'authentification */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

Puis nous créons les liens de démarrage système pour Apache et le démarrons :

chkconfig –levels 235 httpd on
/etc/init.d/httpd start

Maintenant, vous pouvez diriger votre navigateur vers http://server1.example.com/phpmyadmin/ ou http://192.168.0.100/phpmyadmin/ et vous connecter avec le nom d’utilisateur root et votre nouveau mot de passe root MySQL.

Si vous obtenez un message d’erreur comme celui-ci :

[root@server1 tmp]# /etc/init.d/httpd start
Démarrage httpd : httpd : apr_sockaddr_info_get() a échoué pour server1.example.com
httpd : Impossible de déterminer de manière fiable le nom de domaine complet du serveur, en utilisant 127.0.0.1 pour ServerName

alors votre nom d’hôte n’est pas résolvable dans dns ou n’est pas encore défini dans le fichier /etc/hosts. Pour résoudre ce problème, exécutez :

echo “192.168.1.100 server1.example.com server1” >> /etc/hosts

remplacez “server1.example.com” dans la commande ci-dessus par votre nom d’hôte complet et “server1” par la partie sous-jacente du nom d’hôte.

14 Installer Amavisd-new, SpamAssassin et ClamAV

Pour installer amavisd-new, spamassassin et clamav, exécutez la commande suivante :

yum -y install amavisd-new spamassassin clamav clamd unzip bzip2 unrar perl-DBD-mysql

Ensuite, nous démarrons freshclam, amavisd et clamd.amavisd :

sa-update
chkconfig –levels 235 amavisd on
chkconfig –del clamd
chkconfig –levels 235 clamd.amavisd on
/usr/bin/freshclam
/etc/init.d/amavisd start
/etc/init.d/clamd.amavisd start

15 Installer Apache2 avec mod_php, mod_fcgi/PHP5 et suPHP

ISPConfig 3 vous permet d’utiliser mod_php, mod_fcgi/PHP5, cgi/PHP5 et suPHP sur une base par site web.

Nous pouvons installer Apache2 avec mod_php5, mod_fcgid et PHP5 comme suit :

yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel

Ensuite, nous ouvrons /etc/php.ini…

vi /etc/php.ini

… et changeons le rapport d’erreurs (pour que les notifications ne soient plus affichées) et décommentons cgi.fix_pathinfo=1 :

| [...] ;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED [...] ; cgi.fix_pathinfo fournit un support *réel* pour PATH_INFO/PATH_TRANSLATED pour CGI. Le comportement précédent de PHP était de définir PATH_TRANSLATED sur SCRIPT_FILENAME, et de ne pas comprendre ce qu'est PATH_INFO. Pour plus d'informations sur PATH_INFO, consultez les spécifications CGI. Le fait de définir cela sur 1 fera en sorte que PHP CGI corrige ses chemins pour se conformer à la spécification. Un réglage de zéro fait que PHP se comporte comme auparavant. La valeur par défaut est 1. Vous devriez corriger vos scripts pour utiliser SCRIPT_FILENAME plutôt que PATH_TRANSLATED. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=1 [...] |

Ensuite, nous installons suPHP (il existe un paquet mod_suphp disponible dans les dépôts, mais malheureusement il n’est pas compatible avec ISPConfig, donc nous devons construire suPHP nous-mêmes) :

cd /tmp
wget http://suphp.org/download/suphp-0.7.1.tar.gz
tar xvfz suphp-0.7.1.tar.gz
cd suphp-0.7.1/
./configure –prefix=/usr –sysconfdir=/etc –with-apr=/usr/bin/apr-1-config –with-apxs=/usr/sbin/apxs –with-apache-user=apache –with-setid-mode=owner –with-php=/usr/bin/php-cgi –with-logfile=/var/log/httpd/suphp_log –enable-SUPHP_USE_USERGROUP=yes
make
make install

Ensuite, nous ajoutons le module suPHP à notre configuration Apache…

vi /etc/httpd/conf.d/suphp.conf

| LoadModule suphp_module modules/mod_suphp.so |

… et créons le fichier /etc/suphp.conf comme suit :

vi /etc/suphp.conf

| [global] ;Chemin vers le fichier journal logfile=/var/log/httpd/suphp.log ;Niveau de journalisation loglevel=info ;Utilisateur sous lequel Apache s'exécute webserver_user=apache ;Chemin que tous les scripts doivent respecter docroot=/ ;Chemin vers chroot() avant d'exécuter le script ;chroot=/mychroot ; Options de sécurité allow_file_group_writeable=true allow_file_others_writeable=false allow_directory_group_writeable=true allow_directory_others_writeable=false ;Vérifier si le script est dans DOCUMENT_ROOT check_vhost_docroot=true ;Envoyer des messages d'erreur mineurs au navigateur errors_to_browser=false ;Variable d'environnement PATH env_path=/bin:/usr/bin ;Umask à définir, spécifiez en notation octale umask=0077 ; UID minimum min_uid=100 ; GID minimum min_gid=100 [handlers] ;Handler pour les scripts php x-httpd-suphp="php:/usr/bin/php-cgi" ;Handler pour les scripts CGI x-suphp-cgi="execute:!self" |

Enfin, nous redémarrons Apache :

/etc/init.d/httpd restart

15.1 Ruby

À partir de la version 3.0.3, ISPConfig 3 a un support intégré pour Ruby. Au lieu d’utiliser CGI/FastCGI, ISPConfig dépend de mod_ruby étant disponible dans l’Apache du serveur.

Pour CentOS 6.4, il n’y a pas de paquet mod_ruby disponible, donc nous devons le compiler nous-mêmes. D’abord, nous installons quelques prérequis :

yum -y install httpd-devel ruby ruby-devel

Ensuite, nous téléchargeons et installons mod_ruby comme suit :

cd /tmp
wget http://fossies.org/unix/www/apache_httpd_modules/mod_ruby-1.3.0.tar.gz
tar zxvf mod_ruby-1.3.0.tar.gz
cd mod_ruby-1.3.0/
./configure.rb –with-apr-includes=/usr/include/apr-1
make
make install

Enfin, nous devons ajouter le module mod_ruby à la configuration d’Apache, donc nous créons le fichier /etc/httpd/conf.d/ruby.conf…

vi /etc/httpd/conf.d/ruby.conf

| LoadModule ruby_module modules/mod_ruby.so RubyAddPath /1.8 |

… et redémarrons Apache :

/etc/init.d/httpd restart

(Si vous omettez la directive RubyAddPath /1.8, vous verrez des erreurs comme celles-ci dans le journal des erreurs d’Apache lorsque vous appelez des fichiers Ruby :

[Thu May 26 02:05:05 2011] [error] mod_ruby: ruby:0:in `require’: aucun fichier à charger – apache/ruby-run (LoadError)
[Thu May 26 02:05:05 2011] [error] mod_ruby: échec de la demande de apache/ruby-run
[Thu May 26 02:05:05 2011] [error] mod_ruby: erreur dans ruby ) #### 15.2 Python Pour installer mod_python, nous exécutons simplement… yum -y install mod_python … et redémarrons Apache ensuite : /etc/init.d/httpd restart #### 15.3 WebDAV WebDAV devrait déjà être activé, mais pour vérifier cela, ouvrez /etc/httpd/conf/httpd.conf et assurez-vous que les trois modules suivants sont actifs : vi /etc/httpd/conf/httpd.conf | [...] LoadModule auth_digest_module modules/mod_auth_digest.so [...] LoadModule dav_module modules/mod_dav.so [...] LoadModule dav_fs_module modules/mod_dav_fs.so [...] | Si vous devez modifier /etc/httpd/conf/httpd.conf, n’oubliez pas de redémarrer Apache ensuite : /etc/init.d/httpd restart #### 15.4 Versions PHP supplémentaires À partir de l’ISPConfig 3.0.5, il est possible d’avoir plusieurs versions de PHP sur un serveur (sélectionnables via ISPConfig) qui peuvent être exécutées via FastCGI et PHP-FPM. La procédure de construction de versions PHP supplémentaires sur CentOS est décrite dans ce tutoriel : Comment utiliser plusieurs versions de PHP (PHP-FPM & FastCGI) avec ISPConfig 3 (CentOS 6.3) ### 16 Installer PureFTPd PureFTPd peut être installé avec la commande suivante : yum -y install pure-ftpd Ensuite, créez les liens de démarrage système et démarrez PureFTPd : chkconfig –levels 235 pure-ftpd on
/etc/init.d/pure-ftpd start Maintenant, nous configurons 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 chiffrée, rendant ainsi FTP beaucoup plus sécurisé. OpenSSL est nécessaire pour TLS ; pour installer OpenSSL, nous exécutons simplement : yum install openssl Ouvrez /etc/pure-ftpd/pure-ftpd.conf… vi /etc/pure-ftpd/pure-ftpd.conf Si vous souhaitez autoriser les sessions FTP et TLS, définissez TLS sur 1 : | [...] # Cette option peut accepter trois valeurs : # 0 : désactiver la couche de chiffrement SSL/TLS (par défaut). # 1 : accepter à la fois les sessions traditionnelles et chiffrées. # 2 : refuser les connexions qui n'utilisent pas les mécanismes de sécurité SSL/TLS, # y compris les sessions anonymes. # Ne décommentez pas cela à la légère. Assurez-vous que : # 1) Votre serveur a été compilé avec le support SSL/TLS (--with-tls), # 2) Un certificat valide est en place, # 3) Seuls des clients compatibles se connecteront. TLS 1 [...] | 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) [XX] : <– Entrez le nom de votre pays (par exemple, “FR”).
Nom de l’État ou de la province (nom complet) [] : <– Entrez le nom de votre État ou de votre province.
Nom de la localité (par exemple, ville) [Default City] : <– Entrez votre ville.
Nom de l’organisation (par exemple, entreprise) [Default Company Ltd] : <– Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).
Nom de l’unité organisationnelle (par exemple, section) [] : <– Entrez le nom de votre unité organisationnelle (par exemple, “Département IT”).
Nom commun (par exemple, votre nom ou le nom d’hôte de votre serveur) [] : <– Entrez le nom de domaine complet du système (par exemple, “server1.example.com”).
Adresse e-mail [] : <– Entrez votre adresse e-mail. Changez les permissions du certificat SSL : chmod 600 /etc/ssl/private/pure-ftpd.pem Enfin, redémarrez PureFTPd : /etc/init.d/pure-ftpd restart C’est tout. Vous pouvez maintenant essayer de vous connecter en utilisant votre client FTP ; cependant, vous devriez configurer votre client FTP pour utiliser TLS.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.