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