Authentifier avec Apache

Le but de cette petite note est l'authentification simple avec Apache permettant un contrôle d'accès sur un site.

L'environnement est un serveur Ubuntu en version 12.04 LTS muni d'un noyau Linux en version 3.2.13 et d'un serveur Apache en version 2.2.22.

1 – Créer un fichier utilisateur

La première chose à faire est de créer un fichier contenant les utilisateurs et mots de passe qui pourront se connecter au site.

Pour cela, il faut utiliser l'utilitaire htpasswd fourni par Apache.

La commande prendra trois arguments :

  • -c : pour créer le fichier, à ne plus utiliser lors de l'ajout d'autres utilisateurs
  • le nom du fichier contenant les utilisateurs/mots de passe
  • l'utilisateur à ajouter

Nous allons donc créer le fichier par l'ajout d'un premier utilisateur, la commande nous demandera ensuite de taper deux fois le mot de passe associé :

# htpasswd -c /etc/apache2/passwords toto
New password:
Re-type new password:
Adding password for user toto

Le nom et l'emplacement du fichier sont libres, attention à ne pas le mettre dans un répertoire accessible depuis l'Internet !

2 – Configurer Apache

La configuration de l'authentification peut se faire dans un fichier .htaccess situé dans le répertoire à protéger, ou dans une directive <Directory> de la configuration du site.

C'est cette deuxième méthode qui sera utilisée ici. Dans la section <Directory> correspondant au répertoire à protéger, nous allons ajouter ces directives :

AuthType Basic

Indique le type d'authentification, ici Basic. Attention, cela signifie que les mots de passe passeront en clair sur le réseau, ce type d'authentification est à coupler avec l'utilisation d'une couche SSL.

AuthName "Restricted Area"

Le nom de la zone à protéger. Elle sert à la fois d'information au visiteur mais permet aussi de regrouper plusieurs emplacements, évitant ainsi à l'utilisateur de devoir se ré-authentifier à chaque changement d'emplacement.

AuthBasicProvider file

Le fournisseur de l'authentification, ici un fichier. Ce pourrait être une base de données ou un LDAP par exemple.

AuthUserFile /etc/apache2/passwords

Comme on a précisé avant que l'on utilisé un fichier, cette directive indique son emplacement.

Require valid-user

Ce qui est requis pour accéder au répertoire. Ce pourrait être un nom d'utilisateur, ici on indique plutôt que tout utilisateur présent dans le fichier peut accéder au répertoire si son authentification a réussie.

3 – Redémarrer et tester

Il n'y a plus qu'à redémarrer Apache pour la prise en compte des modifications de configuration :

# service apache2 reload
 * Reloading web server config apache2                                                                    [ OK ]

Et à tester en se rendant sur la page : devrait alors apparaitre une boite de dialogue permettant de s'authentifier avec l'utilisateur et mot de passe configurés précédemment !

Apache : ajouter un nouveau serveur virtuel par nom

La création de serveurs virtuels par nom dans Apache permet de faire cohabiter plusieurs sites sur une même adresse IP, chaque site étant accédé par son propre nom.

On aura ainsi, par exemple, deux sites Web http://monsite1.com et http://monsite2.fr qui pourront être hébergés dans le même serveur Apache tout en ne possédant qu'une seule adresse IP.

C'est la méthode la plus couramment utilisée pour créer des serveurs virtuels. L'autre méthode, la création de serveurs virtuels par IP, n'est à utiliser que dans des cas particuliers.

Logiciel utilisé : Apache 2.2.17

Distribution Linux : Ubuntu Server 11.04, Linux 2.6.38

Note : l'emplacement des fichiers de configuration est donné par rapport à l'installation du serveur Apache via Ubuntu Server. Pour une installation à partir des sources, toutes les directives seront à mettre dans le fichier httpd.conf. et la création du lien symbolique pour l'activation du site n'est pas nécessaire.

Continuer la lecture de « Apache : ajouter un nouveau serveur virtuel par nom »

Ubuntu Server : installer un serveur LAMP (Linux Apache MySQL PHP)

Un serveur LAMP est un serveur utilisant 4 composants particuliers, destiné dans la plupart des cas à la publication de sites Web :

  • Linux : le système d'exploitation
  • Apache : le serveur Web
  • MySQL : le serveur de base de données
  • PHP : le langage de script

Le but ici est d'installer ces différents composants à partir des paquetages de la distribution Ubuntu Server 13.10 qui utilise actuellement les versions suivantes des composants :

  • Linux v3.10.23
  • Apache v2.4.6
  • MySQL v5.5.37
  • PHP v5.5.3

L'installation de l'ensemble est aisé grâce aux paquetages fournis par la distribution Ubuntu Server, le tout étant de les installer dans le bon ordre 🙂

Les étapes seront les suivantes :

  1. Installer le serveur Apache
  2. Installer le module PHP pour Apache
  3. Installer le serveur MySQL
  4. Installer le module MySQL pour PHP

Article mis à jour pour Ubuntu Server 13.10

Continuer la lecture de « Ubuntu Server : installer un serveur LAMP (Linux Apache MySQL PHP) »

Configurer Apache avec SSL

SSL (Secure Socket Layer) est un protocole permettant de sécuriser une communication entre deux points, typiquement un client et un serveur.

Il peut être couplé au protocole HTTP pour former le HTTP sécurisé (HTTPS) qui apporte à la communication entre le client et le serveur Web :

  • la confidentialité : les données sont cryptées et donc pas lisibles par un tiers
  • l'intégrité : vérification que les données n'ont pas été modifiées pendant le transport
  • l'authentification : vérification que le serveur (ou le client) est bien celui qu'il prétend être

Le but de cette note est donc de configurer un serveur Web Apache pour qu'il prenne en compte le SSL, permettant ainsi d'accéder à des sites Webs en HTTPS.

Continuer la lecture de « Configurer Apache avec SSL »

Ajouter un module à Apache

Vous avez compiler et installer votre tout nouveau serveur Apache, puis, quelques temps plus tard, vous avez besoin d'un nouveau module (par exemple, le mod_rewrite).

Plutôt que de tout recompiler, il est possible d'ajouter un module au serveur Apache de manière dynamique (ou shared) grâce à l'outil apxs (APache eXtenSion tool), fourni avec le package Apache.

Note : cette opération n'est réalisable que si vous avez compiler votre serveur Apache avec le module mod_so ! (option de compilation : --enable-module=shared)

Pour le vérifier, la commande httpd -l vous renseignera sur les modules compilés :

$ httpd -l
Compiled in modules:
  core.c
  prefork.c
  mod_so.c

Les sources d'Apache fournissent un certain nombre de sources de modules, dont le mod_rewrite qui nous intéresse. A partir de là, la compilation et l'installation se fait en une seule commande.

On se place dans le répertoire contenant les sources du module :

$ cd /usr/local/src/httpd-2.2.14/modules/mappers

Et on lance apxs avec trois options, plus le nom du fichier source *.c (fonctionne aussi avec les fichiers objets *.o et les archives *.a) :

  • -c pour compiler
  • -i pour installer le module compilé dans le répertoire des modules d'Apache
  • -a pour ajouter le chargement du module dans la configuration d'Apache (via la directive LoadModule)

$ apxs -i -a -c mod_rewrite.c

Un petit redémarrage d'Apache pour charger le module et c'est fini :

$ /etc/init.d/httpd stop
$ /etc/init.d/httpd start

PS : pour l'installation d'un serveur Apache, voir cet article : http://blog.moncoindunet.fr/linux/installer-un-serveur-apache-avec-php-sur-linux/

Installer un serveur Apache avec PHP sous Linux

Apache est un serveur HTTP open source utilisé pour hébergé des pages web (html, php, etc.). Il est le serveur web le plus populaire depuis 1996 et plus de 50% des sites Internet du monde tournent avec Apache (barre des 100 000 000 de sites dépassée en 2009).

PHP est un langage de programmation largement utilisé dans le développement Web.

L'objectif de cette note est donc d'installer un serveur Apache ainsi que PHP pas à pas à partir des sources officielles, puis de configurer notre serveur Apache pour interpréter les pages PHP.

Logiciels utilisés : Apache 2.2.17 et PHP 5.3.4

Système d'exploitation : Debian  5.0, Linux 2.6.34

Mis à jour le 03/09/2010 : upgrade des versions Apache et PHP et améliorations diverses

Continuer la lecture de « Installer un serveur Apache avec PHP sous Linux »