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)