Archives du blog

Apache 2.4 sous Windows : Sécurisation du service Apache

En cette période de canicule sur la France, j’en profite pour rédiger cet article qui va vous permettre d’augmenter la sécurité de votre serveur Apache.
Lorsque vous installez le service Apache sous Windows si vous regardez dans l’interface de gestion des services (services.msc) vous remarquerez qu’il fonctionne avec le compte « Système local ». Ce compte possède des droits élevés sur la machine mais aucun privilège sur le réseau. Afin d’éviter qu’un attaquant ne prenne possession de la machine hébergeant le service Apache, il peut etre utile de faire fonctionner ce service avec un compte qui n’a aucun privilège sur cette machine.

Cette configuration n’est pas très compliquée à réaliser et augmente le niveau de sécurité de votre serveur web.

Création du compte utilisateur

Il faut créer un utilisateur qui sera uniquement membre du groupe Utilisateurs.

Cliquez sur Démarrer, tapez lusrmgr.msc dans la barre de recherche
Faire un clic droit sur Utilisateurs puis Nouvel utilisateur…
Remplir le formulaire comme indiqué sur l’image ci-dessous
create_user
Pour le mot de passe, créer un mot de passe assez fort, d’au moins 8 caractères composé de lettre majuscule, minuscule, chiffres et caractères speciaux.
Cliquez sur Créer.

Attribution de droits pour ce compte

Il faut accorder le droit Ouvrir une session en tant que service au compte apache.

Cliquez sur Démarrer, tapez secpol.msc dans la barre de recherche
Aller dans Strategies locales > Attribution des droits utilisateur
Double cliquez sur Ouvrir une session en tant que service
Cliquez sur le bouton Ajouter un utilisateur ou un groupe…
Saisir le nom du compte créé précédemment apache.

Mise en place de droits sur des dossiers et fichiers

Il faut positionner des droits spécifiques sur certains fichiers et dossiers pour le compte apache comme indiqué dans le tableau ci-dessous.

Dossier/fichier Droits
e:\serveur_web\www Lecture
e:\serveur_web\apache24\htdocs Lecture
e:\serveur_web\Apache24\logs Modification
e:\serveur_web\Apache24\bin\httpd.exe Execution

Définition du compte de connexion du service

Il faut définir le compte apache comme compte de connexion du service.

Cliquez sur Démarrer, tapez services.msc dans la barre de recherche
Double cliquez sur le service Apache par défaut il se nomme Apache2.4
Cliquez sur le bouton Arrêter.
Quand le service est arrêté, cliquez sur l’onglet Connexion et renseignez les champs comme sur l’image ci-dessous.
service_connexion
Cliquez sur OK pour valider.
Redémarrer le service.

Si vous avez bien suivi cet article, le service apache doit démarrer sans problème. Si jamais ce n’est pas le cas, relisez l’article ou au pire demandez moi 🙂

Apache 2.4 sous Windows – Configuration de PHP

Dans cet article je vais vous parler des configurations de PHP en module et en FastCGI sous Apache 2.4 sous Windows 7. Cette configuration fonctionne également sous Windows 2008 R2.

La configuration en module utilise moins de ressources mémoire, de ressources CPU et est plus rapide que la configuration FastCGI.
Le gros inconvénient du module est que vous ne pouvez pas avoir plusieurs versions de PHP en même temps sur votre serveur Apache alors que FastCGI offre cette possibilité.

Je ne reviens pas sur l’installation d’Apache, je pars du principe qu’Apache est installé et fonctionnel ( http://localhost affiche It works !).
J’utilise PHP 5.4.8. Je ne parlerai pas de la configuration de PHP (fichier php.ini).
Si le runtime Microsoft 2008 c++ n’est pas installé n’oubliez pas de le faire sinon PHP 5.4 ne fonctionnera pas.

Ma configuration des dossiers est la suivante :

Le dossier d’Apache e:\serveur_web\apache24
Le dossier du site web e:\serveur_web\apache24\htdocs
Le dossier de PHP e:\serveur_web\php

PHP fournit des versions thread safe et non thread safe pour chacune de ses branches (5.2, 5.3 et 5.4).
Pour une configuration en module il faut prendre une version thread safe de PHP.
Pour une configuration FastCGI il faut prendre une version non thread safe de PHP.

PHP en module d’Apache

Pour installer PHP en tant que module d’Apache il faut télécharger à partir du site http://windows.php.net/download le fichier zip VC9 x86 Thread Safe.
Extraire le contenu de ce fichier dans le dossier e:\serveur_web\php.
Dans ce dossier vous remarquerez qu’il existe les fichiers php5apache2_2.dll et php5apache2_3.dll qui permettent dans les versions Apache 2.2 et Apache 2.3 d’utiliser PHP en tant que module.
Il n’existe pas de fichier php5apache2_4.dll pour Apache 2.4.
Pour obtenir php5apache2_4.dll allez sur le site http://www.apachelounge.com/download/ puis télécharger php5apache2_4.dll-php-5.4-win32.zip.
Ouvrir ce fichier, aller dans le répertoire PHP 5.4.8 puis extraire le fichier php5apache2_4.dll dans le dossier e:\serveur_web\php.
Ouvrir le fichier e:\serveur_web\apache24\conf\httpd.conf puis ajouter les lignes suivantes

PHPIniDir "e:/serveur_web/php"
LoadModule php5_module "e:/serveur_web/php/php5apache2_4.dll"
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

Enregistrer le fichier.
Ouvrir une fenêtre de commandes puis exécuter e:\serveur_web\apache24\bin\httpd –t pour vérifier la syntaxe du fichier httpd.conf. Si tout est OK redémarrer le service Apache2.4.
Créer un fichier info.php dans e:\serveur_web\apache24\htdocs contenant < ?php phpinfo() ; ?>
Lancez votre navigateur puis tapez http://localhost/info.php dans la barre d’adresse.
Une page avec toute la configuration PHP doit s’afficher.
En regardant la ligne Server API vous verrez la valeur Apache 2.4 Handler Apache Lounge qui signifie que vous êtes configuré en module.
Regardez également la ligne Loaded Configuration File pour vérifier que le fichier php.ini est bien chargé.

Votre configuration de PHP en module est réussie.

PHP en FastCGI

Pour la configuration en FastCGI il faut récupérer le fichier mod_fcgid-2.3.7-win32.zip sur le site http://www.apachelounge.com/download/
Ouvrez ce zip, aller dans le dossier mod_fcgid puis extraire le fichier mod_fcgid.so dans e:\serveur_web\Apache24\modules.
Ouvrez le fichier e:\serveur_web\apache24\conf\httpd.conf.
Dans la partie du fichier où se trouvent tous les LoadModule ajoutez à la fin la ligne

LoadModule fcgid_module modules/mod_fcgid.so

Aller à la fin du fichier et ajouter les lignes suivantes

FcgidInitialEnv PHPRC "E:\serveur_web\php\"
<FilesMatch \.php$>
AddHandler fcgid-script .php
FcgidWrapper "E:\serveur_web\php\php-cgi.exe" .php
</FilesMatch>

Ces lignes sont le minimum pour faire fonctionner FastCGI pour connaitre toutes les directives de ce module allez sur http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
Pour terminer allez dans la section <directory "e:\serveur_web\apache24\htdocs"></directory> vous devez avoir une directive Options, ajouter ExecCGI

Options Indexes FollowSymLinks ExecCGI

Enregistrer le fichier.
Ouvrir une fenêtre de commandes puis exécuter e:\serveur_web\apache24\bin\httpd –t pour vérifier la syntaxe du fichier httpd.conf. Si tout est OK redémarrer le service Apache2.4
Créer un fichier info.php dans e:\serveur_web\apache24\htdocs contenant < ?php phpinfo() ; ?>
Lancez votre navigateur puis tapez http://localhost/info.php dans la barre d’adresse.
Une page avec toute la configuration PHP doit s’afficher.
Cette fois ci en regardant la ligne Server API vous verrez la valeur CGI/FastCGI.

Vous avez réussi votre configuration de PHP en FastCGI.

Pour toutes remarques ou questions n’hésitez pas à laisser un commentaire 🙂