User Tools

Site Tools


formationsecurite:apache

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
formationsecurite:apache [2011/12/28 16:43]
127.0.0.1 external edit
formationsecurite:apache [2013/01/30 17:52] (current)
Line 2: Line 2:
  
  
-== Pre-requis ==+====== Pré-requis ​======
  
-=== Slackware ===+===== Slackware ​=====
 Installer Slackware en sélectionnant le service httpd Installer Slackware en sélectionnant le service httpd
  
Line 19: Line 19:
 <​code>​chmod a-x /​etc/​rc.d/​rc.httpd</​code>​ <​code>​chmod a-x /​etc/​rc.d/​rc.httpd</​code>​
  
-=== ((/​[[UbuntuLinux]] ​Ubuntu)) ===+===== Ubuntu ​=====
  
 Vérifier qu'​Apache n'est pas installé: Vérifier qu'​Apache n'est pas installé:
Line 29: Line 29:
  
  
-== Installation ==+====== Installation ​======
  
 On va chercher les sources la version 2.0.54: On va chercher les sources la version 2.0.54:
Line 50: Line 50:
  
  
-== Configuration ==+====== Configuration ​======
 <​code>​cd /​usr/​local/​apache2/​conf <​code>​cd /​usr/​local/​apache2/​conf
 ls</​code>​ ls</​code>​
Line 60: Line 60:
  
 <​code>​DocumentRoot "/​usr/​local/​apache2/​htdocs"</​code>​ <​code>​DocumentRoot "/​usr/​local/​apache2/​htdocs"</​code>​
-C'est le répertoire root d'​apache,​ là où il ira si je surfe sur ~http://​localhost/​+C'est le répertoire root d'​apache,​ là où il ira si je surfe sur http://​localhost/​
  
 <​code>​DirectoryIndex index.html index.html.var</​code>​ <​code>​DirectoryIndex index.html index.html.var</​code>​
Line 66: Line 66:
  
  
-== Utilisation ==+====== Utilisation ​======
 Vérifier que la version qu'on a désinstallée ne tourne plus: Vérifier que la version qu'on a désinstallée ne tourne plus:
 <​code>​ ps ax | grep httpd</​code>​ <​code>​ ps ax | grep httpd</​code>​
Line 114: Line 114:
 <​snip></​code>​ <​snip></​code>​
  
-Ici, c'est un output sous /[[UbuntuLinux]].+Ici, c'est un output sous [[:​ubuntulinux]].
  
 Quand on est certain qu'​Apache ne tourne plus, on peut lancer celui qu'on a compilé: Quand on est certain qu'​Apache ne tourne plus, on peut lancer celui qu'on a compilé:
Line 122: Line 122:
  
  
-=== Exercice 1 === +===== Exercice 1 ===== 
-Faire une page qui s'​affiche quand on surfe sur ~http://​127.0.01/​+Faire une page qui s'​affiche quand on surfe sur http://​127.0.01/​
  
-il suffit de sauver une page [[HTML]] comme /​usr/​local/​apache2/​htdocs/​index.html+il suffit de sauver une page [[:HTML]] comme /​usr/​local/​apache2/​htdocs/​index.html
  
  
-=== Directory ===+===== Directory ​=====
  
 Pour mettre des permissions et des options sur des répertoires,​ on utilise la directive: Pour mettre des permissions et des options sur des répertoires,​ on utilise la directive:
Line 135: Line 135:
 Si on ne définit pas ceci pour un répertoire,​ apache prend les paramètres du parents. Si on ne définit pas ceci pour un répertoire,​ apache prend les paramètres du parents.
  
-=== Error handling ===+===== Error handling ​=====
 On peut customiser les erreurs. On peut customiser les erreurs.
 Dans le fichier httpd.conf, vers la ligne 880, il y a un section avec des exemples, comme ceci: Dans le fichier httpd.conf, vers la ligne 880, il y a un section avec des exemples, comme ceci:
 <​code>​ErrorDocument 404 /​missing.html</​code>​ <​code>​ErrorDocument 404 /​missing.html</​code>​
  
-=== Protection par mot de passe ===+===== Protection par mot de passe =====
  
 Il faut rajouter dans le répertoire un fichier .htaccess. Il faut rajouter dans le répertoire un fichier .htaccess.
Line 154: Line 154:
 ==== Exercice 2 ==== ==== Exercice 2 ====
 Créer un répertoire protégé. Créer un répertoire protégé.
-Je crée un répertoire ​~http://​localhost/​secret/​ accessible uniquement par l'​utilisateur joe+ 
 +Je crée un répertoire http://​localhost/​secret/​ accessible uniquement par l'​utilisateur joe.
  
 <​code>​./​htpasswd -b -c /​usr/​share/​htpasswd joe toto</​code>​ <​code>​./​htpasswd -b -c /​usr/​share/​htpasswd joe toto</​code>​
Line 173: Line 174:
 <​code>​root@forma301:/​usr/​local/​apache2/​bin # ./apachectl restart</​code>​ <​code>​root@forma301:/​usr/​local/​apache2/​bin # ./apachectl restart</​code>​
  
-Tester dans un browser en allant sur ~http://​localhost/​secret/​+Tester dans un browser en allant sur http://​localhost/​secret/​
  
 Il doit il avoir une demande d'​identification. Il doit il avoir une demande d'​identification.
Line 180: Line 181:
 Dans /​usr/​local/​apache2/​htdocs/​secret/,​ ajouter un fichier .htaccess: Dans /​usr/​local/​apache2/​htdocs/​secret/,​ ajouter un fichier .htaccess:
 <​code>​AuthUserFile /​usr/​share/​htpasswd <​code>​AuthUserFile /​usr/​share/​htpasswd
-AuthName "​Uniquement pour les utilisateurs ​autorisés"+AuthName "​Uniquement pour les utilisateurs ​autorises"
 AuthType Basic AuthType Basic
 <Limit GET POST> <Limit GET POST>
Line 194: Line 195:
  
  
-== Revision ==+====== Revision ​======
  
-=== Installer apache ===+===== Installer apache ​=====
   * télécharger tar.gz   * télécharger tar.gz
   * décompresse   * décompresse
Line 203: Line 204:
   * make install   * make install
  
-===Configuration ===+===== Configuration ​=====
 Dans /​usr/​loca/​apache2/​httpd.conf Dans /​usr/​loca/​apache2/​httpd.conf
  
Line 215: Line 216:
   * blocs directory: permissions et options de sous-répertoires ​ de la racine (document root)   * blocs directory: permissions et options de sous-répertoires ​ de la racine (document root)
  
-=== Limitation d'​acces ===+===== Limitation d'​acces ​=====
 Avec les fichiers .htaccess et htpasswd. Avec les fichiers .htaccess et htpasswd.
  
Line 231: Line 232:
 ---- ----
  
-== Configuration (suite) ==+====== Configuration (suite) ​======
  
-=== Permissions ===+===== Permissions ​=====
  
 <​code>​Order Allow,Deny <​code>​Order Allow,Deny
Line 241: Line 242:
 <​code>​Order Deny,Allow <​code>​Order Deny,Allow
 Deny 123.123.123.123</​code>​ Deny 123.123.123.123</​code>​
-Le serveur ne répond pas aux requêtes provenant de l'IP123.123.123.123,​ il répond à toutes les autres.+Le serveur ne répond pas aux requêtes provenant de l'IP 123.123.123.123,​ il répond à toutes les autres.
  
  
-== Virtual Hosts ==+===== Virtual Hosts =====
  
 Hôtes virtuels: Hôtes virtuels:
Line 252: Line 253:
   * plusieurs noms de domaines pour une même IP   * plusieurs noms de domaines pour une même IP
  
-=== Par IP ===+==== Par IP ====
 <​code><​VirtualHost 10.101.10.221:​80>​ <​code><​VirtualHost 10.101.10.221:​80>​
     ServerAdmin webmaster@dummy-host.example.com     ServerAdmin webmaster@dummy-host.example.com
Line 261: Line 262:
 </​VirtualHost></​code>​ </​VirtualHost></​code>​
  
-Pour les autres, il suffit de changer l'IP et de mettre un autre ~ServerName.+Pour les autres, il suffit de changer l'IP et de mettre un autre ServerName.
  
 N.B: Il faut avoir configuré les IP au niveau réseau. N.B: Il faut avoir configuré les IP au niveau réseau.
  
-=== Par nom ===+==== Par nom ====
 cf. exercice 3. cf. exercice 3.
  
-== Exercice 3 == +=== Exercice 3 === 
-Faire en sorte qu'​Apache réponde à 2 sites web avec les URLs ~http://​carl.salle3.be/​ et à ~http://​carl.toto.be/​+Faire en sorte qu'​Apache réponde à 2 sites web avec les URLs http://​carl.salle3.be/​ et à http://​carl.toto.be/​
  
 N.B: on précise l'IP correspondant au nom de machine dans /etc/hosts. N.B: on précise l'IP correspondant au nom de machine dans /etc/hosts.
Line 303: Line 304:
  
  
-== Exercice 3bis == +=== Exercice 3bis === 
-Ajouter une IP à sa carte et mettre un 3e site:+Ajouter une IP à sa carte réseau ​et mettre un 3e site:
  
   * monter une IP virtuelle (2e IP pour eth0)   * monter une IP virtuelle (2e IP pour eth0)
Line 320: Line 321:
   * redémarre le serveur web:   * redémarre le serveur web:
   <​code>/​usr/​local/​apache2/​bin/​apachectl restart</​code>​   <​code>/​usr/​local/​apache2/​bin/​apachectl restart</​code>​
-  * pointer le browser sur ~http://​10.10.3.201 ou ~http://​carl.site.com/​+  * pointer le browser sur http://​10.10.3.201 ou http://​carl.site.com/​
  
 Pour écouter sur 2 ports: Pour écouter sur 2 ports:
Line 345: Line 346:
  
  
-== SSL ==+====== SSL ======
 Secure socket layer. Secure socket layer.
 Les requêtes HTTPS sont encryptées. Les requêtes HTTPS sont encryptées.
Line 360: Line 361:
  
 Quand on surfe sur un site sécurisé par SSL (avec le protocole ​ Quand on surfe sur un site sécurisé par SSL (avec le protocole ​
-  * [[Connexion]]: qui es-tu? + clef publique+  * Connexion: qui es-tu? + clef publique
   * le serveur web envoie le certificat (crt) + clef publique   * le serveur web envoie le certificat (crt) + clef publique
   * le browser génère une clef symétrique avec le CRT   * le browser génère une clef symétrique avec le CRT
   * la connexion est établie avec la clef symétrique le temps de la session   * la connexion est établie avec la clef symétrique le temps de la session
  
-L'​utilisation de clefs privées et publiques prend 1000 fois plus de ressources processeur que l'​utilisation d'une clef symétrique+L'​utilisation de clefs privées et publiques prend 1000 fois plus de ressources processeur que l'​utilisation d'une clef symétrique.
  
-=== Creation d'un certificat (serveur) ===+===== Creation d'un certificat (serveur) ​=====
 Pays et adresse email obligatoire. Pays et adresse email obligatoire.
  
 On doit d'​abord générer un certificat X509. On fait cela à l'aide de la commande openssl: On doit d'​abord générer un certificat X509. On fait cela à l'aide de la commande openssl:
 <​code>​openssl req -nodes -new -x509 -keyout fichier.key -out fichier.crt</​code>​ <​code>​openssl req -nodes -new -x509 -keyout fichier.key -out fichier.crt</​code>​
-où fichier.key est la clef privée (qui est générée par la commande) +  * où fichier.key est la clef privée (qui est générée par la commande) 
-et fichier.crt est le certificat qu'on veut générer. +  ​* ​et fichier.crt est le certificat qu'on veut générer. 
-Les 2 sont sauvés dans le répertoire courant. +  ​* ​Les 2 sont sauvés dans le répertoire courant.
- +
-Ceci créée un certificat auto-signé. C'est le certificat du serveur de clefs. +
  
 +Ceci crée un certificat auto-signé. C'est le certificat du serveur de clefs.
  
 Exemple: Exemple:
Line 406: Line 405:
 -rw-r--r-- ​ 1 carl carl   887 2005-04-21 13:48 ssl_carl.key</​code>​ -rw-r--r-- ​ 1 carl carl   887 2005-04-21 13:48 ssl_carl.key</​code>​
  
-Ceci pour l'​entité (= test CA root dans ((IIS)) qu'on a généré chez Thawte)+Ceci pour l'​entité (= test CA root dans IIS qu'on a généré chez Thawte)
  
-=== Creation d'​une ​requete ​de certificat (client) ===+===== Creation d'​une ​requête ​de certificat (client) ​=====
 Ensuite, on génère une demande de certificat (sur le client, ici la même machine). Ensuite, on génère une demande de certificat (sur le client, ici la même machine).
-cf. Wizard demande de certificat dans [[Windows]] 2000.+ 
 +cf. Wizard demande de certificat dans Windows 2000.
  
 <​code>​openssl req -nodes -new -keyout site.wow.be.key -out site.wow.be.csr</​code>​ <​code>​openssl req -nodes -new -keyout site.wow.be.key -out site.wow.be.csr</​code>​
Line 450: Line 450:
 An optional company name []:​Technofutur3</​code>​ An optional company name []:​Technofutur3</​code>​
  
-=== Signature de la requete ​(client) par le serveur ===+===== Signature de la requête ​(client) par le serveur ​=====
 Finalement, on signe la requête pour qu'​elle soit valide. Finalement, on signe la requête pour qu'​elle soit valide.
  
Line 462: Line 462:
  
 <​code>​openssl ca -cert CA.wow.be.crt -keyfile CA.wow.be.key -out site.wow.be.crt -in site.wow.be.csr</​code>​ <​code>​openssl ca -cert CA.wow.be.crt -keyfile CA.wow.be.key -out site.wow.be.crt -in site.wow.be.csr</​code>​
-où CA.wow.be.crt est le certificat du serveur, +  * où CA.wow.be.crt est le certificat du serveur, 
-CA.wow.be.key est la clef privée du serveur, +  ​* ​CA.wow.be.key est la clef privée du serveur, 
-site.wow.be.crt est le certificat du client (site web) +  ​* ​site.wow.be.crt est le certificat du client (site web) 
-et site.wow.be.csr est la requête pour le client (site web)+  ​* ​et site.wow.be.csr est la requête pour le client (site web)
  
 Exemple: Exemple:
Line 504: Line 504:
 Data Base Updated</​code>​ Data Base Updated</​code>​
  
-=== Configuration de SSL dans Apache ===+===== Configuration de SSL dans Apache ​=====
  
 Modifier httpd.conf. Modifier httpd.conf.
Line 540: Line 540:
 </​VirtualHost></​code>​ </​VirtualHost></​code>​
  
-=== Principe de fonctionnement ===+===== Principe de fonctionnement ​=====
   * le client se connecte au serveur   * le client se connecte au serveur
   * le site web renvoie son certificat   * le site web renvoie son certificat
Line 549: Line 549:
 22/04/05 22/04/05
  
-== [[PHP]] ==+====== PHP ======
  
 Sous Ubuntu, il faut installer les packages suivants: Sous Ubuntu, il faut installer les packages suivants:
 <​code>​sudo aptitude install flex libxml2-dev mysql-server libmysqlclient12-dev</​code>​ <​code>​sudo aptitude install flex libxml2-dev mysql-server libmysqlclient12-dev</​code>​
-cf. ((http://​www.ubuntulinux.org/​wiki/​PHP5FromSource PHP5 from source))+cf. [[http://​www.ubuntulinux.org/​wiki/​PHP5FromSourcePHP5 from source]]
  
   * télécharger [[PHP]] 5.0.4   * télécharger [[PHP]] 5.0.4
Line 588: Line 588:
 ?></​code>​ ?></​code>​
  
-Le sauver dans la racine ​~RootDocument:​ /​usr/​local/​apache2/​htdocs/​+Le sauver dans la racine RootDocument:​ /​usr/​local/​apache2/​htdocs/​
  
-Surfer sur ~http://​localhost/​test.php+Surfer sur http://​localhost/​test.php
  
  
-=== Installer un forum === +===== Installer un forum ===== 
-Télécharger ​~phpBB http://​www.phpbb.com/​downloads.php+Télécharger phpBB http://​www.phpbb.com/​downloads.php
 <​code>​wget http://​belnet.dl.sourceforge.net/​sourceforge/​phpbb/​phpBB-2.0.14.tar.bz2</​code>​ <​code>​wget http://​belnet.dl.sourceforge.net/​sourceforge/​phpbb/​phpBB-2.0.14.tar.bz2</​code>​
  
Line 600: Line 600:
 <​code>​tar xjf phpBB-2.0.14.tar.bz2</​code>​ <​code>​tar xjf phpBB-2.0.14.tar.bz2</​code>​
  
-copier dans l'​arborescence ​~DocumentRoot+copier dans l'​arborescence DocumentRoot
  
 Créer la base de données: Créer la base de données:
Line 606: Line 606:
 <​code>​mysql>​ create database phpbb;</​code>​ <​code>​mysql>​ create database phpbb;</​code>​
  
-Se rendre sur le site: ~http://​carl.salle3.be/​phpBB2/​+Se rendre sur le site: http://​carl.salle3.be/​phpBB2/​
  
 Remplir les champs (database login: root, password à blanc). Remplir les champs (database login: root, password à blanc).
Line 612: Line 612:
 Télécharger le fichier config.php (en cliquant sur le bouton). Télécharger le fichier config.php (en cliquant sur le bouton).
  
-Copier le fichier dans le répertoire ​~phpBB:+Copier le fichier dans le répertoire phpBB:
 <​code>​cp config.php /​usr/​local/​apache2/​htdocs/​phpBB/</​code>​ <​code>​cp config.php /​usr/​local/​apache2/​htdocs/​phpBB/</​code>​
  
Line 619: Line 619:
 mv /​usr/​local/​apache2/​htdocs/​phpBB/​contrib /​tmp/</​code>​ mv /​usr/​local/​apache2/​htdocs/​phpBB/​contrib /​tmp/</​code>​
  
-Surfer sur le site: ~http://​carl.salle3.be/​phpBB2/​+Surfer sur le site: http://​carl.salle3.be/​phpBB2/​
  
-S'​identifier comme administrateur. +  * S'​identifier comme administrateur. 
-Cliquer sur le lien "Go to Administration Panel" en bas au milieu. +  ​* ​Cliquer sur le lien "Go to Administration Panel" en bas au milieu. 
-Configuer. +  * Configurer 
-Utiliser.+  ​* ​Utiliser
  
-== Documentation == +====== Documentation ​====== 
-  * ((http://​httpd.apache.org/​docs-2.0/​howto/​ How-To / Tutorials)) (officiels) +  * [[http://​httpd.apache.org/​docs-2.0/​howto/​How-To / Tutorials]] (officiels) 
-  * ((http://​www.labo-linux.com/​index.php?​page=essentiels&​id=435 Laboratoire des technologies Linux de Supinfo: Apache)) +  * [[http://​www.labo-linux.com/​index.php?​page=essentiels&​id=435Laboratoire des technologies Linux de Supinfo: Apache]]
-  ​+
formationsecurite/apache.txt · Last modified: 2013/01/30 17:52 (external edit)