SlideShare una empresa de Scribd logo
1 de 91
Descargar para leer sin conexión
Par Achraf SFAXI Page 1
Apache Server :
Configuration & Sécurisation
sous Linux
Par Achraf SFAXI Page 2
Unit 1
Introduction et configuration de
base de Apache
Par Achraf SFAXI Page 3
base de Apache
Unit 1
Introduction et configuration de
Par Achraf SFAXI Page 4
Unit 1 : Plan
° Internet : Architecture
° HTTP : architecture et fonctionnement
° Apache : utilisation, installation et activation sous
RedHat linux
° Les fichiers de configuration de base et contrôle du
démon
Par Achraf SFAXI Page 5
Internet : la topologie client/serveur
° WWW : Système d’information hyper-média réparti :
texte, images, images animées, son …
° Les informations sont stockées sur les serveurs
accessibles par des URL:
– www.redhat.com
– www.linux.com.tn
° Pour interroger les serveurs on utilise les clients tels que
: Netscape, Mozilla, Konqueror, Balsa,...
Par Achraf SFAXI Page 6
Internet : la topologie client/serveur
(2)
° Modèle client-serveur
° Le client envoie des requêtes au serveur pour :
– transfert de fichiers
– exécution de programmes sur le serveur
– mise à jour de fichier
– …
° Utilisation du protocole HTTP
° Objets manipulés repérés par leurs URL/URI
° Pas de session permanente entre client/serveur
Par Achraf SFAXI Page 7
Les transactions Web(1)
° Les clients WWW émettent surtout des requêtes GET
pour accéder à des documents stockés sur un serveur
Web, puis les affichent.
° Ils peuvent aussi travailler dans l'autre sens :
transmission de paramètres au serveur HTTP qui activera
ensuite un programme utile pour :
– traitement de formulaire
– images réactives
– fourniture de mot-clé pour moteur de recherche
– page dynamique ...
Par Achraf SFAXI Page 8
Les transactions Web(2)
Serveur Web Serveur Web
(apache) (IIS)
Protocole HTTPProtocole HTTP
Client
(mozilla,...)
Par Achraf SFAXI Page 9
HTTP : protocole de communication
° Définit le langage utilisé pour les échanges entre client et
serveur Web.
° Actuellement la version 1.1 est une proposition de
standard de l'IETF : RFC 2616 (1999).
Par Achraf SFAXI Page 10
HTTP : la connexion
• Ouverture par le client : adresse IP et port, 80 par défaut.
• Envoi de la requête au serveur :
entêtes de requête (méthode à utiliser pour la transaction et
autres informations), données éventuelles
• Envoi de la réponse par le serveur :
entêtes de réponse (statut de la transaction, type de
données envoyées), données
• Fermeture de la connexion : aucune mémoire de la
transaction (protocole sans état)
Par Achraf SFAXI Page 11
HTTP : les méthodes
° GET URI HTTP/version
rapatrier le contenu de la ressource d'adresse URI
° HEAD URI HTTP/version
rapatrier les caractéristiques de la ressource d'adresse
URI
° POST URI HTTP/version
transmettre les données d'un formulaire au CGI indiqué
par l'URI
Par Achraf SFAXI Page 12
HTTP : les méthodes(2)
° PUT URI HTTP/version
transmettre les données à l'adresse URI (remplacement
ou création)
° DELETE URI HTTP/version
effacer la ressource d'adresse URI
° OPTIONS URI HTTP/version
renvoie les options applicables à la ressouurce d'adresse
URI
° TRACE URI HTTP/version
permet de tracer le passage par les proxies ...
Par Achraf SFAXI Page 13
HTTP : les champs d'en-tête
° Côté client
– User-Agent: programme/version commentaire
– Host: hôte [: port]
– Accept: type/sous-type
– Referer: URL
– If-Modified-Since: date
– Accept-Encoding: codage
– Accept-Language: langue
– Authorization: schéma données_codées
– Range: bytes=début-fin
Par Achraf SFAXI Page 14
HTTP : les champs d'en-tête (2)
° Côté serveur
– Allow: type/sous-type
– Content-Encoding: codage
– Content-Length: longueur
– Content-Type: type/sous-type [charset=jeu]
– Content-Range: bytes début-fin/total
– Date: date
– Last-Modified: date
– Retry-After: date | secondes
– Server: programme/version commentaire
– WWW-Authenticate: schéma realm=nom
Par Achraf SFAXI Page 15
Apache : Aperçu
° Le serveur web le plus utilisé dans le monde.
40% des serveurs web en 1998
° Dernière mise à jour du serveur : 2.40.47
° Démon du serveur : httpd
° Les ports :
° 80 par défaut
° 443 pour le trafic sécurisé (https)
Par Achraf SFAXI Page 16
Où et comment trouver Apache ?
° En ligne :
– http://httpd.apache.org
– httpd://modules.apache.org
– http://www.redhat.com
° En local (pour une distribution RedHat 8.0):
– RPMs :
httpd-2.0.40-21.i686.rpm
httpd-manual-2.0.40-21.i686.rpm (docs)
° Documentation locale : http://localhost/manual/
Par Achraf SFAXI Page 17
Fichiers de base
° Le binaire du démon : /usr/sbin/httpd
° Le script d ’arrêt et démarrage : /etc/init.d/httpd
° La hiérarchie /etc/httpd/ contient :
– Les fichiers de configuration : /etc/httpd/conf/
– Les logs : /etc:httpd/logs/
– Les modules : /etc/httpd/modules/
° La hiérarchie /var/www/ contient :
– Les pages HTML : /var/www/html/
– Les icones : /var/www/icons/
– Les cgi : /var/www/cgi-bin/
Par Achraf SFAXI Page 18
Contrôle du démon
° Action permanante
° Chkconfig httpd {on,off}
° Action non permanante(session en cours)
/etc/init.d/httpd {start, stop}
° service httpd {start, status,stop, restart,...}
° Le démon est lancé sous l’identité root et s’exécute sous
l’identité apache:apache
° Les documents servis sont uniquement en lecture pour le
démon (usager apache), les CGI en lecture et exécution.
Par Achraf SFAXI Page 19
Configuration de base de Apache
° Configurer apache = maintenir le fichier
/etc/httpd/conf/httpd.conf
– Directives globales au daemon apache et à ses fils :
ServerRoot, L oa d M od u le, In c lu
d e,…– Directives du serveur «principal» répondant aux requêtes
qui ne sont pas gérées par des VirtualHost ; ces directives
définissent les valeurs par défaut des sites virtuels : P ort,
U s er, G rou p , ServerA d m in , ServerN a m e, D oc u m
en tRoot,
E rrorL og ...– Directives relatives aux sites virtuels : V irtu a lh os t,
D oc u m en tRoot, ServerN a m e, E
rrorlog ,
Par Achraf SFAXI Page 20
A retenir ...
° Commandes :
chkconfig
service
° Fichiers et répertoires :
/etc/httpd/
/var/www/
/etc/httpd/conf/httpd.conf
Par Achraf SFAXI Page 21
Unit 2
Les hôtes virtuels
Par Achraf SFAXI Page 22
Plan
° Définition et types
° Déclaration de base d'un hôte virtuel
° Autres directives
° Contrôle d'accès
° Débogage
° Ab : outil de benchmarking
Par Achraf SFAXI Page 23
Définition et types
° But : exécution de plusieurs serveurs sur le même
ordinateur pour :
Différntes adresses IP
Différents noms
Différents ports
° <VirtualHost> ... </VirtualHost> : entourent un hôte
virtuel.
° La plupart des directives de configuration peuvent être
utilisées à l'intérieur et seront appliquées exclusivement à
cet hôte.
Par Achraf SFAXI Page 24
Configuration de base (directives)
° NameVirtualHost :définit l'adresse IP et le port d'écoute que
va contrôler chaque hôte virtuel ou tous les hôtes si cette
directives est citée une seule fois.
° ServerName : définit le nom du site
° DocumentRoot : définit le répertoire racine du contenu web
du site.
° ServerAdmin : définit l'adresse électronique du
« webmaster » du site.
Par Achraf SFAXI Page 25
Configuration de base (exemple)
NameVirtualHost 111.22.33.44
# --> Adresse IP sur laquelle le serveur reçoit les requêtes associées aux sites
virtuels ci-après.
<VirtualHost 111.22.33.44>
ServerName www.picasso.com
DocumentRoot /var/www/html/pica
ServerAdmin webmaster@picasso.com
</VirtualHost>
# --> Premier hôte virtuel
<VirtualHost 111.22.33.44:1233>
ServerName www.vonghog.com
DocumentRoot /var/www/html/vgog
ServerAdmin webmaster@picasso.com
</VirtualHost>
# --> Deuxième hôte virtuel contrôlant le port 1233
Par Achraf SFAXI Page 26
Autres directives(1)
° ErrorLog : définit le journal des erreurs.
° CustomLog : définit le journal des accès.
° ScriptAlias : définit la racine des scripts CGI.
° ErrorDocument : définit le fichier ou le message
d'erreur à transmettre au client en cas d'erreur.
° AddType : permet d'associer des paires MIME et des
extensions de fichiers.
AddType text/html .shtml
# -->Prendre en charge le format .shtml
Par Achraf SFAXI Page 27
Autres directives(2)
° BrowserMatch : définit des paramètres d'actions à
entreprendre tenant compte du type de navigateur client
tel que le refus d'accès à certain types de navigateurs
pouvant présenter des problèmes pendant l'exécution de
certain scripts du serveur.
° AddLangage : associe des extensions de fichiers à des
langues spécifiques Ù négociation de contenu et
préférences linguistiques du client.
Par Achraf SFAXI Page 28
Autres directives(3)
° Redirect : permet d'associer une nouvelle adresse à une
page qui a été déplacée de son emplacement d'origine.
Redirect /path/foo.html http://new_domain/path/foo.html
° UserDir : permet à des URL telles que
http://example.com/~jim/ de s’associer à un des répertoires
du répertoire de travail de l’utilisateur jim(exemple :
/home/jim/public_html) . Elle est par défaut désactivée
(UserDir disable). Pour l’activer :
UserDir public_html
Par Achraf SFAXI Page 29
Contrôle d'accès
° Contrôle des répertoires :
° <Directory> … </Directory>
° fichier .htaccess
° Contrôle des fichiers :
° <Files> … </Files>
° Contrôle des URL :
° <Location> … </Location>
° Le serveur analyse les contrôles sur les répertoires, puis
sur les fichiers et enfin sur les URL (dans l ’ordre ou
elles sont déclarées dans httpd.conf).
Par Achraf SFAXI Page 30
Exemple de contrôle sur les
répertoires
AllowOverride : définit des options supplémentaires sur
des répertoires du site.
° All, none, options
° Indexes : affiche le contenu du répertoire quand il n ’y a
pas de page index.html ou autre
Par Achraf SFAXI Page 31
Déboggage
Httpd : outil de déboggage
° -t : vérification de la syntaxe du fichier httpd.conf
° -l :liste des modules compilés avec apache
° -V : configuration
Par Achraf SFAXI Page 32
Ab : outil de Benchmarking des
serveurs Apache
° Pour afficher des statistiques d ’accès à un serveur Web,
lancer la commande :
/usr/sbin/ab [arguments] [URL]
° Exemples d'arguments :
° -n : définit le nombre de requêtes à envoyer
° -X proxy: port : définit le proxy et le port à utiliser
° -w : permet d'avoir des statiques sous forme d'un fichier
HTML
° Exemple de génération de statisques :
ab -n 10 http://www.voila.fr/
Par Achraf SFAXI Page 33
Benchmarking www.voila.fr (be patient).....done
Server Software: Apache/1.3.27
Server Hostname: www.voila.fr
Server Port: 80
Document Path: /
Document Length: 20638 bytes
Concurrency Level: 10
Time taken for tests: 1.526670 seconds
Complete requests: 1
Failed requests: 0
Write errors: 0
Total transferred: 20768 bytes
HTML transferred: 20638 bytes
Requests per second: 0.66 [#/sec] (mean)
Time per request: 15266.700 [ms] (mean)
Time per request: 1526.670 [ms] (mean, across all concurrent requests)
Transfer rate: 13.10 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 71 71 0.0 71 71
Processing: 1455 1455 0.0 1455 1455
Waiting: 186 186 0.0 186 186
Total: 1526 1526 0.0 1526 1526
Par Achraf SFAXI Page 34
A retenir...
° Fichiers et répertoires:
° /etc/httpd/conf/httpd.conf
° /var/www/
° Commandes et directives:
° VirtualHost
° NameVirtualHost
° httpd
° Ab
Par Achraf SFAXI Page 35
Unit 3
Personnalisation de Apache :
Ajout de modules
Par Achraf SFAXI Page 36
Plan
° Méthodes d’ajout de modules
° Les modules proposés avec Apache
° Ajout de modules non livrés avec Apache
° Ajout du module PHP
° Autres modules
Par Achraf SFAXI Page 37
Méthodes d’ajout de modules
° Ajout statique : nécessite de recompiler Apache à chaque
ajout ou suppression de module
° Allocation dynamique : nécessite le module mod_dso
° Les RPMs d’apache pour les versions supérieures à
Redhat7.0 sont prévus pour une allocation dynamique
des modules (DSO support)
Par Achraf SFAXI Page 38
Les modules proposés avec Apache
° Liste : http://httpd.apache.org/docs/mod/
° Utiliser les modules par défaut
° Ajouter des modules au fur et à mesure des besoins
° Décommenter les lignes LoadModule dans le fichier
httpd.conf
° Les modules font référence à des modules dans
/etc/httpd/modules qui représente un lien vers
/usr/lib/httpd/modules
Par Achraf SFAXI Page 39
Ajout de modules non livrés avec
Apache
° Un catalogue des modules est disponible sur le serveur :
http://modules.apache.org
° Installer le module (généralement sous forme de rpms)
° Vérifier l’emplcement du module
° Ajouter des lignes :
° LoadModule nom_module modules/mod_nom.so
Par Achraf SFAXI Page 40
Ajout du module PHP
° Disponible sous forme de RPMs
° Installer impérativement :
° le module PHP pour apache : mod_php-<version>.rpm
° les librairies PHP : php-<version>.rpm
° Installer en fonction des besoins :
° php-pgsql-<version>.rpm
° php-mysql-<version>.rpm
° ...
° Arrêter et redémarrer Apache
° Installation très aisée, aucune modification à apporter au fichier
httpd.conf
Par Achraf SFAXI Page 41
Autres modules
° Exemple : ajout du module speling
° Ce module tente la correction d ’URL mal tapées et confond
majuscules/ minuscules dans les URL
° Dans httpd.conf, décommenter :
° LoadModule speling_module modules/mod_speling.so
° mod_ssl
° mod_include
° mod_perl
° mod_python
° mod_access …
Par Achraf SFAXI Page 42
A retenir …
° LoadModule
° /etc/httpd/modules
° /usr/lib/httpd/modules
Par Achraf SFAXI Page 43
Unit 4
Programmation dynamique
Par Achraf SFAXI Page 44
Plan
° Architectures
° Programmation dynamique
° Interrogation des bases de données
° PHP et Postgresql
Par Achraf SFAXI Page 45
Architectures
° Client/serveur
Requête/RéponseClient Serveur Web
(mozilla,...) Protocole HTTP (apache)
° Multi-tiers
Requête/RéponseClient Serveur Web
SGBD(mozilla,...) Protocole HTTP (apache)
Par Achraf SFAXI Page 46
Programmation dynamique (1)
° Scripts côté serveur :
° Le client envoi une requête
° Exécution d’un script sur le serveur
° Renvoi du résultat au client sous forme HTML
° PHP, Java, JSP, CGI, …
Par Achraf SFAXI Page 47
Programmation dynamique (2)
° Scripts côté client
° Le client envoi une requête
° Renvoi du résultat au client sous forme HTML avec du
code dynamique incorporé
° Exécution du code sur le client
° Applets, JavaScript, …
Par Achraf SFAXI Page 48
Interrogation des bases de données
° Généralement se fait à travers une couche logicielle
intermédiaire entre le langage de programmation et le
SGBD cible : les middelwares.
° Un middelware définit une librairie offrant des
procédures pour accéder à des SGBD.
° Fonctions de base : connexion à une base, formulation de
requêtes, interrogation, traitements sur le résultat,
libération de la connexion.
° Exp : ODBC, JDBC, DBI, …
Par Achraf SFAXI Page 49
PHP et Postgresql
° Une solution open-source fiable pour la création de sites
web dynamique faisant appel à des bases de données
° PHP permet l’accès en natif à des bases postgresql
° Pas de couche logicielle intermédiaire(middelware)
Par Achraf SFAXI Page 50
PHP/Postgresql : les fonctions de base
° pg_Connect : Connexion à une base de données
° pg_Close : Fermer une connexion
° pg_Exec : Exécute une requête.
° pg_NumRows :Renvoie le nombre de tuples
(enregistrements) de la requête.
° pg_Result : Renvoie la valeur d’un champ, pour un
nombre d’enregistrement donné et un résultat de requête.
Les numéros d’enregistrement et de champ commencent
à 0.
Par Achraf SFAXI Page 51
Unit 5
Sécurité et authentification
Par Achraf SFAXI Page 52
Plan
° Les modes de contrôle d'accès
° Le contrôle sur les répertoires
° L'authentification : le fichier .htaccess
° Le contrôle sur les fichiers
° Le contrôle sur les URL
Par Achraf SFAXI Page 53
3 modes de contrôle d ’accès
° Contrôle des répertoires :
° <Directory> … </Directory>
° fichier .htaccess
° Contrôle des fichiers :
° <Files> … </Files>
° Contrôle des URL :
° <Location> … </Location>
° Le serveur analyse les contrôles sur les répertoires, puis
sur les fichiers et enfin sur les URL (dans l ’ordre ou
elles sont déclarées dans httpd.conf).
Par Achraf SFAXI Page 54
Le contrôle sur les répertoires(1)
--AllowOverride
° AllowOverride : définit la politique d ’utilisation des
fichiers .htaccess.
° None : le serveur ignore les fichiers .htaccess
<Directory /var/www/html>
AllowOverride None
</Directory>
Par Achraf SFAXI Page 55
Le contrôle sur les répertoires(2)
--AllowOverride
° AllowOverride : définit aussi des options supplémentaires sur des
répertoires du site.
° All : le serveur autorise toutes les directives citées ci-après.
° AuthConfig : autorise les directives Auth..., require, etc
° FileInfo : autorise les directives de définition des types de documents
° Indexes : autorise les directives de présentation des répertoires
° Limit : autorise les directives d'accès par machine
° Options : autorise les directives d'options
Par Achraf SFAXI Page 56
Le contrôle sur les répertoires(3)
--Options
° All : toutes les options
° ExecCGI : autorisation d ’exécuter des CGI.
° FollowSymLinks : autorisation de suivre les liens unix
° Includes : autorisation d ’utiliser des « Server-side
includes ».
° IncludesNOEXEC : « Server-side includes » sans la
commande #exec ou #include d ’inclusion de CGI
° Indexes : affiche le contenu du répertoire quand il n ’y a
pas de page index.html ou autre
Par Achraf SFAXI Page 57
Le contrôle sur les répertoires(4)
--Options
° SymLinksIfOwnerMatch : affiche seuls les liens pour lesquels le
propriétaire du fichier ou répertoire cible est le même que le
propriétaire du lien (exemple lien impossible vers fichier
/etc/passwd)
° Les options s ’appliquent au répertoire et à toute sa hiérarchie,
exemple :
<Directory /var/www/html/pica>
Options Indexes FollowSymLinks
</Directory>
Par Achraf SFAXI Page 58
Le contrôle sur les répertoires(4)
--les modes d'accès
° Allow from : autorisation de domaines et réseaux
° Deny from : interdiction de domaines et réseaux
° La directive Order désigne l ’ordre dans lequel les
directives Allow et Deny sont évaluées.
<Directory /docs>Order Deny,Allow
# -->les directives Deny sont Options None
Order Deny,Allow
Deny from all
évaluées
#avant les directives Allow.
#Le statut initial(par défaut) est
</Directory>
Allow.
Par Achraf SFAXI Page 59
Le contrôle sur les répertoires(4)
--les modes d'accès
° Order Allow,Deny
les directives Allow sont évaluées avant les directives
Deny. Le statut initial(par défaut) est INTERDIT.
° Order Mutual-failure : accès autorisé aux postes cités
dans Allow et pas cités dans Deny. Le statut initial n’est
pas connu.
Par Achraf SFAXI Page 60
Le contrôle sur les répertoires(5)
--Exemple
<Directory /var/www/html>
AllowOverride None
Options None
<Limit GET POST>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
<Directory>
Par Achraf SFAXI Page 61
Le fichier .htaccess(1)
° Authentification des utilisateurs pour l'accès à certaines
pages du site.
° Créé dans le répertoire des pages protégées par
l'authentification.
° Authentification par utilisateurs ou groupes.
Par Achraf SFAXI Page 62
Le fichier .htaccess(2)
° AuthName : champs commentaire.
° AuthType décrit le type d'authentification
° Basic : login et mot de passe.
° AuthUserFile définit le fichier qui stocke la déclaration
des utilisateurs authorisés et leurs mots de passe.
° AuthGroupFile définit le fichier qui stocke la déclaration
des utilisateurs authorisés et leurs mots de passe.
° require définit les utilisateurs ou les groupes authorisés
° group liste des groupes
° User liste des utilisateurs
Par Achraf SFAXI Page 63
Le fichier .htaccess(3)
° Exemple de fichier .htaccess
AuthName "L'INTRANET de OpenNet"
AuthType Basic
AuthUserFile /web/conf/securite/usagers
require valid-user
° Le fichier /web/conf/securite/usagers est crée par la
commande htpasswd qui crypte les mots de passe
htpasswd -c /web/conf/securite/usagers bob
htpasswd /web/conf/securite/usagers jane
#ajout des utilisateurs bob et jane au fichier
d'authentification
Par Achraf SFAXI Page 64
Le contrôle sur les fichiers
° Interdire ou autoriser l’accès à des fichiers vérifiant un
certain schéma
#interdire l’accès au fichiers commençant par « .ht »
(sécuriser .htaccess!!!)
<Files ~ ^.ht >
Order allow,deny
Deny from all
</Files>
Par Achraf SFAXI Page 65
A retenir …
° Sécuriser l’accès par adresses IP
° La directive <Directory> … </Directory>
° Sécuriser l’accès par utilisateurs
° Le fichier .htaccess
° Sécuriser l’accès pour certains fichiers
° La directive <Files> … </Files>
Par Achraf SFAXI Page 66
Unit 6
Sécurité Avancée avec SSL
Par Achraf SFAXI Page 67
Plan
° Motivation
° Cryptographie : Notions rédumentaires
° Concepts SSL de base
° Les certificats SSL
° Obtenir un certificat SSL pour un site web
° Implémenter SSL pour la sécurisation du web
Par Achraf SFAXI Page 68
Motivation
° Développement anarchique des réseaux et de
l'interconnexion
° Développement des applications en relation avec
l'Internet (e-commerce, télé-compensation, télé-travail...)
° La disponibilité des outils de crackage, d'attaque et
d'usurpassion au commun des mortels (Google affiche 11500000
résultats pour le mot « crack » )
° L'information est devenue un patrimoine économique qui
se monnaye
Par Achraf SFAXI Page 69
Cryptographie : Notions
rédumentaires
La cryptographie fait référence à trois notions
rédumentaires à savoir :
° Le chiffrement
° Le déchiffrement
° La signature électronique
Par Achraf SFAXI Page 70
Les types de chiffrement
° Il existe deux types de chiffrement :
° Chiffrement symétrique
° Clef secrète
° Chiffrement asymétrique
° Clef publique
° Clef privée
° La combinaison de ces deux types est, également,
possible
° Le principe de la clef de session
Par Achraf SFAXI Page 71
Exemples d'algorithmes de
chiffrement
° DES (Data Encryption Standard)
° RSA (Rivest Shamir Adelman)
° PGP (Pretty Good Privacy)
Par Achraf SFAXI Page 72
L'historique du protocole SSL
° Le protocole SSL (Secure Socket Layer) fut inventé par
Netscape en collaboration avec Master Card, Bank of
America et Silicon Graphics
° Il sert à sécuriser les transactions entre les serveurs web
et les outils de navigation
° Au milieu de l'année 2001, le brevet de SSL appartenant
jusqu'alors à Netscape a été acheté par l'IETF (Internet
Engineering Task Force) et a été rebaptisé TLS
(Transport Layer Security)
Par Achraf SFAXI Page 73
SSL :Principe(1)
° Le protocole SSL agit de bout en bout
° Il peut être assimilé à une couche supplémentaire qui se
place entre la couche transport et la couche application
° Toutes les applications classiquement utilisées au dessus
de TCP peuvent profiter du protocole SSL
° POP3S (995), IMAPS (993), LDAPS (636), HTTPS
(443), etc...
Par Achraf SFAXI Page 74
SSL : Principe (2)
Par Achraf SFAXI Page 75
Fonctionnement
Le protocole SSL est scindé en deux sous couches :
° SSL Record Protocol (la sous couche basse)
° S'appuye sur la couche TCP
° Elle assure l'encapsulation des éléments des couches
supérieures
° SSL Handshake Protocol
Par Achraf SFAXI Page 76
La sous couche
SSL Handshake Protocol
° La sous couche « SSL Handshake Protocol » est
responsable de la négociation et le choix des paramètres
de session
° (e.g)s de paramètres de sessions :
° Identificateur de session
° Certificats X509 des partenaires
° Méthode de compression des données
° Algorithme de chiffrement choisi
Par Achraf SFAXI Page 77
Le choix de l'algorithme de
chiffrement
° Il détermine l'apptitude du cryptgramme à supporter à
des tentatives de cassage
° Le choix correspond à l'algorithme ayant la plus grande
taille de clef (parmis les algorithmes communs au client
et au serveur)
Par Achraf SFAXI Page 78
Les certificats SSL :Besoin
° La clef publique est publiée sur un annuaire LDAP ou un
site web personnel (chiffrement asymétrique)
° Nécessité de garantir
° L'appartenance de clef à la personne avec laquelle les
échanges sont envisagées
° L'honnêteté du possesseur de la clef
° La validité de la clef
° Rôle de l'autorité de certification
Par Achraf SFAXI Page 79
Qu'est ce qu'un certificat
° Un petit fichier
° Carte d'identité de la clef publique
° Un document électronique résultant d'un traitement
fixant les relations entre une clef publique, son
propriétaire et une application
Par Achraf SFAXI Page 80
Contenu d'un certificat(1)
° Selon le standard X509 de l'UIT – RFC 2459, un
certificat est constitué de deux parties :
° Une partie contenant des informations
° Une partie contenant la signature de l'autorité de
certification
Par Achraf SFAXI Page 81
Contenu d'un certificat (2)
Par Achraf SFAXI Page 82
Contenu d'un certificat (3)
Par Achraf SFAXI Page 83
Vérification d'un certificat
Par Achraf SFAXI Page 84
Autorité de Certification
° Une AC est une organisation qui délivre les certificats à
une population
° Une AC possède, à son tour, un certificat
° L'AC utilise sa clef privée pour générer des certificats
° Une AC peut être organisationnelle, spécifique à un
corps de métiers (notaires) ou institutionnelle
° Les certificats sont limités à un organisme, à un
ensemble d'organisme ou à une communauté
Par Achraf SFAXI Page 85
Sécuriser le web :Principe de
Fonctionnement(1)
° Le navigateur demande une page web sécurisée
° Le serveur web émet sa clef publique et son certificat
° Le navigateur vérifie :
° La validité du certificat
° La fiabilité de l'authorité de certification
° La correspondance entre le certificat et le site sujet de la
connexion
Par Achraf SFAXI Page 86
Principe de Fonctionnement (2)
° Le navigateur chiffre
° La clef de session avec la clef publique du serveur
° L'url demandée et les données http avec la clef de session
° Le serveur déchiffre
° La clef de session avec la clef publique du serveur
° L'url demandée et les données http avec la clef de session
Par Achraf SFAXI Page 87
Principe de Fonctionnement (3)
° Le serveur renvoie le document html et les données http
chiffrées avec la clef de session
° Le navigateur déchiffre l'ensemble avec la clef de session
Par Achraf SFAXI Page 88
Le web sécurisé sous Mozilla
° Sous Mozilla, la communication avec un serveur web
sécurisé par SSL se manifeste par:
° Une url commencçant par « https:// »
° Un cadenas verouillé en bas de page à droite
Par Achraf SFAXI Page 89
Implémentation de SSL(1)
° Vérifier que Apache est installé et que le service httpd
est actif
° Vérifier que le package Openssl est installé
° Installer le package mod_ssl
° Générer une clef privée (nom_clef.key)
° Générer une clef publique (nom_clef.csr)
° Générer un certificat X.509 (nom_clef.crt)
Par Achraf SFAXI Page 90
Implémentation de SSL (2)
° Copier les fichiers obtenus vers les répertoires suivants :
° /etc/httpd/conf/ssl.key/
° /etc/httpd/conf/ssl.csr/
° /etc/httpd/conf/ssl.crt/
° Modifier le fichier /etc/httpd/conf.d/ssl.conf de façon que
les directives SSLCertificateFile,
SSLCertificateKeyFile et SSLCACertificateFile
pointent vers les fichiers que vous avez généré
° Relancer le service httpd
Par Achraf SFAXI Page 91
Obtenir un certificat pour un site web
° Contacter une autorité de certification
° Accomplir les modalités administratives et législatives
(elles varient selon le pays et la CA)
° Publier votre clef publique au sein d'un annuaire LDAP
ou sur votre site web

Más contenido relacionado

La actualidad más candente

07 02 création et maintenance de zones dns
07 02 création et maintenance de zones dns07 02 création et maintenance de zones dns
07 02 création et maintenance de zones dns
Noël
 
07 03 sécurisation d'un serveur dns
07 03 sécurisation d'un serveur dns07 03 sécurisation d'un serveur dns
07 03 sécurisation d'un serveur dns
Noël
 
Installation et-configuration-d-un a175
Installation et-configuration-d-un a175Installation et-configuration-d-un a175
Installation et-configuration-d-un a175
Maryem Maryemtii
 
Configuration dns sous linux
Configuration  dns sous linuxConfiguration  dns sous linux
Configuration dns sous linux
Balamine Gassama
 
présentation des services Open Source pour GNU/Linux
présentation des services Open Source pour GNU/Linuxprésentation des services Open Source pour GNU/Linux
présentation des services Open Source pour GNU/Linux
Noël
 

La actualidad más candente (16)

07 02 création et maintenance de zones dns
07 02 création et maintenance de zones dns07 02 création et maintenance de zones dns
07 02 création et maintenance de zones dns
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 
09 01 configuration du serveur samba
09 01 configuration du serveur samba09 01 configuration du serveur samba
09 01 configuration du serveur samba
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
07 03 sécurisation d'un serveur dns
07 03 sécurisation d'un serveur dns07 03 sécurisation d'un serveur dns
07 03 sécurisation d'un serveur dns
 
Installation et-configuration-d-un a175
Installation et-configuration-d-un a175Installation et-configuration-d-un a175
Installation et-configuration-d-un a175
 
09 02 configuration du serveur nfs
09 02 configuration du serveur nfs09 02 configuration du serveur nfs
09 02 configuration du serveur nfs
 
Configuration dns sous linux
Configuration  dns sous linuxConfiguration  dns sous linux
Configuration dns sous linux
 
Samba 4
Samba 4Samba 4
Samba 4
 
service NFS sous linux
 service NFS sous linux service NFS sous linux
service NFS sous linux
 
08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)
 
présentation des services Open Source pour GNU/Linux
présentation des services Open Source pour GNU/Linuxprésentation des services Open Source pour GNU/Linux
présentation des services Open Source pour GNU/Linux
 
Plein phar
Plein pharPlein phar
Plein phar
 
Dhcp3
Dhcp3Dhcp3
Dhcp3
 
Reseau entreprise
Reseau entrepriseReseau entreprise
Reseau entreprise
 
13
1313
13
 

Similar a Apache server configuration & sécurisation -

Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
julien pauli
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutant
Korteby Farouk
 
technologie web - part3
technologie web - part3technologie web - part3
technologie web - part3
Benoît Simard
 
Presentation
PresentationPresentation
Presentation
bois
 

Similar a Apache server configuration & sécurisation - (20)

Cours 8 squid.pdf
Cours 8 squid.pdfCours 8 squid.pdf
Cours 8 squid.pdf
 
ServeurWeb-ProtocoleHttpdefinitionet.pdf
ServeurWeb-ProtocoleHttpdefinitionet.pdfServeurWeb-ProtocoleHttpdefinitionet.pdf
ServeurWeb-ProtocoleHttpdefinitionet.pdf
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutant
 
Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1Installation d'openerp 6.1 rc1
Installation d'openerp 6.1 rc1
 
technologie web - part3
technologie web - part3technologie web - part3
technologie web - part3
 
Presentation
PresentationPresentation
Presentation
 
Technologie Web.pptx
Technologie Web.pptxTechnologie Web.pptx
Technologie Web.pptx
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
intro-tech-web-lp3-jan-21-slides-1-a-9.pdf
intro-tech-web-lp3-jan-21-slides-1-a-9.pdfintro-tech-web-lp3-jan-21-slides-1-a-9.pdf
intro-tech-web-lp3-jan-21-slides-1-a-9.pdf
 
[FR] Les requêtes HTTP de l'extrême
[FR] Les requêtes HTTP de l'extrême[FR] Les requêtes HTTP de l'extrême
[FR] Les requêtes HTTP de l'extrême
 
S2-01-PHP.pptx
S2-01-PHP.pptxS2-01-PHP.pptx
S2-01-PHP.pptx
 
Lightning talk: Les Load Balancers HTTP modernes
Lightning talk: Les Load Balancers HTTP modernesLightning talk: Les Load Balancers HTTP modernes
Lightning talk: Les Load Balancers HTTP modernes
 
Configuration des services web sous centOS 5
Configuration des services web sous centOS 5Configuration des services web sous centOS 5
Configuration des services web sous centOS 5
 
Installation et configuration d'AWSTATS "Outils d'analyse de Logs" sur Centos...
Installation et configuration d'AWSTATS "Outils d'analyse de Logs" sur Centos...Installation et configuration d'AWSTATS "Outils d'analyse de Logs" sur Centos...
Installation et configuration d'AWSTATS "Outils d'analyse de Logs" sur Centos...
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapide
 
Serveurs
ServeursServeurs
Serveurs
 

Más de achraf_ing (10)

Ejb - september 2006
Ejb  - september 2006Ejb  - september 2006
Ejb - september 2006
 
Clustering - october 2006
Clustering  - october 2006Clustering  - october 2006
Clustering - october 2006
 
Distributed computing - november 2006
Distributed computing  - november 2006Distributed computing  - november 2006
Distributed computing - november 2006
 
Initiation à Linux - Fundamentals
Initiation à Linux  - FundamentalsInitiation à Linux  - Fundamentals
Initiation à Linux - Fundamentals
 
Ssl et certification electronique - (construction de certification)
Ssl et certification electronique  - (construction de certification)Ssl et certification electronique  - (construction de certification)
Ssl et certification electronique - (construction de certification)
 
Crise financiere
Crise financiereCrise financiere
Crise financiere
 
Stratégie
StratégieStratégie
Stratégie
 
The 23 gof design patterns in java ,the summary
The 23 gof design patterns in java ,the summaryThe 23 gof design patterns in java ,the summary
The 23 gof design patterns in java ,the summary
 
Internationalization in Java
Internationalization in JavaInternationalization in Java
Internationalization in Java
 
My Rmi F
My Rmi FMy Rmi F
My Rmi F
 

Apache server configuration & sécurisation -

  • 1. Par Achraf SFAXI Page 1 Apache Server : Configuration & Sécurisation sous Linux
  • 2. Par Achraf SFAXI Page 2 Unit 1 Introduction et configuration de base de Apache
  • 3. Par Achraf SFAXI Page 3 base de Apache Unit 1 Introduction et configuration de
  • 4. Par Achraf SFAXI Page 4 Unit 1 : Plan ° Internet : Architecture ° HTTP : architecture et fonctionnement ° Apache : utilisation, installation et activation sous RedHat linux ° Les fichiers de configuration de base et contrôle du démon
  • 5. Par Achraf SFAXI Page 5 Internet : la topologie client/serveur ° WWW : Système d’information hyper-média réparti : texte, images, images animées, son … ° Les informations sont stockées sur les serveurs accessibles par des URL: – www.redhat.com – www.linux.com.tn ° Pour interroger les serveurs on utilise les clients tels que : Netscape, Mozilla, Konqueror, Balsa,...
  • 6. Par Achraf SFAXI Page 6 Internet : la topologie client/serveur (2) ° Modèle client-serveur ° Le client envoie des requêtes au serveur pour : – transfert de fichiers – exécution de programmes sur le serveur – mise à jour de fichier – … ° Utilisation du protocole HTTP ° Objets manipulés repérés par leurs URL/URI ° Pas de session permanente entre client/serveur
  • 7. Par Achraf SFAXI Page 7 Les transactions Web(1) ° Les clients WWW émettent surtout des requêtes GET pour accéder à des documents stockés sur un serveur Web, puis les affichent. ° Ils peuvent aussi travailler dans l'autre sens : transmission de paramètres au serveur HTTP qui activera ensuite un programme utile pour : – traitement de formulaire – images réactives – fourniture de mot-clé pour moteur de recherche – page dynamique ...
  • 8. Par Achraf SFAXI Page 8 Les transactions Web(2) Serveur Web Serveur Web (apache) (IIS) Protocole HTTPProtocole HTTP Client (mozilla,...)
  • 9. Par Achraf SFAXI Page 9 HTTP : protocole de communication ° Définit le langage utilisé pour les échanges entre client et serveur Web. ° Actuellement la version 1.1 est une proposition de standard de l'IETF : RFC 2616 (1999).
  • 10. Par Achraf SFAXI Page 10 HTTP : la connexion • Ouverture par le client : adresse IP et port, 80 par défaut. • Envoi de la requête au serveur : entêtes de requête (méthode à utiliser pour la transaction et autres informations), données éventuelles • Envoi de la réponse par le serveur : entêtes de réponse (statut de la transaction, type de données envoyées), données • Fermeture de la connexion : aucune mémoire de la transaction (protocole sans état)
  • 11. Par Achraf SFAXI Page 11 HTTP : les méthodes ° GET URI HTTP/version rapatrier le contenu de la ressource d'adresse URI ° HEAD URI HTTP/version rapatrier les caractéristiques de la ressource d'adresse URI ° POST URI HTTP/version transmettre les données d'un formulaire au CGI indiqué par l'URI
  • 12. Par Achraf SFAXI Page 12 HTTP : les méthodes(2) ° PUT URI HTTP/version transmettre les données à l'adresse URI (remplacement ou création) ° DELETE URI HTTP/version effacer la ressource d'adresse URI ° OPTIONS URI HTTP/version renvoie les options applicables à la ressouurce d'adresse URI ° TRACE URI HTTP/version permet de tracer le passage par les proxies ...
  • 13. Par Achraf SFAXI Page 13 HTTP : les champs d'en-tête ° Côté client – User-Agent: programme/version commentaire – Host: hôte [: port] – Accept: type/sous-type – Referer: URL – If-Modified-Since: date – Accept-Encoding: codage – Accept-Language: langue – Authorization: schéma données_codées – Range: bytes=début-fin
  • 14. Par Achraf SFAXI Page 14 HTTP : les champs d'en-tête (2) ° Côté serveur – Allow: type/sous-type – Content-Encoding: codage – Content-Length: longueur – Content-Type: type/sous-type [charset=jeu] – Content-Range: bytes début-fin/total – Date: date – Last-Modified: date – Retry-After: date | secondes – Server: programme/version commentaire – WWW-Authenticate: schéma realm=nom
  • 15. Par Achraf SFAXI Page 15 Apache : Aperçu ° Le serveur web le plus utilisé dans le monde. 40% des serveurs web en 1998 ° Dernière mise à jour du serveur : 2.40.47 ° Démon du serveur : httpd ° Les ports : ° 80 par défaut ° 443 pour le trafic sécurisé (https)
  • 16. Par Achraf SFAXI Page 16 Où et comment trouver Apache ? ° En ligne : – http://httpd.apache.org – httpd://modules.apache.org – http://www.redhat.com ° En local (pour une distribution RedHat 8.0): – RPMs : httpd-2.0.40-21.i686.rpm httpd-manual-2.0.40-21.i686.rpm (docs) ° Documentation locale : http://localhost/manual/
  • 17. Par Achraf SFAXI Page 17 Fichiers de base ° Le binaire du démon : /usr/sbin/httpd ° Le script d ’arrêt et démarrage : /etc/init.d/httpd ° La hiérarchie /etc/httpd/ contient : – Les fichiers de configuration : /etc/httpd/conf/ – Les logs : /etc:httpd/logs/ – Les modules : /etc/httpd/modules/ ° La hiérarchie /var/www/ contient : – Les pages HTML : /var/www/html/ – Les icones : /var/www/icons/ – Les cgi : /var/www/cgi-bin/
  • 18. Par Achraf SFAXI Page 18 Contrôle du démon ° Action permanante ° Chkconfig httpd {on,off} ° Action non permanante(session en cours) /etc/init.d/httpd {start, stop} ° service httpd {start, status,stop, restart,...} ° Le démon est lancé sous l’identité root et s’exécute sous l’identité apache:apache ° Les documents servis sont uniquement en lecture pour le démon (usager apache), les CGI en lecture et exécution.
  • 19. Par Achraf SFAXI Page 19 Configuration de base de Apache ° Configurer apache = maintenir le fichier /etc/httpd/conf/httpd.conf – Directives globales au daemon apache et à ses fils : ServerRoot, L oa d M od u le, In c lu d e,…– Directives du serveur «principal» répondant aux requêtes qui ne sont pas gérées par des VirtualHost ; ces directives définissent les valeurs par défaut des sites virtuels : P ort, U s er, G rou p , ServerA d m in , ServerN a m e, D oc u m en tRoot, E rrorL og ...– Directives relatives aux sites virtuels : V irtu a lh os t, D oc u m en tRoot, ServerN a m e, E rrorlog ,
  • 20. Par Achraf SFAXI Page 20 A retenir ... ° Commandes : chkconfig service ° Fichiers et répertoires : /etc/httpd/ /var/www/ /etc/httpd/conf/httpd.conf
  • 21. Par Achraf SFAXI Page 21 Unit 2 Les hôtes virtuels
  • 22. Par Achraf SFAXI Page 22 Plan ° Définition et types ° Déclaration de base d'un hôte virtuel ° Autres directives ° Contrôle d'accès ° Débogage ° Ab : outil de benchmarking
  • 23. Par Achraf SFAXI Page 23 Définition et types ° But : exécution de plusieurs serveurs sur le même ordinateur pour : Différntes adresses IP Différents noms Différents ports ° <VirtualHost> ... </VirtualHost> : entourent un hôte virtuel. ° La plupart des directives de configuration peuvent être utilisées à l'intérieur et seront appliquées exclusivement à cet hôte.
  • 24. Par Achraf SFAXI Page 24 Configuration de base (directives) ° NameVirtualHost :définit l'adresse IP et le port d'écoute que va contrôler chaque hôte virtuel ou tous les hôtes si cette directives est citée une seule fois. ° ServerName : définit le nom du site ° DocumentRoot : définit le répertoire racine du contenu web du site. ° ServerAdmin : définit l'adresse électronique du « webmaster » du site.
  • 25. Par Achraf SFAXI Page 25 Configuration de base (exemple) NameVirtualHost 111.22.33.44 # --> Adresse IP sur laquelle le serveur reçoit les requêtes associées aux sites virtuels ci-après. <VirtualHost 111.22.33.44> ServerName www.picasso.com DocumentRoot /var/www/html/pica ServerAdmin webmaster@picasso.com </VirtualHost> # --> Premier hôte virtuel <VirtualHost 111.22.33.44:1233> ServerName www.vonghog.com DocumentRoot /var/www/html/vgog ServerAdmin webmaster@picasso.com </VirtualHost> # --> Deuxième hôte virtuel contrôlant le port 1233
  • 26. Par Achraf SFAXI Page 26 Autres directives(1) ° ErrorLog : définit le journal des erreurs. ° CustomLog : définit le journal des accès. ° ScriptAlias : définit la racine des scripts CGI. ° ErrorDocument : définit le fichier ou le message d'erreur à transmettre au client en cas d'erreur. ° AddType : permet d'associer des paires MIME et des extensions de fichiers. AddType text/html .shtml # -->Prendre en charge le format .shtml
  • 27. Par Achraf SFAXI Page 27 Autres directives(2) ° BrowserMatch : définit des paramètres d'actions à entreprendre tenant compte du type de navigateur client tel que le refus d'accès à certain types de navigateurs pouvant présenter des problèmes pendant l'exécution de certain scripts du serveur. ° AddLangage : associe des extensions de fichiers à des langues spécifiques Ù négociation de contenu et préférences linguistiques du client.
  • 28. Par Achraf SFAXI Page 28 Autres directives(3) ° Redirect : permet d'associer une nouvelle adresse à une page qui a été déplacée de son emplacement d'origine. Redirect /path/foo.html http://new_domain/path/foo.html ° UserDir : permet à des URL telles que http://example.com/~jim/ de s’associer à un des répertoires du répertoire de travail de l’utilisateur jim(exemple : /home/jim/public_html) . Elle est par défaut désactivée (UserDir disable). Pour l’activer : UserDir public_html
  • 29. Par Achraf SFAXI Page 29 Contrôle d'accès ° Contrôle des répertoires : ° <Directory> … </Directory> ° fichier .htaccess ° Contrôle des fichiers : ° <Files> … </Files> ° Contrôle des URL : ° <Location> … </Location> ° Le serveur analyse les contrôles sur les répertoires, puis sur les fichiers et enfin sur les URL (dans l ’ordre ou elles sont déclarées dans httpd.conf).
  • 30. Par Achraf SFAXI Page 30 Exemple de contrôle sur les répertoires AllowOverride : définit des options supplémentaires sur des répertoires du site. ° All, none, options ° Indexes : affiche le contenu du répertoire quand il n ’y a pas de page index.html ou autre
  • 31. Par Achraf SFAXI Page 31 Déboggage Httpd : outil de déboggage ° -t : vérification de la syntaxe du fichier httpd.conf ° -l :liste des modules compilés avec apache ° -V : configuration
  • 32. Par Achraf SFAXI Page 32 Ab : outil de Benchmarking des serveurs Apache ° Pour afficher des statistiques d ’accès à un serveur Web, lancer la commande : /usr/sbin/ab [arguments] [URL] ° Exemples d'arguments : ° -n : définit le nombre de requêtes à envoyer ° -X proxy: port : définit le proxy et le port à utiliser ° -w : permet d'avoir des statiques sous forme d'un fichier HTML ° Exemple de génération de statisques : ab -n 10 http://www.voila.fr/
  • 33. Par Achraf SFAXI Page 33 Benchmarking www.voila.fr (be patient).....done Server Software: Apache/1.3.27 Server Hostname: www.voila.fr Server Port: 80 Document Path: / Document Length: 20638 bytes Concurrency Level: 10 Time taken for tests: 1.526670 seconds Complete requests: 1 Failed requests: 0 Write errors: 0 Total transferred: 20768 bytes HTML transferred: 20638 bytes Requests per second: 0.66 [#/sec] (mean) Time per request: 15266.700 [ms] (mean) Time per request: 1526.670 [ms] (mean, across all concurrent requests) Transfer rate: 13.10 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 71 71 0.0 71 71 Processing: 1455 1455 0.0 1455 1455 Waiting: 186 186 0.0 186 186 Total: 1526 1526 0.0 1526 1526
  • 34. Par Achraf SFAXI Page 34 A retenir... ° Fichiers et répertoires: ° /etc/httpd/conf/httpd.conf ° /var/www/ ° Commandes et directives: ° VirtualHost ° NameVirtualHost ° httpd ° Ab
  • 35. Par Achraf SFAXI Page 35 Unit 3 Personnalisation de Apache : Ajout de modules
  • 36. Par Achraf SFAXI Page 36 Plan ° Méthodes d’ajout de modules ° Les modules proposés avec Apache ° Ajout de modules non livrés avec Apache ° Ajout du module PHP ° Autres modules
  • 37. Par Achraf SFAXI Page 37 Méthodes d’ajout de modules ° Ajout statique : nécessite de recompiler Apache à chaque ajout ou suppression de module ° Allocation dynamique : nécessite le module mod_dso ° Les RPMs d’apache pour les versions supérieures à Redhat7.0 sont prévus pour une allocation dynamique des modules (DSO support)
  • 38. Par Achraf SFAXI Page 38 Les modules proposés avec Apache ° Liste : http://httpd.apache.org/docs/mod/ ° Utiliser les modules par défaut ° Ajouter des modules au fur et à mesure des besoins ° Décommenter les lignes LoadModule dans le fichier httpd.conf ° Les modules font référence à des modules dans /etc/httpd/modules qui représente un lien vers /usr/lib/httpd/modules
  • 39. Par Achraf SFAXI Page 39 Ajout de modules non livrés avec Apache ° Un catalogue des modules est disponible sur le serveur : http://modules.apache.org ° Installer le module (généralement sous forme de rpms) ° Vérifier l’emplcement du module ° Ajouter des lignes : ° LoadModule nom_module modules/mod_nom.so
  • 40. Par Achraf SFAXI Page 40 Ajout du module PHP ° Disponible sous forme de RPMs ° Installer impérativement : ° le module PHP pour apache : mod_php-<version>.rpm ° les librairies PHP : php-<version>.rpm ° Installer en fonction des besoins : ° php-pgsql-<version>.rpm ° php-mysql-<version>.rpm ° ... ° Arrêter et redémarrer Apache ° Installation très aisée, aucune modification à apporter au fichier httpd.conf
  • 41. Par Achraf SFAXI Page 41 Autres modules ° Exemple : ajout du module speling ° Ce module tente la correction d ’URL mal tapées et confond majuscules/ minuscules dans les URL ° Dans httpd.conf, décommenter : ° LoadModule speling_module modules/mod_speling.so ° mod_ssl ° mod_include ° mod_perl ° mod_python ° mod_access …
  • 42. Par Achraf SFAXI Page 42 A retenir … ° LoadModule ° /etc/httpd/modules ° /usr/lib/httpd/modules
  • 43. Par Achraf SFAXI Page 43 Unit 4 Programmation dynamique
  • 44. Par Achraf SFAXI Page 44 Plan ° Architectures ° Programmation dynamique ° Interrogation des bases de données ° PHP et Postgresql
  • 45. Par Achraf SFAXI Page 45 Architectures ° Client/serveur Requête/RéponseClient Serveur Web (mozilla,...) Protocole HTTP (apache) ° Multi-tiers Requête/RéponseClient Serveur Web SGBD(mozilla,...) Protocole HTTP (apache)
  • 46. Par Achraf SFAXI Page 46 Programmation dynamique (1) ° Scripts côté serveur : ° Le client envoi une requête ° Exécution d’un script sur le serveur ° Renvoi du résultat au client sous forme HTML ° PHP, Java, JSP, CGI, …
  • 47. Par Achraf SFAXI Page 47 Programmation dynamique (2) ° Scripts côté client ° Le client envoi une requête ° Renvoi du résultat au client sous forme HTML avec du code dynamique incorporé ° Exécution du code sur le client ° Applets, JavaScript, …
  • 48. Par Achraf SFAXI Page 48 Interrogation des bases de données ° Généralement se fait à travers une couche logicielle intermédiaire entre le langage de programmation et le SGBD cible : les middelwares. ° Un middelware définit une librairie offrant des procédures pour accéder à des SGBD. ° Fonctions de base : connexion à une base, formulation de requêtes, interrogation, traitements sur le résultat, libération de la connexion. ° Exp : ODBC, JDBC, DBI, …
  • 49. Par Achraf SFAXI Page 49 PHP et Postgresql ° Une solution open-source fiable pour la création de sites web dynamique faisant appel à des bases de données ° PHP permet l’accès en natif à des bases postgresql ° Pas de couche logicielle intermédiaire(middelware)
  • 50. Par Achraf SFAXI Page 50 PHP/Postgresql : les fonctions de base ° pg_Connect : Connexion à une base de données ° pg_Close : Fermer une connexion ° pg_Exec : Exécute une requête. ° pg_NumRows :Renvoie le nombre de tuples (enregistrements) de la requête. ° pg_Result : Renvoie la valeur d’un champ, pour un nombre d’enregistrement donné et un résultat de requête. Les numéros d’enregistrement et de champ commencent à 0.
  • 51. Par Achraf SFAXI Page 51 Unit 5 Sécurité et authentification
  • 52. Par Achraf SFAXI Page 52 Plan ° Les modes de contrôle d'accès ° Le contrôle sur les répertoires ° L'authentification : le fichier .htaccess ° Le contrôle sur les fichiers ° Le contrôle sur les URL
  • 53. Par Achraf SFAXI Page 53 3 modes de contrôle d ’accès ° Contrôle des répertoires : ° <Directory> … </Directory> ° fichier .htaccess ° Contrôle des fichiers : ° <Files> … </Files> ° Contrôle des URL : ° <Location> … </Location> ° Le serveur analyse les contrôles sur les répertoires, puis sur les fichiers et enfin sur les URL (dans l ’ordre ou elles sont déclarées dans httpd.conf).
  • 54. Par Achraf SFAXI Page 54 Le contrôle sur les répertoires(1) --AllowOverride ° AllowOverride : définit la politique d ’utilisation des fichiers .htaccess. ° None : le serveur ignore les fichiers .htaccess <Directory /var/www/html> AllowOverride None </Directory>
  • 55. Par Achraf SFAXI Page 55 Le contrôle sur les répertoires(2) --AllowOverride ° AllowOverride : définit aussi des options supplémentaires sur des répertoires du site. ° All : le serveur autorise toutes les directives citées ci-après. ° AuthConfig : autorise les directives Auth..., require, etc ° FileInfo : autorise les directives de définition des types de documents ° Indexes : autorise les directives de présentation des répertoires ° Limit : autorise les directives d'accès par machine ° Options : autorise les directives d'options
  • 56. Par Achraf SFAXI Page 56 Le contrôle sur les répertoires(3) --Options ° All : toutes les options ° ExecCGI : autorisation d ’exécuter des CGI. ° FollowSymLinks : autorisation de suivre les liens unix ° Includes : autorisation d ’utiliser des « Server-side includes ». ° IncludesNOEXEC : « Server-side includes » sans la commande #exec ou #include d ’inclusion de CGI ° Indexes : affiche le contenu du répertoire quand il n ’y a pas de page index.html ou autre
  • 57. Par Achraf SFAXI Page 57 Le contrôle sur les répertoires(4) --Options ° SymLinksIfOwnerMatch : affiche seuls les liens pour lesquels le propriétaire du fichier ou répertoire cible est le même que le propriétaire du lien (exemple lien impossible vers fichier /etc/passwd) ° Les options s ’appliquent au répertoire et à toute sa hiérarchie, exemple : <Directory /var/www/html/pica> Options Indexes FollowSymLinks </Directory>
  • 58. Par Achraf SFAXI Page 58 Le contrôle sur les répertoires(4) --les modes d'accès ° Allow from : autorisation de domaines et réseaux ° Deny from : interdiction de domaines et réseaux ° La directive Order désigne l ’ordre dans lequel les directives Allow et Deny sont évaluées. <Directory /docs>Order Deny,Allow # -->les directives Deny sont Options None Order Deny,Allow Deny from all évaluées #avant les directives Allow. #Le statut initial(par défaut) est </Directory> Allow.
  • 59. Par Achraf SFAXI Page 59 Le contrôle sur les répertoires(4) --les modes d'accès ° Order Allow,Deny les directives Allow sont évaluées avant les directives Deny. Le statut initial(par défaut) est INTERDIT. ° Order Mutual-failure : accès autorisé aux postes cités dans Allow et pas cités dans Deny. Le statut initial n’est pas connu.
  • 60. Par Achraf SFAXI Page 60 Le contrôle sur les répertoires(5) --Exemple <Directory /var/www/html> AllowOverride None Options None <Limit GET POST> Order allow,deny Allow from all </Limit> <Limit PUT DELETE> order deny,allow deny from all </Limit> <Directory>
  • 61. Par Achraf SFAXI Page 61 Le fichier .htaccess(1) ° Authentification des utilisateurs pour l'accès à certaines pages du site. ° Créé dans le répertoire des pages protégées par l'authentification. ° Authentification par utilisateurs ou groupes.
  • 62. Par Achraf SFAXI Page 62 Le fichier .htaccess(2) ° AuthName : champs commentaire. ° AuthType décrit le type d'authentification ° Basic : login et mot de passe. ° AuthUserFile définit le fichier qui stocke la déclaration des utilisateurs authorisés et leurs mots de passe. ° AuthGroupFile définit le fichier qui stocke la déclaration des utilisateurs authorisés et leurs mots de passe. ° require définit les utilisateurs ou les groupes authorisés ° group liste des groupes ° User liste des utilisateurs
  • 63. Par Achraf SFAXI Page 63 Le fichier .htaccess(3) ° Exemple de fichier .htaccess AuthName "L'INTRANET de OpenNet" AuthType Basic AuthUserFile /web/conf/securite/usagers require valid-user ° Le fichier /web/conf/securite/usagers est crée par la commande htpasswd qui crypte les mots de passe htpasswd -c /web/conf/securite/usagers bob htpasswd /web/conf/securite/usagers jane #ajout des utilisateurs bob et jane au fichier d'authentification
  • 64. Par Achraf SFAXI Page 64 Le contrôle sur les fichiers ° Interdire ou autoriser l’accès à des fichiers vérifiant un certain schéma #interdire l’accès au fichiers commençant par « .ht » (sécuriser .htaccess!!!) <Files ~ ^.ht > Order allow,deny Deny from all </Files>
  • 65. Par Achraf SFAXI Page 65 A retenir … ° Sécuriser l’accès par adresses IP ° La directive <Directory> … </Directory> ° Sécuriser l’accès par utilisateurs ° Le fichier .htaccess ° Sécuriser l’accès pour certains fichiers ° La directive <Files> … </Files>
  • 66. Par Achraf SFAXI Page 66 Unit 6 Sécurité Avancée avec SSL
  • 67. Par Achraf SFAXI Page 67 Plan ° Motivation ° Cryptographie : Notions rédumentaires ° Concepts SSL de base ° Les certificats SSL ° Obtenir un certificat SSL pour un site web ° Implémenter SSL pour la sécurisation du web
  • 68. Par Achraf SFAXI Page 68 Motivation ° Développement anarchique des réseaux et de l'interconnexion ° Développement des applications en relation avec l'Internet (e-commerce, télé-compensation, télé-travail...) ° La disponibilité des outils de crackage, d'attaque et d'usurpassion au commun des mortels (Google affiche 11500000 résultats pour le mot « crack » ) ° L'information est devenue un patrimoine économique qui se monnaye
  • 69. Par Achraf SFAXI Page 69 Cryptographie : Notions rédumentaires La cryptographie fait référence à trois notions rédumentaires à savoir : ° Le chiffrement ° Le déchiffrement ° La signature électronique
  • 70. Par Achraf SFAXI Page 70 Les types de chiffrement ° Il existe deux types de chiffrement : ° Chiffrement symétrique ° Clef secrète ° Chiffrement asymétrique ° Clef publique ° Clef privée ° La combinaison de ces deux types est, également, possible ° Le principe de la clef de session
  • 71. Par Achraf SFAXI Page 71 Exemples d'algorithmes de chiffrement ° DES (Data Encryption Standard) ° RSA (Rivest Shamir Adelman) ° PGP (Pretty Good Privacy)
  • 72. Par Achraf SFAXI Page 72 L'historique du protocole SSL ° Le protocole SSL (Secure Socket Layer) fut inventé par Netscape en collaboration avec Master Card, Bank of America et Silicon Graphics ° Il sert à sécuriser les transactions entre les serveurs web et les outils de navigation ° Au milieu de l'année 2001, le brevet de SSL appartenant jusqu'alors à Netscape a été acheté par l'IETF (Internet Engineering Task Force) et a été rebaptisé TLS (Transport Layer Security)
  • 73. Par Achraf SFAXI Page 73 SSL :Principe(1) ° Le protocole SSL agit de bout en bout ° Il peut être assimilé à une couche supplémentaire qui se place entre la couche transport et la couche application ° Toutes les applications classiquement utilisées au dessus de TCP peuvent profiter du protocole SSL ° POP3S (995), IMAPS (993), LDAPS (636), HTTPS (443), etc...
  • 74. Par Achraf SFAXI Page 74 SSL : Principe (2)
  • 75. Par Achraf SFAXI Page 75 Fonctionnement Le protocole SSL est scindé en deux sous couches : ° SSL Record Protocol (la sous couche basse) ° S'appuye sur la couche TCP ° Elle assure l'encapsulation des éléments des couches supérieures ° SSL Handshake Protocol
  • 76. Par Achraf SFAXI Page 76 La sous couche SSL Handshake Protocol ° La sous couche « SSL Handshake Protocol » est responsable de la négociation et le choix des paramètres de session ° (e.g)s de paramètres de sessions : ° Identificateur de session ° Certificats X509 des partenaires ° Méthode de compression des données ° Algorithme de chiffrement choisi
  • 77. Par Achraf SFAXI Page 77 Le choix de l'algorithme de chiffrement ° Il détermine l'apptitude du cryptgramme à supporter à des tentatives de cassage ° Le choix correspond à l'algorithme ayant la plus grande taille de clef (parmis les algorithmes communs au client et au serveur)
  • 78. Par Achraf SFAXI Page 78 Les certificats SSL :Besoin ° La clef publique est publiée sur un annuaire LDAP ou un site web personnel (chiffrement asymétrique) ° Nécessité de garantir ° L'appartenance de clef à la personne avec laquelle les échanges sont envisagées ° L'honnêteté du possesseur de la clef ° La validité de la clef ° Rôle de l'autorité de certification
  • 79. Par Achraf SFAXI Page 79 Qu'est ce qu'un certificat ° Un petit fichier ° Carte d'identité de la clef publique ° Un document électronique résultant d'un traitement fixant les relations entre une clef publique, son propriétaire et une application
  • 80. Par Achraf SFAXI Page 80 Contenu d'un certificat(1) ° Selon le standard X509 de l'UIT – RFC 2459, un certificat est constitué de deux parties : ° Une partie contenant des informations ° Une partie contenant la signature de l'autorité de certification
  • 81. Par Achraf SFAXI Page 81 Contenu d'un certificat (2)
  • 82. Par Achraf SFAXI Page 82 Contenu d'un certificat (3)
  • 83. Par Achraf SFAXI Page 83 Vérification d'un certificat
  • 84. Par Achraf SFAXI Page 84 Autorité de Certification ° Une AC est une organisation qui délivre les certificats à une population ° Une AC possède, à son tour, un certificat ° L'AC utilise sa clef privée pour générer des certificats ° Une AC peut être organisationnelle, spécifique à un corps de métiers (notaires) ou institutionnelle ° Les certificats sont limités à un organisme, à un ensemble d'organisme ou à une communauté
  • 85. Par Achraf SFAXI Page 85 Sécuriser le web :Principe de Fonctionnement(1) ° Le navigateur demande une page web sécurisée ° Le serveur web émet sa clef publique et son certificat ° Le navigateur vérifie : ° La validité du certificat ° La fiabilité de l'authorité de certification ° La correspondance entre le certificat et le site sujet de la connexion
  • 86. Par Achraf SFAXI Page 86 Principe de Fonctionnement (2) ° Le navigateur chiffre ° La clef de session avec la clef publique du serveur ° L'url demandée et les données http avec la clef de session ° Le serveur déchiffre ° La clef de session avec la clef publique du serveur ° L'url demandée et les données http avec la clef de session
  • 87. Par Achraf SFAXI Page 87 Principe de Fonctionnement (3) ° Le serveur renvoie le document html et les données http chiffrées avec la clef de session ° Le navigateur déchiffre l'ensemble avec la clef de session
  • 88. Par Achraf SFAXI Page 88 Le web sécurisé sous Mozilla ° Sous Mozilla, la communication avec un serveur web sécurisé par SSL se manifeste par: ° Une url commencçant par « https:// » ° Un cadenas verouillé en bas de page à droite
  • 89. Par Achraf SFAXI Page 89 Implémentation de SSL(1) ° Vérifier que Apache est installé et que le service httpd est actif ° Vérifier que le package Openssl est installé ° Installer le package mod_ssl ° Générer une clef privée (nom_clef.key) ° Générer une clef publique (nom_clef.csr) ° Générer un certificat X.509 (nom_clef.crt)
  • 90. Par Achraf SFAXI Page 90 Implémentation de SSL (2) ° Copier les fichiers obtenus vers les répertoires suivants : ° /etc/httpd/conf/ssl.key/ ° /etc/httpd/conf/ssl.csr/ ° /etc/httpd/conf/ssl.crt/ ° Modifier le fichier /etc/httpd/conf.d/ssl.conf de façon que les directives SSLCertificateFile, SSLCertificateKeyFile et SSLCACertificateFile pointent vers les fichiers que vous avez généré ° Relancer le service httpd
  • 91. Par Achraf SFAXI Page 91 Obtenir un certificat pour un site web ° Contacter une autorité de certification ° Accomplir les modalités administratives et législatives (elles varient selon le pays et la CA) ° Publier votre clef publique au sein d'un annuaire LDAP ou sur votre site web