Installation d'un serveur web apache2 php7 mariadb phpmyadmin sous Debian 9.
Bonjour,
petite note pour installer un serveur LAMPP sous Debian 9:
Apache2:
apt install apache2
Php7:
apt install php7.0
MariaDb:
apt install mariadb-server-10.1
PhpMyAdmin:
apt install phpmyadmin
En une fois:
apt install apache2 php7.0 mariadb-server-10.1 phpmyadmin
Particularité:
Mariadb sous Debian 9 ne demande plus de renseigner le mot de passe root, se qui peut engendrer quelques perturbations.
Lancer la commande de sécurisation de l'installation:
mysql_secure_installation
Creer un mot de passe pour l'utilisateur "root" de MariaDb:
mariadb -u root
GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY 'monpass';
[Facultatif] Creer un nouvel utilisateur:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Lui donner les droits GRANT:
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
[/Facultatif]
Flasher les privileges:
FLUSH PRIVILEGES;
Vous pouvez désormais vous connecter à phpmyadmin avec "root".
Modifier l’url d’accès de phpMyAdmin
Petit bonus, je vous montrerai aussi comment forcer l’utilisation de HTTPS afin d’éviter d’échanger nos login / mots de passe en clair.
MODIFIER L’ADRESSE PAR DÉFAUT
La première chose à faire dans cette étape, est de désactiver l’accès via l’url par défaut. Il faut en fait ouvrir le fichier /etc/phpmyadmin/apache.conf et commenter la ligne suivante :
Alias /phpmyadmin /usr/share/phpmyadmin
devient :
#Alias /phpmyadmin /usr/share/phpmyadmin
CRÉATION DU NOUVEL ACCÈS
Je tourne sous Apache2, nous allons donc créer un nouveau virtual host afin d’avoir accès à la page de connexion. Je vous propose d’utiliser le sous-domaine mysql.mon-domaine.com. Ça reste facile à retenir et difficilement détectable pour un bot qui chercherait à nous attaquer.
Il suffit de créer le fichier /etc/apache2/sites-available/mysql.mon-domaine.conf suivant :
nano /etc/apache2/sites-available/mysql.mon-domaine.conf
<VirtualHost *:80>
ServerAdmin admin@mon-domaine.com
ServerName mysql.mon-domaine.com
DocumentRoot /usr/share/phpmyadmin
</VirtualHost>
Rien de plus compliqué ! Vous pouvez maintenant vérifier la configuration, activer le site et recharger Apache :
a2ensite mysql.mon-domaine.com
service apache2 reload
Vous pouvez maintenant accéder à phpMyAdmin uniquement via mysql.mon-domaine.com ! 🙂
FORCER L’UTILISATION DE HTTPS
Maintenant que nous avons une belle url, il serait intéressant de forcer l’utilisation de SSL afin de chiffrer notre connexion, évitant ainsi l’envoi de mot de passe en clair. Comme je suppose que nous partons de zéro, nous allons générer une clé vérifiée par un certificat auto-signé.
Nous allons utiliser le moddule SSL d’Apache, et le paquet OpenSSL pour la génération du certificat. Vérifiez que tout ceci soit correctement installé :
a2enmod ssl
service apache2 restart
apt-get install openssl
Générons notre certificat :
EDIT : vous pouvez aussi installer une infrastructure à clés publique Let's Encrypt.
cd /tmp
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
mkdir /etc/apache2/certificate
cp server.crt server.key /etc/apache2/certificate
Remarquez que nous les plaçons notre clé et notre certificat dans /etc/apache2/certificate, mais vous pouvez très bien le placer ailleurs. De plus, j’ai utilisé server.key, server.csr… pour des raisons de simplicité, mais vous pouvez les nommer comme vous voulez… (mysql.mon-domaine.com.key par exemple).
Je ne détaille pas toutes les commandes mais si vous avez des questions les commentaires sont là pour ça !
Nous allons maintenant modifier le vhost préalablement créé afin de forcer l’utilisation de HTTPS. Mais d’abord, vérifions qu’Apache écoute bien le port 443 (qui correspond à HTTPS). Votre fichier /etc/apache2/ports.conf doit ressembler à ça :
NameVirtualHost *:80
NameVirtualHost *:443
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
Et votre vhost, modifié comme suit :
<VirtualHost *:80>
# Configuration de l'addresse
ServerAdmin admin@mon-domaine.com
ServerName mysql.mon-domaine.com
DocumentRoot /usr/share/phpmyadmin/
# Redirection vers HTTPS
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R=301]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
# Configuration de l'addresse
ServerAdmin admin@mon-domaine.com
ServerName mysql.mon-domaine.com
DocumentRoot /usr/share/phpmyadmin/
# Personnalisation des logs
TransferLog /var/log/apache2/phpmyadmin-access.log
ErrorLog /var/log/apache2/phpmyadmin-error.log
# Utilisation de la clé et du certificat
SSLEngine on
SSLCertificateFile /etc/apache2/certificate/server.crt
SSLCertificateKeyFile /etc/apache2/certificate/server.key
SSLProxyEngine on
</VirtualHost>
</IfModule>
Là encore si vous avez des questions n’hésitez pas 🙂
Un petit rechargement d’Apache et tout devrait être bon !
a2enmod rewrite
service apache2 reload
Maintenant, si vous accédez à http://mysql.mon-domaine.com, vous serez redirigé vers https://mysql.mon-domaine.com. Comme nous avons utilisé un certificat auto-signé et que votre navigateur ne connaît pas votre autorité (vous…), vous aurez un message d'alerte, c'est normal.
il manque le a2enmod rewrite avant le restart.
Bien vue ! Je rajoute ;)
Bonjour,
Merci pour ce tuto, juste une précision dans la création du nouvel accès:
le fichier à créer doit s'appeler:
/etc/apache2/sites-available/mysql.mon-domaine.com.conf
et non :
/etc/apache2/sites-available/mysql.mon-domaine.com
sinon on obtient un message d'erreur lors de l'activation a2ensite.... domain .... doesn't exist
Oup's, une coquille.
Merci, c'est corrigé ^^.
Faut il payé pour ne pas avoir le message d'erreur avec la connexion https ?
Par rapport au tuto ?
C'est un certificat auto-signé donc c'est normal d'avoir un message d'avertissement.
Cependant rien ne vous empêche de le certifier avec Lets encrypt par exemple.
Grasse a vous j'ai retrouver le plaisir de l'amour :)
Un grand merci a vous
Bonjour !
où es ce que je peux trouver mon fichier vhost sur mon vps ?