08 01 mise en place d'un serveur web

Embed Size (px)

Citation preview

Mise en place d'un serveur web

Nol Mac

Formateur et Consultant indpendant expert Unix et FOSS

http://www.noelmace.com

Mise en place d'un serveur webServices web

Licence Creative Commons

Ce(tte) uvre est mise disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Partage dans les Mmes Conditions 3.0 France.

Plan

IntroductionApache

MPM: prefork ou worker?

Virtual Hosts

Configurationhttpd.conf: exemple

Options du serveur Apache

Contrle des rpertoires

Logging

ModularitChargement d'un module Apache

mod_perlInstaller mod_perl

PHP

Authentification et autorisationMise en place

Gestion des comptes
utilisateur

Protection d'un dossier
par DAC

Protection d'un dossier
par MAC

apache2ctl

Bonus: les outils Debian

Introduction

Un des services primordiaux d'Internetcertainement le plus connu du grand public

beaucoup confondant World Wide Web et Internet

HTTPHyperText Transfer Protocol

Permettre aux utilisateurs daccder des donnes (pages web) sur un serveurvia un client web (ex: Firefox)

Apache

N en avril 1995ensemble de correctifs NCSA HTTPd (du domaine publique)leader de l'poque (plus de55% de parts de march)

"mort" (0%) en juillet 1999

Totalement rcrit en 2000 pour la version 2plus aucune trace de NCSA HTTPd

Libre (Licence Apache)v2.0 (compatible GPL v3) depuis Janvier 2004

Multi-plateformeGNU/Linux, Mac OS X, BSD, Solaris, Windows

LE serveur web de rfrence depuis avril 199654% de parts de march sur les sites actifs en avril 2013 selon netcraft.comcontre 13% pour Nginx, plus lger et performant, qui connat une progression certaine depuis 2007

12% pour Microsoft-IIS et 8% pour Google Servers

LAMP: Linux, Apache, MySQL, PHP

MPM: prefork ou worker?

Multi-Processing ModuleMoteur de serveur: interprte les requtes"duplique" apache

afin de rpondre plusieurs requtes simultanment2 principaux paquets: apache2-mpm-prefork ou worker

WorkerMulti-threading: un thread par connexion

Meilleures performancespas ou peu de commutation de contexte

ncessite des modules compatiblesexclue mod_php

PreforkMode historique (apache 1.3)

multi-processing: un processus par connexion

Meilleure isolation / Faibles performances

Virtual Hosts

Hberger plusieurs sites sur un mme serveur

Deux types:IP basedNcessite plusieurs interfaces (ou routage)

Named basedRpond en fonction de l'url appele

Configurs dans httpd.confou /etc/apache2/sites-available/ sur Debian et drivs

cf cours suivant

Configuration

Dans (suivant la distribution):/etc/apache/config/

ou /etc/apache2/

ou /etc/httpd/config/

httpd.conf (ou apache2.conf)fichier de configuration principalsoit spar en plusieurs parties (cf "Include")

soit d'un bloc

s'applique tout le serveur

3 parties:global environmentconfiguration gnrale du serveur

paramtres du serveur par dfautrequtes non gres par un virtual host

configuration des virtuals hosts

fichiers .htaccesspermettent une configuration spcifique pour chaque dossier

utiliser avec prudenceuniquement si vous devez sparer la configuration de certains contextes du fichier principalie: interdire le droit d'accs httpd.conf certains administrateurs

En gnral, vous ne devriez jamais utiliser les fichiers .htaccess moins que vous n'ayez pas accs au fichier principal de configuration du serveur. Il y a, par exemple, une conception errone qui prvaut selon laquelle les droits des utilisateurs doivent toujours tre grs dans le fichier .htaccess. Cela n'est simplement pas le cas. Vous pouvez placer les configurations des droits dans la configuration principale du serveur, et cela est, en fait, la manire favorise de le faire. - Documentation Apache

httpd.conf: exemple

un exemple sur internet

Options du serveur Apache

Premire section du fichier httpd.confnombreuses options de type cl valeur

Nombre maximum de requtes simultanes autorises

Nombre de serveurs lancer au dmarrage

Nombre minimal et maximal de serveurs "en attente"

trop bas perte de performance / trop haut consommation excessive de ressources

nombre maximal de connections (de clients) simultanesie: nombre maximal de serveurs

MaxKeepAliveRequests 100

StartServers 5

MaxKeepAliveRequests 100

MinSpareServers 5MaxSpareServers 10

Contrle des rpertoires

Regrouper des directives pour qu'elles ne s'appliquent qu'au rpertoire concern

Exemple

voir: https://httpd.apache.org/docs/current/mod/core.html#directory

...

Options Indexes FollowSymLinks

Logging

gnralement dans /var/log/apache2 ou httpd

Configuration (httpd.conf)Messages d'erreurs

Niveau de logging des messages d'erreurs

Dans l'odre: debug, info, notice, warn, error, crit, alert et emerg

Accs au serveur

Pour aller plus loin: Documentation Apache des Logs

ErrorLog ${APACHE_LOG_DIR}/error.log

Loglevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog ${APACHE_LOG_DIR}/access.log

Modularit

Apache repose sur une architecture modulairesimilaire celle du kernel Linux

permet l'administrateur de choisir les fonctionnalits inclure

DSOs (Dynamic Shared Objects)Objets Dynamiques Partags

spars du fichier binaire principal httpd

soit compils en mme temps que le serveurpeuvent tre intgrs statiquement dans le binaire httpd

soit ajouts ultrieurementgrce apxs (Apache Extension Tool)

$ cd /chemin/vers/module_tiers$ apxs -cia mod_foo.c

$ ./configure --prefix=/chemin/vers/installation --enable-foo$ make install

Chargement d'un module Apache

Dans le fichier httpd.conf

Remarque(pour ceux ayant travaill sous Apache1):la directive AddModule n'est plus ncessaire

Exemple

Comportement conditionnel pour un module

LoadModule module filename

LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so

mod_perl

Interprteur Perl pour Apachepermet, grce des scripts Perl, de: produire du contenu dynamique

grer Apache

et bien d'autres choses encore

sans faire appel un interprteur externegain de performance significatif

accs complet l'API Apache

"mod_perl is more than CGI scripting on steroids. It is a whole new way to create dynamic content by utilizing the full power of the Apache web server to create stateful sessions, customized user authentication systems, smart proxies and much more. Yet, magically, your old CGI scripts will continue to work and work very fast indeed. With mod_perl you give up nothing and gain so much!" - Lincoln Stein, un des principaux contributeurs de mod_perl

Installer mod_perl

Sous Debian:

Sous CentOS:

Pour aller plus loin:installation: https://perl.apache.org/docs/2.0/user/install/install.html

configuration: https://perl.apache.org/docs/2.0/user/config/config.html

# apt-get install libapache2-mod-perl2

# yum install mod_perl

PHP

Langage de script, cot serveur, orient Web et multi-plateformeune rfrence (cf LAMP)

Pour tester l'installation, crer une PHP info page

Pour aller plus loin: documentation complte de l'installation

# apt-get install libapache2-mod-php5

# yum install php

# echo -e "" > /var/www/html/info.php

Authentification et autorisation

Deux mthodes:discretionary access control (DAC) - Contrle d'accs discrtionnaireo "un sujet avec une certaine autorisation d'accs est capable de transmettre cette permission (peut-tre indirectement) n'importe quel autre sujet" - Trusted Computer System Evaluation Criteria

ici: login + mot de passe

mandatory access controls (MAC) - Contrle d'accs obligatoiredcisions de protections imposes (non prises par les objets concerns)

ici: Adresse IP, nom d'hte, etc

Gr par des modulesmod_auth_basic: le plus courant - stock les informations dans des fichiers textemod_auth_dbd: stockage dans une base SQL

mod_auth_dbm: stockage dans des fichiers sous un format DBM

mod_auth_digest: authentification base sur les condenss MD5

mod_auth_anon: comportement similaire un FTP anonymis

mod_authz_host : restriction de l'accs en fonction du nom d'hte ou de l'ip (depuis 2.3)pour les versions prcdentes, voir mod_access

Pour aller plus loin: https://httpd.apache.org/docs/current/howto/auth.html

Mise en place

Soit dans httpd.conf (recommand)directives ou

Soit dans des fichiers .htaccessdans le rpertoire contrler

non recommand

Pour autoriser la surcharge de ces directives

peu concerner les .htaccess, les sous-rpertoires avec , et autres

AllowOverride AuthConfig

Gestion des comptes utilisateur

Cration d'un utilisateur

-c pour crer automatiquement le fichier si n'existe pasle fichier ne DOIT pas tre accessible aux autres utilisateurset encore moins au web!

Supprimer un utilisateur

Crer un ou plusieurs groupes d'utilisateursCrer un fichier de groupe selon la syntaxe suivante

# htpasswd [-c] /usr/local/apache/passwd/passwords monutilisateur

# htpasswd -D /usr/local/apache/passwd/passwords monutilisateur

Nom-de-groupe: user1 user2 user3

Protection d'un dossier par DAC

Dans une directive ou un fichier .htaccess dans le dossier

Autoriser l'accs tout les utilisateurs enregistrs

AuthType Basic# message afficher

AuthName "Restricted Files"

AuthBasicProvider file

AuthUserFile /usr/local/apache/passwd/passwords

AuthGroupFile /usr/local/apache/passwd/groups

Require user monutilisateur

Require group mongroupe

Require valid-user

Protection d'un dossier par MAC

adresse IP

sous-rseauip partielle

rseau / masque

Require ip 10.1.2.3

Require ip 192.168.1.104 192.168.1.205

Require ip 10.1

Require ip 10 172.20 192.168.2

Require local

Require ip 10.1.0.0/255.255.0.0

Require ip 10.1.0.0/16

Require host example.org

Require host .net example.edu

Hte

Local

Grce au module mod_authz_host

Dans une directive ou un fichier .htaccess dans le dossier

apache2ctl

Interface de contrle du dmon Apache

Commandesstart

stop

restart

fullstatus: statut complet partir de mod_statusncessite un navigateur web texte (comme Lynx)

url d'accs modifiable (variable STATUSURL)

status: idem, sans la liste des requtes actuellement traites

graceful: redmarrage par l'envoi d'un SIGUSR1ne clos pas les connections actuellement ouvertes

configtest: teste de syntaxe des fichiers de configuration

help

# apache2ctl [commande] ...

Bonus: les outils Debian

activer / dsactiver un site

cr / supprimer un lien symbolique de sites-availables/site dans sites-enables

activer / dsactiver un module

cr / supprimer un lien symbolique de sites-availables/site dans sites-enables

$ a2dismod [module]

$ a2enmod [module]

$ a2ensite [site]

$ a2dissite [site]

Ce quon a couvert

Installation et configuration de Apache2httpd.conf et .htaccess

fichiers journaux

nombre maximum de requtes, nombres minimums et maximums de serveurs et de clients

Gestion des modulesmod_perl

mod_php

mod_authhtpasswd

Apache2ctl


Weight: 3 Description: Candidates should be able to install and configure a web server. This objective includes monitoring the server's load and performance, restricting client user access, configuring support for scripting languages as modules and setting up client user authentication. Also included is configuring server options to restrict usage of resources.

208.1 Implementing a web server

Licence

Ce(tte) uvre (y compris ses illustrations, sauf mention explicite) est mise disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Partage dans les Mmes Conditions 3.0 France.Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ ou crivez :
Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.Vous tes libre de: partager reproduire, distribuer et communiquer cette uvre

remixer adapter luvre

Selon les conditions suivantes :Attribution Vous devez clairement indiquer que ce document, ou tout document driv de celui, est (issu de) luvre originale de Nol Mac (noelmace.com) (sans suggrer qu'il vous approuve, vous ou votre utilisation de luvre, moins d'en demander expressment la permission).

Pas dUtilisation Commerciale Vous navez pas le droit dutiliser cette uvre des fins commerciales (ie. l'intention premire ou l'objectif d'obtenir un avantage commercial ou une compensation financire prive). Pour obtenir ce droit, une autorisation explicite de l'auteur est requise.

Partage dans les Mmes Conditions Si vous modifiez, transformez ou adaptez cette uvre, vous navez le droit de distribuer votre cration que sous une licence identique ou similaire celle-ci.

Pour toute demande de collaboration, d'utilisation commerciale ou de publication de ce support ou d'un driv de celui-ci sous une licence incompatible, contacter l'auteur via les contacts indiqus sur le site http://www.noelmace.com. Vous tes par ailleurs vivement encourag (sans obligation lgale) communiquer avec celui-ci si vous ralisez une uvre drive ou toute amlioration de ce support.

Linux LPIC2 noelmace.com

Linux LPIC2 noelmace.com

Linux LPIC2 noelmace.com