Installer XAMPP sur la DMZ et les bases mysql sur la ZMI

Transcription

Installer XAMPP sur la DMZ et les bases mysql sur la ZMI
Sécuriser un serveur XAMPP
sécurité xampp Page 1 sur 15
Installer XAMPP sur la DMZ
et les bases mysql sur la ZMI
Table des matières
1. Introduction :..................................................................................................................................................1
2. Installation de Xampp sur la DMZ et configuration
............................................................................................................................................................................2
3. Installation de Xampp sur la ZMI et configuration (ici version 1.6.4 avec configurations de php.ini et
httpd.conf particulières) :
............................................................................................................................................................................3
4. Création d'une base mysql sur la ZMI............................................................................................................6
5.Création d'un nouvel utilisateur (différent de root ) qui sera seul autorisé à accéder à la base gepi..............8
6. Sauvegarde : (utiliser par exemple le logiciel Cobian backup)
..........................................................................................................................................................................10
Annexe..............................................................................................................................................................12
7. Sécurité https du serveur d'administration XAMPP.....................................................................................12
7.1.Créer un certificat RSA..........................................................................................................................12
7.2. Installer les certificats sur la DMZ (utiliser obligatoirement une clé USB et surtout pas internet).....14
7.3. Installer les certificats sur la ZMI (utiliser obligatoirement une clé USB et surtout pas internet)......14
1. Introduction :
La documentation explique comment installer un serveur apache avec les contraintes suivantes :
– Serveur web apache sécurisé sur DMZ avec certificat « maison » (non certifié par un organisme spécialisé)
– Déport des bases mysql sur la ZMI
– Protection des différents éléments par mot de passe.
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 2 sur 15
2. Installation de Xampp sur la DMZ et configuration
- Télécharger xampp et l'installer (ici xampp-win32-1.6.4-installer.exe ) ,
http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/
– Télécharger la dernière version stable : Gepi-1.5.X sur http://gepi.mutualibre.org/fr/download
– Copier le contenu le répertoire Gepi-1.5.X dans C:\xampp\htdocs\ ; le renommer gepi
– Copier le dossier easy-rsa dans c:\xampp (servira au 7. lors de la création des certificats )
pour info le mot de passe utilisé (administrateur et root = )
sur un XAMP par défaut il n'y a pas de mot de passe
puis, pour les 2 services, cocher Svc.
Répondre OK à « Click OK to install the xxx service »
et cliquer sur Start.
Cliquer ensuite sur Exit pour fermer la fenêtre.
(Rq : si toutes les bases des services PHP sont créées sur
la ZMI, le service Mysql de la DMZ pourra par la suite
être désactivé sans problème)
(éviter d'utiliser FileZilla pour des raisons de sécurité)
–
lancer http://127.0.0.1:8080/ ou https://127.0.0.1
(port 8080 utilisé pour laisser libre le port 80 (utilisé souvent pour bcdi, pronote ...)
Cliquer sur Sécurité
Choisir langue française
Nous allons configurer l'accès à xampp avec mot de
passe, mettre un mot de passe pour l 'accès à la base
mysql et pour l'accès à PhpMyAdmin.
Cliquer sur le lien
http://localhost:8080/security/xamppsecurity.php
ou
https://localhost/security/xamppsecurity.php
au bas de la fenêtre active
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 3 sur 15
Renseigner l'ancien mot de passe de Root
( mysql pour la version 1.6.6a, aucun pour la version
1.6.4 (ligne Current Password absente))
Choisir le nouveau mot de passe (notez le !)
Cocher authentification http
Cocher sauver dans un fichier txt
puis cliquer sur Password Changing
Pour accéder à l'interface d'administration de xampp,
choisir un identifiant de connexion (administrateur
par exemple ici)
Choisir un mot de passe (notez le !)
cocher sauver dans un fichier txt
puis cliquer sur Make safe the XAMPP directory
Vérifications :
–lancer http://127.0.0.1:8080/ ou https://127.0.0.1 renseigner l'administrateur de xampp et son mot de
passe : la connexion à la page d'accueil de xampp doit s'effectuer
–aller ensuite dans outils PHPMYADMIN et renseigner l'utilisateur et son mot de passe défini ci-dessus, la
connexion à PhpMyAdmin doit s'effectuer
3. Installation de Xampp sur la ZMI et configuration (ici version 1.6.4 avec
configurations de php.ini et httpd.conf particulières) :
Télécharger xampp et l'installer (ici xampp-win32-1.6.4-installer.exe ) ,
http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/
– Télécharger la dernière version stable : Gepi-1.5.X sur http://gepi.mutualibre.org/fr/download
– Copier le contenu le répertoire Gepi-1.5.X dans C:\xampp\htdocs\ ; le renommer gepi
– Copier le dossier easy-rsa dans c:\xampp (servira au 7. lors de la création des certificats )
pour info le mot de passe utilisé (administrateur et root = )
sur un XAMP par défaut il n'y a pas de mot de passe
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 4 sur 15
puis, pour les 2 services, cocher Svc et
cliquer sur Start
éviter d'utiliser FileZilla pour des raisons de sécurité
- lancer http://127.0.0.1:8080/ou https://127.0.0.1
Cliquer sur Sécurité
Choisir langue française
Configurer l'accès à xampp avec mot de passe,
mettre un mot de passe pour l 'accès aux bases mysql
et pour l'accès à PhpMyAdmin
(vous pouvez utiliser les mêmes identifiants et mots
de passe que sur la DMZ).
Puis cliquer sur le lien
http://localhost:8080/security/xamppsecurity.php
ou
https://localhost/security/xamppsecurity.php
au bas de la fenêtre active
Renseigner l'ancien mot de passe Root
( mysql pour la version 1.6.6a, aucun pour la version
1.6.4)
Choisir le nouveau mot de passe
Cocher authentification http
Cocher sauver dans un fichier txt
puis cliquer sur Password Changing
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 5 sur 15
Choisir un identifiant de connexion pour accéder à l'
interface d'administration de xampp (administrateur
ici),
Choisir le mot de passe
Cocher sauver dans un fichier txt
puis cliquer sur Make safe the XAMPP directory
Vérifications :
–lancer http://127.0.0.1:8080/ ou https://127.0.0.1 renseigner l'utilisateur administrateur et son mot de
passe, la connexion à xampp doit s'effectuer
–puis aller dans outils PHPMYADMIN et renseigner l'utilisateur ROOT et son mot de passe, la connexion à
PhpMyAdmin doit ensuite se faire.
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 6 sur 15
4. Création d'une base mysql sur la ZMI
Nous allons installer le service de note libre GEPI.
Télécharger la dernière version stable : Gepi-1.5.X à
l'adresse :
http://gepi.mutualibre.org/fr/download
Dézziper l'archive
Copier le contenu du répertoire Gepi-1.5.X dans
C:\xampp\htdocs\gepi
Lancer http://127.0.0.1:8080/gepi ou
https://127.0.0.1/gepi
Cliquer sur Installer la base Mysql
Renseigner
l'adresse de la base : 127.0.0.1 en local
l'identifiant et le mot de passe d'un utilisateur
autorisé à ajouter une base mysql (root ici)
Cliquer sur suivant
Cliquer sur suivant
Choisir
Créer une nouvelle base de données : gepi
(proposé par défaut)
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 7 sur 15
Cliquer sur suivant
Cliquer sur suivant
Vous devez ensuite accéder à la page d'accueil de
Gepi ci-contre.
Les identifiant et mot de passe par défaut sont :
admin/azerty
Par sécurité, il est demandé ensuite de changer le
mot de passe de l'administrateur Gepi (notez le !).
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 8 sur 15
5.Création d'un nouvel utilisateur (différent de root ) qui sera seul autorisé à
accéder à la base gepi
Afin de sécuriser l'accès à PhpMyAdmin, nous allons créer un nouvel utilisateur qui aura seul le droit
d'administrer la base gepi.
Sur la ZMI (serveur où est installée la base mysql de gepi), il s'agit donc de créer un utilisateur autorisé à
accéder à une base MYSQL à partir de la DMZ.
http://127.0.0.1:8080/phpmyadm
in/
ou
https://127.0.0.1/phpmyadmin/
Dans phpMyAdmin
Choisir Privilèges
Puis Ajouter un utilisateur
Renseigner :
- Nom d'utilisateur : user-gepi
(par exemple)
- Serveur : IP de la DMZ
(sur un serveur de test, mettre
localhost)
- Mot de passe = user-gepi (par
exemple)
(où le générer automatiquement)
Cocher ensuite : « Créer une
base portant son nom et donner à
cet utilisateur tous les privilèges
sur cette base ».
puis Exécuter
Rq : si la base est sur la ZMI, le
port 3306 devra être ouvert entre
ZMI et DMZ (cf 7.2)
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 9 sur 15
Revenir sur Privilèges
Sélectionner l'utilisateur que
vous venez de créer
Ajouter des privilèges à la base
gepi
Et ajouter les
privilèges à l'utilisateur usergepi sur la base gepi
puis Exécuter....
Sur la DMZ ( serveur apache)
- Éditer le fichier
C:\xampp\htdocs\gepi\secure\c
onnect.inc.php
et modifier
$dbHost="192.168.220.60";
(ad IP ZMI)
ou
$dbHost="127.0.0.1";
dans le cas d'une base
locale
-Vous pouvez ensuite
[email protected]
<?php
# La ligne suivante est à modifier si vous voulez utiliser
le multisite
$multisite = 'n';
# Les cinq lignes suivantes sont à modifier selon votre
configuration
# Pensez à renommer ce fichier connect.cfg.php en
connect.inc.php
#
# ligne suivante : le nom du serveur qui héberge votre
base mysql.
# Si c'est le même que celui qui héberge les scripts,
mettre "localhost"
$dbHost="192.168.220.60";
# ligne suivante : le nom de votre base mysql
$dbDb="gepi";
# ligne suivante : le nom de l'utilisateur mysql qui a les
droits sur la base
$dbUser="user-gepi";
# ligne suivante : le mot de passe de l'utilisateur mysql
ci-dessus
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
arrêter sur la DMZ le
service mysql :
puis « Mysql Stop »
sécurité xampp Page 10 sur 15
$dbPass="user-gepi";
# Chemin relatif vers GEPI
$gepiPath="/gepi";
#
# Authentification par CAS ?
# Si vous souhaitez intégrer Gepi dans un environnement
SSO avec CAS,
# vous devrez renseigner le fichier /lib/CAS/cas.sso.php
avec les
# informations nécessaires à l'identification du serveur
CAS
$use_cas = false; // false|true
?>
Depuis la DMZ, vérifier l'accès à
Gepi sur la ZMI et à sa base
mysql associée
http://127.0.0.1:8080/gepi/
ou
httsp://127.0.0.1/gepi/
(Mot de passe défini à la fin de
l'étape 4).
6. Sauvegarde : (utiliser par exemple le logiciel Cobian backup)
Pour sauvegarder Gepi :
Sauvegarder le répertoire (service php) sur la DMZ
C:\xampp\htdocs\gepi (dont connect.inc.php)
Sauvegarder le répertoire (base mysql) sur la ZMI
C:\xampp\mysql\data\gepi
Il est possible de sauvegarder tout le répertoire
XAMPP
Config XAMMP + config MYSQL
Attention il est peut-être nécessaire de stopper les
serveurs Apache et Mysql
Batch disponible dans XAMPP
Résumé
0- Demander à JF Chaumont d'ouvrir les ports sur la MNF
3306 entre DMZ et ZMI
443 de l'extérieur vers DMZ et réseau Magret vers DMZ
a- Installer xampp sur la DMZ et la ZMI (recopier xampp dans c:), et mettre un mot de passe pour apache et
mysql.
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 11 sur 15
b- Installer le répertoire GEPI plus base mysql-gepi sur la DMZ
c- Installer la base mysql-gep sur la ZMI, (récupéré la base mysql-gep dans la DMZ)
d- Sur la ZMI, créer un utilisateur venant de la DMZ ayant les privilèges sur la base mysql gepiet modifier
le fichier, modifier le fichier connect.inc.php sur la DMZ
e- Mettre en place une procédure de sauvegarde
éventuellement voir annexe :
f- Créer des certificats personnels avec IP publique de la DMZ (et ZMI) pour accès en https avec certificats
valides sur Internet
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 12 sur 15
Annexe
7. Sécurité https du serveur d'administration XAMPP
7.1.Créer un certificat RSA
Installer openvpn-1.6.0-install.exe sur la machine
Aller dans le répertoire c:\xamp\easy-rsa
éditer
le fichier c:\xampp\easy-rsa\rsa-full-zmi.bat
et ensuite
le fichier c:\xampp\easy-rsa\rsa-full-dmz.bat
Dans les 2 fichiers, modifier ou vérifier le contenu:
@echo off
rem Edit this variable to point to
rem the openssl.cnf file included
rem with easy-rsa.
set HOME=c:\xampp\easy-rsa
set KEY_CONFIG=openssl.cnf
xxx : dmz ou zmi selon le fichier bat
rem Edit this variable to point to
rem your soon-to-be-created key
rem directory.
rem
rem WARNING: clean-all will do
rem a rm -rf on this directory
rem so make sure you define
rem it correctly!
set KEY_DIR=c:\xampp\easy-rsa\keys-rsa-xxx
rem Increase this to 2048 if you
rem are paranoid. This will slow
rem down TLS negotiation performance
rem as well as the one-time DH parms
rem generation process.
set KEY_SIZE=1024
rem These are the default values for fields
rem which will be placed in the certificate.
rem Change these to reflect your site.
rem Don't leave any of these parms blank.
définir le pays
la région
la ville
le nom de l'établissement
le mail de l'établissement
set KEY_COUNTRY=FR
set KEY_PROVINCE=MIDI-PYRENEES
set KEY_CITY=Ville
set KEY_ORG=Etablissement XXXXXX
set [email protected]
rem move to the HOME directory specified in VARS
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 13 sur 15
script
cd %HOME%
rem set a temporary KEY_DIR variable
set d=%KEY_DIR%
rem delete the KEY_DIR and any subdirs quietly
rmdir /s /q %d%
rem make a new KEY_DIR
mkdir %d%
rem copy in a fesh index file so we begin with an
empty database
copy index.txt.start %d%\index.txt
rem copy in a fresh serial file so we begin generating
keys at index 01
copy serial.start %d%\serial.
cd %HOME%
rem build a cert authority valid for ten years, starting
now
openssl req -days 3650 -nodes -new -x509 -keyout
c:\xampp\easy-rsa\\keys-rsa-xxx\XXX.key -out
c:\xampp\easy-rsa\keys-rsa-XXX\XXX.crt -config
%KEY_CONFIG%
Lancer rsa-full-zmi.bat et
rsa-full-dmz.bat
Renseigner les différents champs
et valider
Cliquer dans la fenêtre
cmd (invite de commande)
1 fichier(s) copié(s).
1 fichier(s) copié(s).
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...............++++++
.........++++++
writing new private key to 'C:\xampp\easy-rsa\keys-rsa-dmz\dmz.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) [FR]:
State or Province Name (full name) [MIDI-PYRENEES]:
Locality Name (eg, city) [BASSIN AVEYRON]:DECAZEVILLE
Organization Name (eg, company) [POLE D_APPUI]:Lycee la decouverte
Organizational Unit Name (eg, section) []:Serveur DMZ ou ZMI
Common Name (eg, your name or your server's hostname) []:IP public DMZ
ou IP ZMI (192.168.220.60)
Email Address [[email protected]]:RNE@ac-toulouse,fr
Appuyez sur une touche pour continuer...
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 14 sur 15
Récupérer les 4 fichiers DMZ.crt et DMZ.KEY, ZMI.crt et ZMI.KEY
7.2. Installer les certificats sur la DMZ (utiliser obligatoirement une clé USB et surtout
pas internet)
Aller dans le répertoire C:\xampp\apache\conf\ssl.crt et coller le fichier DMZ.crt
Aller dans le répertoire C:\xampp\apache\conf\ssl.key et coller le fichier DMZ.key
Editer le fichier C:\xampp\apache\conf\extra\httpd-ssl.conf
#
#
Rechercher
SSLCertificateFile
conf/ssl.crt/
et changer le nom des
deux certificats
DMZ.crt
Server Certificate:
Point SSLCertificateFile at a PEM encoded certificate.
If
#
the certificate is encrypted, then you will be prompted
for a
#
pass phrase. Note that a kill -HUP will prompt again.
Keep
#
in mind that if you have both an RSA and a DSA
certificate you
#
can configure both in parallel (to also allow the use
of DSA
#
ciphers, etc.)
#SSLCertificateFile conf/ssl.crt/snakeoil-rsa.crt
#SSLCertificateFile conf/ssl.crt/snakeoil-dsa.crt
SSLCertificateFile conf/ssl.crt/DMZ.crt
#
#
this
#
Server Private Key:
If the key is not combined with the certificate, use
directive to point at the key file.
Keep in mind that
if
DMZ.key
#
you've both a RSA and a DSA private key you can
configure
#
both in parallel (to also allow the use of DSA ciphers,
etc.)
#SSLCertificateKeyFile conf/ssl.key/snakeoil-rsa.key
#SSLCertificateKeyFile conf/ssl.key/snakeoil-dsa.key
SSLCertificateKeyFile conf/ssl.key/DMZ.key
C:\xampp\apache\conf\httpd.conf (rechercher listen:80 et remplacer par listen:8080)
Relancer le serveur apache
Ouvrir le port 443 (extérieur vers DMZ et réseau magret vers DMZ), (voir JF Chaumont, mission TICE,
pour l'ouverture de ce port sur la MNF ou PFS)
et connectez-vous en https vers le serveur à travers le web (extérieur vers DMZ et réseau magret vers DMZ)
Ouvrir le port 3306 ( voir JF Chaumont pour l'ouverture de ce port sur la MNF ou le PFS)
7.3. Installer les certificats sur la ZMI (utiliser obligatoirement une clé USB et surtout
pas internet)
[email protected]
Lycée La Découverte
install-securité-xamp.odt
Sécuriser un serveur XAMPP
sécurité xampp Page 15 sur 15
Aller dans le répertoire C:\xampp\apache\conf\ssl.crt et coller le fichier ZMI.crt
Aller dans le répertoire C:\xampp\apache\conf\ssl.key et coller le fichier ZMI.key
Editer le fichier C:\xampp\apache\conf\extra\httpd-ssl.conf
#
#
Rechercher
SSLCertificateFile
conf/ssl.crt/
et changer le nom des
deux certificats
ZMI.crt
Server Certificate:
Point SSLCertificateFile at a PEM encoded certificate.
If
#
the certificate is encrypted, then you will be prompted
for a
#
pass phrase. Note that a kill -HUP will prompt again.
Keep
#
in mind that if you have both an RSA and a DSA
certificate you
#
can configure both in parallel (to also allow the use
of DSA
#
ciphers, etc.)
#SSLCertificateFile conf/ssl.crt/snakeoil-rsa.crt
#SSLCertificateFile conf/ssl.crt/snakeoil-dsa.crt
SSLCertificateFile conf/ssl.crt/ZMI.crt
#
#
this
#
Server Private Key:
If the key is not combined with the certificate, use
directive to point at the key file.
Keep in mind that
if
ZMI.key
[email protected]
#
you've both a RSA and a DSA private key you can
configure
#
both in parallel (to also allow the use of DSA ciphers,
etc.)
#SSLCertificateKeyFile conf/ssl.key/snakeoil-rsa.key
#SSLCertificateKeyFile conf/ssl.key/snakeoil-dsa.key
SSLCertificateKeyFile conf/ssl.key/ZMI.key
Lycée La Découverte
install-securité-xamp.odt