Installation basique de l’ensemble
L’installation de base d’Apache / MySQL / PHP est des plus simples.
Il vous suffit de lancer la commande :
- sudo apt-get install apache2 libapache2-mod-php5 mysql-server php5-mysql php5-gd phpmyadmin
Cette commande ajoutera toutes les dépendances requises et installera donc un système LAMP de base. On y a ajouté phpMyAdmin qui permettra de gérer les bases de données de MySQL en ligne.
Lors de l’installation un mot de passe vous sera demandé pour le compte d’administration de MySQL, il est impératif pour des raisons de sécurité d’en spécifier un.
Il vous sera ensuite demandé quel serveur web à reconfigurer pour exécuter phpMyAdmin, choisissez apache2
. Il est également demandé s’il faut configurer la base de données de phpmyadmin avec dbconfig-common, répondez Oui
puis un mot de passe administrateur qui sert à créer la base de phpMyAdmin, il faut mettre le même que l’on a inséré lors de la configuration de MySQL.
Tester le bon déroulement de l’installation
Afin de tester vous avez besoin de connaitre soit l’adresse IP (par exemple 81.12.123.23) , soit le nom d’hôte du serveur, soit un domaine dont les DNS pointent sur le serveur.
Tester si Apache est accessible
Dans un navigateur, utilisez une de ces 3 adresses :
- http://81.12.123.23
- http://hostname_du_serveur
- http://undomaine.pointantsurleserveur.example
Vous devriez voir apparaitre une page indiquant le message It works
.
Cette page est la page d’accueil par défaut d’Apache.
Tester si phpMyAdmin et MySQL fonctionnent
Pour ce faire, juste après l’installation, utilisez la même adresse que pour Apache en y ajoutant /phpmyadmin/
à la fin.
Par exemple :
- http://81.12.123.23/phpmyadmin/
Vous devriez voir l’interface de phpMyAdmin vous demandant un nom d’utilisateur et un mot de passe. phpMyAdmin est donc bien installé ainsi que PHP.
Si vous utilisez root
comme nom d’utilisateur et le mot de passe que vous avez utilisé pendant l’installation, vous devriez rentrer dans l’interface de phpMyAdmin où, dans la colonne de gauche, 3 bases de données sont indiquées :
-
information_shema
; -
phpmyadmin
; -
mysql
;
Si c’est le cas, MySQL est également bien installé.
Sécurisation basique de phpMyAdmin
Afin d’éviter que phpMyAdmin soit trop facilement découvrable par les apprentis hackers qui tenteraient une attaque par bruteforce, nous allons le restreindre à un domaine dédié au lieu de le laisser accessible sur tous les domaines de la machine.
On commence par désactiver la configuration Apache par défaut de phpMyAdmin :
- sudo a2disconf phpmyadmin
Puis on crée un virtualhost pour le domaine dédié à phpMyAdmin avec le contenu suivant (basé sur celui présent dans /etc/phpmyadmin/apache.conf
) :
- <VirtualHost *:80>
- ServerAdmin webmaster@localhost
- ServerName sql.site.net
- DocumentRoot /usr/share/phpmyadmin
- <Directory /usr/share/phpmyadmin>
- Options FollowSymLinks
- DirectoryIndex index.php
- <IfModule mod_php5.c>
- AddType application/x-httpd-php .php
- php_flag magic_quotes_gpc Off
- php_flag track_vars On
- php_flag register_globals Off
- php_admin_flag allow_url_fopen Off
- php_value include_path .
- php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
- php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/
- </IfModule>
- </Directory>
- LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n" pma_combined
- CustomLog /var/log/apache2/phpmyadmin-access.log pma_combined
- # Disallow web access to directories that don't need it
- <Directory /usr/share/phpmyadmin/libraries>
- Require all denied
- </Directory>
- <Directory /usr/share/phpmyadmin/setup/lib>
- Require all denied
- </Directory>
- </VirtualHost>
On active notre virtualhost :
- sudo a2ensite sql.site.net
Et on recharge la configuration Apache pour prendre en compte ces changements :
- sudo service apache2 reload
Ainsi phpMyAdmin est accessible uniquement depuis sql.site.net
.
Voir aussi comment protéger l’accès à phpMyAdmin des tentatives de bruteforce.