Vous êtes sur la page 1sur 23

Apache2 sous

Linux
LASFAR Salim
Apache est le plus populaire des serveurs HTTP. Il est
produit par la Apache Software Foundation . C'est un
logiciel libre fourni sous la licence spcifique Apache.

LP-R2SI:
Administration des
rseaux et scurit
sous Linux.

Encadr Par : Mr M.EL KIRAM

Serveur HTTP Apache 2 :


Apache est le plus populaire des serveurs HTTP. Il est produit par la Apache
Software Foundation . C'est un logiciel libre fourni sous la licence spcifique
Apache.

Installation :
Apache est compos de plusieurs paquets :
La bibliothque, le serveur et ses
outils Nom
libapr1
apache2
apache2.2-common
apache2-utils

Rle
Apache's Portable Runtime Library,
bibliothque de fonctions standards
portables.
Ce paquet contient le serveur.
Ce paquet contient les modules
standards apache2, qui incluent le
support SSL.
Outils pour serveurs web.

Utilisation :
#sudo service apache2 start/stop/restart
Il existe des interfaces graphiques pour utiliser Apache. De la plus simple la
plus complte : localhost-indicator, rapache et webmin.

Erreur au dmarrage :
Au dmarrage d'Apache, il est possible que celui-ci ne soit pas capable de
dterminer un nom de domaine. Ce message sera affich dans le terminal :
Could not reliably determine the server's fully qualified domain name, using
127.0.1.1 for ServerName
Pour corriger l'erreur, on doit diter le fichier /etc/apache2/httpd.conf
Par dfaut ce fichier est vide, il faut donc ajouter la ligne suivante:
>ServerName localhost

Configuration :

Tous les fichiers de configuration de Apache2 sont dans le dossier /etc/apache2.


/etc/apache2
Rendez-vous dans le rpertoire /etc/apache2/, et regardez les fichiers le
composant :
apache2.conf conf.d envvars httpd.conf mods-available mods-enabled ports.conf
sites-available sites-enabled
La plupart de ces fichiers sont plus ou moins spcifiques Debian/Ubuntu et
nous permettent de sparer la configuration en plusieurs parties.
httpd.conf est le fichier utilis par apache1, il est conserv vide dans
Apache2 pour assurer la rtrocompatibilit. Il ne nous servira pas ;
envvars est utilis pour dfinir des variables d'environnement propres
Apache ;
ports.conf contient la directive listen qui spcifie les adresses et les ports
d'coutes ;
apache2.conf est le fichier principal de configuration c'est partir de lui
que tous les autres fichiers sont chargs ;
conf.d est un rpertoire qui contient plusieurs petits fichiers qui seront
analyss par apache. Le seul fichier pour le moment est charset, qui
spcifie l'encodage utiliser par dfaut ;
mods-available contient la liste des modules d'apache installs ;
mods-enabled celle des modules utiliss ;
sites-available contient la liste des vhosts installs ;
sites-enabled celle des vhosts utiliss.

Configuration des interfaces


La spcification des interfaces sur lesquelles Apache2 coutera les requtes se
fait dans ports.conf avec la directive Listen. Vous devez spcifier au moins le
port. Apache coutera alors sur toutes les interfaces.
Pour restreindre l'utilisation une ou plusieurs interfaces il suffit de les
spcifier, suivies du port. Il faut une directive Listen par interface. - Si le serveur
est connect avec une ip internet et que l'on souhaite couter sur cette interface
on ajoute la directive Listen Ip.Internet . - Si le serveur est connect avec une ip
local et que l'on souhaite couter sur cette interface on ajoute la directive Listen
Ip.Local . - Si l'on souhaite couter sur un certain port on rajoute :Le_Port . Il est
aussi possible de ne spcifier que le port Listen Le_Port.
ditez le fichier /etc/apache2/ports.conf.(remplacer les X.X.X.X par l'ip
de l 'interface d'coute )

#interface (local ou internet) connecte sur port standard

Listen X.X.X.X:80
# toutes les interfaces connectes sur port ssl
Listen 443

sites-available :
Ce fichier contient les diffrents vhosts que vous utiliserez. Ils vous permettent
de dfinir plusieurs sites sur une mme machine, le plus souvent des sousdomaines (www.domain.tld, machin.domain.tld), mais aussi d'autres
domaines (domain.tld, autredomain.tld).
ditez le fichier /etc/apache2/sites-available/default (le seul vhost existant
pour le moment).

Configuration de serveur apache2


Configuration dinterfaces :

Configuration de Virtual machine par Nom :


On copie le fichier de virtuel machine par dfaut pour simplifie la tche :

On modifie le fichier comme suite :

Avant tout, je voulais mentionner que jai cr dans le dossier /var/www/fssm


le fichier /var/www/fssm/index.html qui prsente le contenu ci-dessous.

Le contenue de fichier /var/www/fssm/index.html :

Il faut maintenant activer le vhost. Pour cela il faut crer un lien symbolique du
fichier de sites-available/ vers sites-enabled/. En utilisant:

Cette mthode du lien symbolique permet de raliser rapidement des


changements dans la configuration d'apache.

On remarque que dans le dossier /etc/apache2/sites-enabled, le fichier fssm.ma


est automatiquement cr.
On assure la rsolution DNS- :

Testons maintenant dans le navigateur :

Configuration de Virtual machine par IP :


On cre dabord une interface logique qui va pointer sur notre site web :

Rsultat ifconfig :

Aprs on cre une vhost www.fst.ma avec les mme tapes avec les quelles on
cre www.fssm.ma :

Fichier fst : # vi /etc/apache2/site-available/fst

On assure la rsolution DNS- :

Testons maintenant dans le navigateur :

Cration dun site web priv (.htaccess) :


La manipulation pour protger un dossier web par login et mot de passe sous
apache2 est trs simple.
Il vous suffit de crer 2 fichiers : le .htaccess et .htpasswd.
Par convention ces 2 fichiers reprsentent la mthode d'accs au dossier
(.htaccess) et le fichier contenant les login et mot de passe (.htpasswd).
Il est hautement recommand que ces 2 fichiers commences par les 3 caractres
suivant ".ht".
En effet dans la configuration par dfaut d'appache, les fichiers commenant par
ses 3 caractres ne sont pas tlchargeable par un client web grce au
paramtrage suivant dans : /etc/apache2/apache2.conf

Pour notre exemple nous allons imaginer que notre dossier d'hbergement par
dfaut est :
/var/www/fst

et le dossier protger est le mme dossier :


/var/www/fst

Commenons par nous placer dans le dossier que nous voulons protger :
cd /var/www/fst

Editons le fichier .htaccess :

Insrez le code suivant :

AuthUserFile indique le fichier contenant les login et mot de passe


AuthGroupFile permet le paramtrage de groupe (pas utilis dans ce cas)
AuthName donne un titre la fentre de mot de passe
AuthType indique le type d'identification (nous utilisation la mthode la plus
simpe : Basic

La partie <Limit> indique qu'il nous faut un utilisateur valid pour accder au
contenu du dossier
Crons maintenant le fichier .htpasswd :
#htpasswd -b -c .htpasswd mon_login mon_mot_de_passe
Exemple :

L'option -b est utilise pour indiquer le mot de passe directement dans la


commande de cration du fichier, si on ne la met pas, le mot de passe nous sera
demand juste aprs
L'option -c permet de crer le fichier .htpasswd
mon_login est le login de votre accs et mon_mot_de_passe est le mot de passe.

Fichier .htpasswd :

Il ne vous reste plus qu' activer l'option AllowOverride pour votre dossier
/var/www/xenetis.org/admin/.
Pour cela ditez votre fichier de virtualHost et ajoutez-y les lignes suivantes
(avant la balise de fermeture) .

Votre virtualHost doit donc avoir peu prs cette tte :

Il ne vous reste plus qu' redmarrer apache pour mettre jour votre
configuration :

Testons maintenant dans le navigateur :

Scuriser Apache2 avec SSL :


Le protocole SSL :
SSL est un protocole qui a t dvelopp par la socit Netscape.
Ce protocole permet deux machines de communiquer de manire scurise.
Les informations changes entre les deux machines sont de ce fait inviolables.
Le protocole SSL se traduit par la combinaison de deux protocoles bien
distincts (Handshake et Record) qui permettent la ngociation entre les deux
machines et le chiffrement des donnes changes.

Les Certificats :
Un certificat permet de fournir diverses informations concernant l'identit de
son dtenteur (la personne qui publie les donnes). Ce certificat s'accompagne
d'une cl publique qui est indispensable pour que la communication entre les
machines soit chiffre.
De mme, afin de garantir l'authenticit du certificat, ce dernier est sign
numriquement par le biais d'une cl prive provenant soit d'un organisme
officiel (Socit spcialise dans la certification) soit par le dtenteur du
Certificat lui mme. Dans ce dernier cas, on parlera de certificat auto-sign.
Dans la plupart des cas, l'obtention d'un Certificat certifi par une autorit
officielle ayant un prix assez lev, les webmasters auront tendance a vouloir
signer eux-mme leur certificat. Ce faisant, il est noter que dans ce cas, le
certificat ne sera pas reconnu par les navigateurs internet comme tant certifi.
CA Cert permet d'obtenir des certificats gratuits. Il vous faudra nanmoins
installer le certificat racine dans votre navigateur.
Dans ce tutoriel, la procdure prsente explique la marche suivre pour mettre
en place un Site Web scuris via protocole SSL en utilisant un Certificat
auto-sign.
Pour ce tutoriel, nous supposons que nous avons dj mis en place un hte
virtuel bas sur le nom nomm www.fssm.ma, ce dernier tant accessible sur le
port 80 l'adresse http://www.fssm.ma

Mise en application avec le Serveur Http Apache2


Activation du module SSL :
Pour que le protocole SSL puisse fonctionner avec le Serveur HTTP Apache2, il
faut activer le module ssl avec la commande :

Puis recharger la configuration d'Apache2 fates :

Cration du certificat :
#sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out
/etc/apache2/server.crt -keyout /etc/apache2/server.key
Explications :
-x509 -nodes donne le type de certificat voulu
-days 365 indique la dure de validit (en jours) de votre certificat
-newkey rsa:1024 demande une cl RSA de 1024 bits - d'aprs la doc apache, il
est dconseill de crer une cl plus grosse pour des histoires de compatibilit
-out /etc/apache2/server.crt est le chemin de votre certificat
-keyout /etc/apache2/server.key est le chemin de la cl prive

Rpondez alors aux questions poses :


Country Name (2 letter code) [GB]:
Entrez FR si vous tes situ en France et validez par la touche Entre
State or Province Name (full name) [Some-State]:
Entrez FRANCE et validez par la touche Entre
Locality Name (eg, city) []:

Indiquez ici le nom de votre ville. (exemple : CAEN) et validez par la touche
Entre
Organization Name (eg, company; recommended) []:
Indiquez le nom de votre organisation, de votre socit. (exemple : francehosting) et validez par la touche Entre . Si vous n'avez pas de socit, vous
pouvez mettre un nom fictif, le nom de notre site Web par exemple.
Organizational Unit Name (eg, section) []:
Indiquez ici le nom de la section de votre organisation, de votre socit. Si vous
n'en avez pas, mettez la mme chose que pour la question prcdente.
Common Name (eg, YOUR name) []:
Ici, il convient de faire particulirement attention ce que vous allez entrer.
Vous devez indiquer le nom de domaine que vous dsirez scuriser. En ce qui
nous concerne, il s'agit du domaine : nuxwin.com. Nous indiquons donc
nuxwin.com et nous validons par la touche Entre .
Email Address []:
Ici, il s'agit d'indiquer l'adresse E-mail de l'administrateur. En ce qui nous
concerne, il s'agit de : admin@nuxwin.com. Nous terminons bien entendu en
validant par la touche Entre .

Exemple :

Enfin, on empche la lecture de notre cl prive :

Configuration Apache2 :
Ajout de la directive Listen 443
Par dfaut, Apache2 est configur pour couter sur le port 80. Il s'agit l de la
configuration usuelle d'un Serveur Web. Cependant, le protocole SSL a besoin
d'un port spcifique pour pouvoir fonctionner. Il s'agit du port 443.
Nous allons donc rajouter une directive de configuration nomme Listen qui
permettra d'indiquer Apache2 qu'il doit aussi couter sur le port 443.
Pour ce faire, ditez le fichier /etc/apache2/ports.conf et rajoutez la ligne
suivante :

Cration du fichier de configuration


Ayant dj configur notre hte virtuel www.fssm.ma, un fichier de
configuration nomm fssm doit exister dans le rpertoire /etc/apache2/sitesavailable.
Voici donc le contenu de notre fichier une fois modifi :

Pour scuriser cet Hte Virtuel, nous allons donc devoir modifier ce fichier en y
ajoutant un hte virtuel accessible sur le port 443, ce dernier contenant des
directives particulires qui sont les suivantes :
1. Directive SSLEngine : Cette directive permet d'activer le moteur SSL au sein
d'un hte virtuel, Elle peut prendre deux arguments > on/off
2. Directive SSLCertificateFile : Cette directive dfinit le certificat
authentifiant le Serveur auprs des clients. L'argument est le chemin d'accs au
certificat. En ce qui nous concerne, le certificat se trouve dans le rpertoire
/etc/apache2/
3. Directive SSLCertificateKeyFile : Cette directive dfinit la cl prive du
Serveur utilise pour signer l'change de cl entre le client et le serveur. Elle
prend en argument le chemin d'accs la cl (fichier). Dans notre cas, la cl se
trouve dans le rpertoire /etc/apache2/.
Par ailleurs, comme nous l'avons dj fait pour notre hte virtuel accessible sur
le port 80, nous allons devoir rajouter une directive NameVirtualHost qui
permettra que l'adresse nomme par le nom de notre hte virtuel accessible sur
le port 443 soit rsolue correctement. Nous rajouterons donc cette directive
(NameVirtualHost 192.168.1.2:443) au dbut de notre fichier de configuration.

Enfin, afin que les clients puissent continuer d'accder au site Web en tapant
une url de type http et non https, nous allons modifier l'hte virtuel accessible
sur le port 80 en remplaant la directive DocumentRoot par une directive de
redirection.

Reload du Serveur Http Apache2 :


Afin que les modifications que nous venons d'effectuer soient prises en compte,
nous devons demander au Serveur Http Apache2 de relire ses fichiers de
configuration.
Pour ce faire, il suffit de taper la commande suivante dans un terminal :
/etc/init.d/apache2 reload
Normalement, si tout s'est bien pass, vous devriez dsormais avoir accs votre
site Web de manire scurise.
Une autre faon de faire les choses :
On copie le fichier defaut-ssl :

Et on le modifier :

Vous aimerez peut-être aussi