Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:reseau:apache2:tp01 [25/09/2014 12:59] Hypathie [Sécuriser son site web] |
doc:reseau:apache2:tp01 [01/11/2019 08:43] (Version actuelle) smolski [Créer un site web avec apache2.2 sous Debian 7] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Créer un site web avec apache2====== | + | ====== Créer un site web avec apache2.2 sous Debian 7====== |
- | * Objet : installation et configuration d'apache2 | + | * Objet : installation et configuration d'apache2.2 |
* Niveau requis : {{tag>débutant avisé}} | * Niveau requis : {{tag>débutant avisé}} | ||
- | * Commentaires : Apprendre à configurer un serveur web sur son réseau local. | + | * Commentaires : Apprendre à configurer un serveur web sur son réseau local sous Debian 7. |
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) |
- | * Suivi : {{tag> à-tester à-placer}}. | + | * Suivi : {{tag>obsolète}} |
- | * Création par [[user>Hypathie]] 20/09/2014 | + | * Création par [[user>Hypathie]] le 20/09/2014 |
- | * Testé par <...> le <...> | + | * Testé par [[user>Hypathie]] octobre 2014 sur Wheezy |
- | * Commentaires sur le forum : [[:http://debian-facile.org/viewtopic.php?pid=98170#p98170| Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | + | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=98170#p98170| Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
- | **Nota : Ce wiki est écrit par une débutante ** | ||
- | Contributeurs, merci de compléter/vérifier [[atelier:chantier:apache2?&#verifier-l-appartenance-et-les-droits-des-fichiers-utilises-par-apache|la partie sur les droits posix sur les fichiers utiles à apache]] ! FIXME | + | |
+ | * Référence : http://www.apache.org/ | ||
+ | |||
+ | Ce tuto traite d'Apache2.2, version proposée par Debian 7 (Wheezy). | ||
+ | |||
+ | La configuration de Apache2.4, proposée par Debian 8 (Jessie) est significativement différente. Il vaut donc mieux ne pas se référer à ce tutoriel à son sujet. | ||
===== Introduction ===== | ===== Introduction ===== | ||
+ | |||
Ce qui est mis en œuvre ici concerne une utilisation d'un serveur apache sur un réseau local qui ne pointe pas un nom de domaine acquis mais fictif.\\ | Ce qui est mis en œuvre ici concerne une utilisation d'un serveur apache sur un réseau local qui ne pointe pas un nom de domaine acquis mais fictif.\\ | ||
**Avant tout, il faut savoir que monter un serveur web pour de l'auto-hébergement présente des risques.** Vous courrez par exemple le risque de donner un accès à tout votre réseau local à un pirate qui chercherait à prendre la main sur votre identité pour commettre des attaques illégales en votre nom.\\ | **Avant tout, il faut savoir que monter un serveur web pour de l'auto-hébergement présente des risques.** Vous courrez par exemple le risque de donner un accès à tout votre réseau local à un pirate qui chercherait à prendre la main sur votre identité pour commettre des attaques illégales en votre nom.\\ | ||
- | Ce wiki a pour objet de proposer une initiation à apache2, et déploie son installation sur une machine en vue de l'apprentissage; machine virtuelle qu'il faudra éteindre en dehors des TP, voire détruire plutôt que la laisser dans l'oubli sur un système. Dans tous les cas se documenter sur la sécurité.\\ | + | Ce wiki a pour objet de proposer une initiation à apache2, et déploie son installation sur une machine virtuelle. |
Si vous choisissez de déployer ce qui suit sur une machine réelle faisant office de serveur personnel en vue d'auto-hébergement, l'auteur et debian-facile décline toute responsabilité sur les conséquences fâcheuses qui pourraient en découler.\\ | Si vous choisissez de déployer ce qui suit sur une machine réelle faisant office de serveur personnel en vue d'auto-hébergement, l'auteur et debian-facile décline toute responsabilité sur les conséquences fâcheuses qui pourraient en découler.\\ | ||
- | Prenez le temps d'apprendre à sécuriser un serveur web avant de vous lancer dans l’auto-hébergement ! 8-) | + | Prenez le temps d'apprendre à sécuriser un serveur avant de vous lancer dans l’auto-hébergement ! 8-) |
===Pré-requis === | ===Pré-requis === | ||
Ligne 37: | Ligne 41: | ||
===Installation d'apache === | ===Installation d'apache === | ||
- | <code root>apt-get install apache2</code> | + | |
+ | <code root>apt-get update && apt-get install apache2</code> | ||
Après l'installation le serveur est fonctionnel. Si tout s'est bien passé, en tapant dans son navigateur ''http://192.168.x.xx/'', il doit s'afficher ceci: | Après l'installation le serveur est fonctionnel. Si tout s'est bien passé, en tapant dans son navigateur ''http://192.168.x.xx/'', il doit s'afficher ceci: | ||
Ligne 48: | Ligne 53: | ||
===Comment apache est-il configuré ? === | ===Comment apache est-il configuré ? === | ||
+ | |||
Afin de comprendre la mise en place d'un site web avec apache2, on va détailler la configuration par défaut d'apache.\\ | Afin de comprendre la mise en place d'un site web avec apache2, on va détailler la configuration par défaut d'apache.\\ | ||
Ligne 55: | Ligne 61: | ||
<code root>cd /etc/apache2/ && ls</code> | <code root>cd /etc/apache2/ && ls</code> | ||
- | <code>apache2.conf envvars mods-available ports.conf sites-enabled | + | <file config retour de la commande>apache2.conf envvars mods-available ports.conf sites-enabled |
- | conf.d magic mods-enabled sites-available</code> | + | conf.d magic mods-enabled sites-available</file> |
Il est à noter que le fichier /etc/apache2/apache2.conf est l'équivalent du fichier httpd.conf des distributions Linux à base de RedHat.\\ | Il est à noter que le fichier /etc/apache2/apache2.conf est l'équivalent du fichier httpd.conf des distributions Linux à base de RedHat.\\ | ||
Ligne 73: | Ligne 79: | ||
Puisque après l'installation, il a été possible d'afficher une page web d'accueil, c'est que ce répertoire contient un fichier qui le permet : | Puisque après l'installation, il a été possible d'afficher une page web d'accueil, c'est que ce répertoire contient un fichier qui le permet : | ||
- | <code root>cd sites-available/ && less default</code> | + | <code root>cd /etc/apache2/sites-available/ && less default</code> |
- | <code><VirtualHost *:80> | + | <file config retour de la commande><VirtualHost *:80> |
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Ligne 95: | Ligne 101: | ||
Order allow,deny | Order allow,deny | ||
Allow from all | Allow from all | ||
- | </Directory></code> | + | </Directory></file> |
On voit la ligne **''<Directory /var/www/>''**. C'est là le chemin du fichier qui contient le code html de la page d'accueil.\\ | On voit la ligne **''<Directory /var/www/>''**. C'est là le chemin du fichier qui contient le code html de la page d'accueil.\\ | ||
Vérifions cela. | Vérifions cela. | ||
<code root>cd /var/www && ls</code> | <code root>cd /var/www && ls</code> | ||
- | <code>index.html</code> | + | <file config retour de la commande>index.html</file> |
<code root>less index.html</code> | <code root>less index.html</code> | ||
- | <code><html><body><h1>It works!</h1> | + | <file config retour de la commande><html><body><h1>It works!</h1> |
<p>This is the default web page for this server.</p> | <p>This is the default web page for this server.</p> | ||
<p>The web server software is running but no content has been added, yet.</p> | <p>The web server software is running but no content has been added, yet.</p> | ||
- | </body></html></code> | + | </body></html></file> |
Donc le site "default" est configuré de sorte à mettre à disposition tout ce qui est dans /var/www. Mais ce n'est pas tout. Si la page d'accueil s'affiche sur le navigateur, c'est que le site de test de apache2 est activé. Cette activation dépend d'un lien symbolique entre un fichier du répertoire /etc/apache2/sites-enabled/ et un fichier du répertoire /etc/apache2/sites-available/default. | Donc le site "default" est configuré de sorte à mettre à disposition tout ce qui est dans /var/www. Mais ce n'est pas tout. Si la page d'accueil s'affiche sur le navigateur, c'est que le site de test de apache2 est activé. Cette activation dépend d'un lien symbolique entre un fichier du répertoire /etc/apache2/sites-enabled/ et un fichier du répertoire /etc/apache2/sites-available/default. | ||
Ligne 114: | Ligne 120: | ||
<code root>cd /etc/apache2/sites-enabled/ && ls</code> | <code root>cd /etc/apache2/sites-enabled/ && ls</code> | ||
- | <code>000-default</code> | + | <file config retour de la commande>000-default</file> |
Ce fichier est un lien symbolique : il pointe vers /etc/apache2/sites-available/default. | Ce fichier est un lien symbolique : il pointe vers /etc/apache2/sites-available/default. | ||
<code root>ls -l /etc/apache2/sites-enabled/000-default</code> | <code root>ls -l /etc/apache2/sites-enabled/000-default</code> | ||
- | <code>lrwxrwxrwx 1 root root 26 sept. 19 06:06\ | + | <file config retour de la commande>lrwxrwxrwx 1 root root 26 sept. 19 06:06\ |
- | /etc/apache2/sites-enabled/000-default -> ../sites-available/default</code> | + | /etc/apache2/sites-enabled/000-default -> ../sites-available/default</file> |
<note> | <note> | ||
Ligne 133: | Ligne 139: | ||
Cela peut se faire avec les commandes ''ln -s'' et ''rm''. Mais on utilise pour ce faire les utilitaires : | Cela peut se faire avec les commandes ''ln -s'' et ''rm''. Mais on utilise pour ce faire les utilitaires : | ||
* ''a2ensite'' : (apache2 enable site) : active un site, | * ''a2ensite'' : (apache2 enable site) : active un site, | ||
+ | |||
* ''a2dissite'' : (apache2 disable site) : désactive un site. | * ''a2dissite'' : (apache2 disable site) : désactive un site. | ||
</note> | </note> | ||
- | ===Méthode pour créer son site avec apache2 === | ||
- | |||
- | Cette configuration par défaut, indique donc comment s'y prendre pour créer un site web pris en charge par apache2. | ||
- | |||
- | * **D'abord, un fichier contenant le code source de la page web**: | ||
- | Il doit être créé dans /var/www/ : /var/www/dossier-du-site/fichier.html. | ||
- | |||
- | * **Ensuite pour que apache gère ce site** : | ||
- | Il faudra créer un utilisateur dans la base de apache ainsi qu'un fichier correspondant à la page web de /var/www/dossier-du-site/fichier.html dans /etc/apache2/sites-available/dossier-du-site. | ||
- | |||
- | * **Enfin pour activer ce site** : | ||
- | Il faudra créer un lien symbolique dans /etc/apache2/sites-available/ pointant vers /etc/apache2/sites-available/dossier-du-site. | ||
**//Puisque tout est bien clair, créons notre propre site web.//** | **//Puisque tout est bien clair, créons notre propre site web.//** | ||
Ligne 156: | Ligne 151: | ||
====Création du site web dans /var/www/ ==== | ====Création du site web dans /var/www/ ==== | ||
- | * On crée un dossier dans /var/www : | + | |
+ | * On crée un dossier dans /var/www/ : | ||
Par exemple "monsite.com" qui va pouvoir accueillir le site internet. | Par exemple "monsite.com" qui va pouvoir accueillir le site internet. | ||
<code root>mkdir -p /var/www/monsite.com/public_html</code> | <code root>mkdir -p /var/www/monsite.com/public_html</code> | ||
+ | |||
* On attribue à root les fichiers nouvellement créés : | * On attribue à root les fichiers nouvellement créés : | ||
<code root>chown -R $USER:$USER /var/www/monsite.com/public_html</code> | <code root>chown -R $USER:$USER /var/www/monsite.com/public_html</code> | ||
+ | |||
* On change les droits pour que le site puisse être lu par tous : | * On change les droits pour que le site puisse être lu par tous : | ||
<code root>chmod -R 755 /var/www</code> | <code root>chmod -R 755 /var/www</code> | ||
+ | |||
* On crée sa première page index.html | * On crée sa première page index.html | ||
<code root>vim /var/www/monsite.com/public_html/index.html</code> | <code root>vim /var/www/monsite.com/public_html/index.html</code> | ||
+ | |||
+ | |||
Contenant par exemple le code suivant: | Contenant par exemple le code suivant: | ||
- | <code><html> | + | |
+ | <file html index.html> | ||
+ | <html> | ||
<body> | <body> | ||
<h1>Bravo !</h1> | <h1>Bravo !</h1> | ||
Ligne 177: | Ligne 180: | ||
</body> | </body> | ||
</html> | </html> | ||
- | </code> | + | </file> |
On enregistre ! | On enregistre ! | ||
- | * On crée un VirtualHost d'apache pour ce site : | + | * On crée un VirtualHost d'apache2ls pour ce site : |
<code root>cp /etc/apache2/sites-available/default /etc/apache2/sites-available/monsite.com</code> | <code root>cp /etc/apache2/sites-available/default /etc/apache2/sites-available/monsite.com</code> | ||
<code root>vim /etc/apache2/sites-available/monsite.com</code> | <code root>vim /etc/apache2/sites-available/monsite.com</code> | ||
Ligne 187: | Ligne 191: | ||
On inscrit ceci : | On inscrit ceci : | ||
- | <code> | + | <file config monsite.com> |
<VirtualHost *:80> | <VirtualHost *:80> | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Ligne 195: | Ligne 200: | ||
DocumentRoot /var/www/monsite.com/public_html | DocumentRoot /var/www/monsite.com/public_html | ||
<...> | <...> | ||
- | </code> | + | </file> |
On peut laisser le reste tel quel. | On peut laisser le reste tel quel. | ||
Ligne 206: | Ligne 212: | ||
* Vérification : | * Vérification : | ||
- | Dans le navigateur : **''http://http://192.168.x.xx/monsite.com''** | + | Dans le navigateur : **''http://192.168.x.xx/monsite.com''** |
<code>Index of /monsite.com | <code>Index of /monsite.com | ||
Ligne 228: | Ligne 234: | ||
Elles apparaissent quand on tape la commande : | Elles apparaissent quand on tape la commande : | ||
<code root>grep -v "^#" /etc/locale.gen</code> | <code root>grep -v "^#" /etc/locale.gen</code> | ||
- | <code>fr_FR.UTF-8 UTF-8</code> | + | <file config retour de la commande>fr_FR.UTF-8 UTF-8</file> |
* Corriger le fichier /etc/apache2/conf.d/charset : | * Corriger le fichier /etc/apache2/conf.d/charset : | ||
Ligne 252: | Ligne 258: | ||
* Vider le cache du navigateur : | * Vider le cache du navigateur : | ||
Par exemple, avec iceweasel :\\ | Par exemple, avec iceweasel :\\ | ||
- | ''Outils -> Supprimer l'historique récent'' | + | |
+ | ''Historique -> Supprimer l'historique récent'' | ||
Et quand on recharge la page le problème est réglé : | Et quand on recharge la page le problème est réglé : | ||
Ligne 270: | Ligne 277: | ||
<code root>ls -l /etc/apache2/mods-available/php5*</code> | <code root>ls -l /etc/apache2/mods-available/php5*</code> | ||
- | <code>-rw-r--r-- 1 root root 898 août 21 10:49 /etc/apache2/mods-available/php5.conf | + | <file config retour de la commande>-rw-r--r-- 1 root root 898 août 21 10:49 /etc/apache2/mods-available/php5.conf |
- | -rw-r--r-- 1 root root 59 août 21 10:49 /etc/apache2/mods-available/php5.load</code> | + | -rw-r--r-- 1 root root 59 août 21 10:49 /etc/apache2/mods-available/php5.load</file> |
+ | <note important>Si après l'installation le module php5 ne figure pas dans la liste des modules du fichier /etc/apache2/mods-available/ | ||
+ | |||
+ | * essayer : <code root>apt-get install php5 libapache2-mod-php5</code> | ||
+ | |||
+ | Et si cela n'est pas suffisant, suivre les directives de ce lien : | ||
+ | |||
+ | * http://digitizor.com/2012/09/03/how-to-fix-module-php5-does-not-exist-error-in-apache-linux/ | ||
+ | </note> | ||
+ | |||
+ | |||
+ | ===Activer le module php5 === | ||
+ | |||
+ | <code root>a2enmod php && /etc/init.d/apache2 restart</code> | ||
+ | |||
+ | <note tip> | ||
Dans /etc/apache2/mod-enabled, ce sont des liens symboliques qui activent ce module: | Dans /etc/apache2/mod-enabled, ce sont des liens symboliques qui activent ce module: | ||
<code root>ls -l /etc/apache2/mods-enabled/php5*</code> | <code root>ls -l /etc/apache2/mods-enabled/php5*</code> | ||
- | <code>lrwxrwxrwx 1 root root 27 sept. 20 11:40\ | + | <file config retour de la commande>lrwxrwxrwx 1 root root 27 sept. 20 11:40\ |
/etc/apache2/mods-enabled/php5.conf -> ../mods-available/php5.conf | /etc/apache2/mods-enabled/php5.conf -> ../mods-available/php5.conf | ||
lrwxrwxrwx 1 root root 27 sept. 20 11:40\ | lrwxrwxrwx 1 root root 27 sept. 20 11:40\ | ||
- | /etc/apache2/mods-enabled/php5.load -> ../mods-available/php5.load</code> | + | /etc/apache2/mods-enabled/php5.load -> ../mods-available/php5.load</file> |
- | + | ||
- | -> Puisque les liens sont là, le module est activé. | + | |
+ | Quand les liens sont là, comme ci-dessus, c'est que le module est activé. | ||
+ | </note> | ||
Ligne 287: | Ligne 309: | ||
* ''a2enmod'' : (apache2 enable module) : active un module apache2 | * ''a2enmod'' : (apache2 enable module) : active un module apache2 | ||
+ | |||
* ''a2dismod'' : (apache2 disable module) : désactive un module apache2 | * ''a2dismod'' : (apache2 disable module) : désactive un module apache2 | ||
Ligne 294: | Ligne 317: | ||
Si on active ou désactive un module ne pas oublier après l'opération de réactiver apache : ''service apache2 restart'' | Si on active ou désactive un module ne pas oublier après l'opération de réactiver apache : ''service apache2 restart'' | ||
- | ===Créer la page de test === | + | ====Créer la page de test ==== |
<code root>mv /var/www/index.html /var/www/index.php</code> | <code root>mv /var/www/index.html /var/www/index.php</code> | ||
<code root>vim /var/www/index.php</code> | <code root>vim /var/www/index.php</code> | ||
- | <code> | + | |
+ | <file php index.php> | ||
<html> | <html> | ||
<body> | <body> | ||
Ligne 309: | Ligne 333: | ||
</body> | </body> | ||
</html> | </html> | ||
- | </code> | + | </file> |
+ | |||
* Recharger apache : | * Recharger apache : | ||
Ligne 366: | Ligne 392: | ||
<code root>vim /etc/apache2/sites-available/monsite.com</code> | <code root>vim /etc/apache2/sites-available/monsite.com</code> | ||
- | <code> | + | |
+ | <file config monsite.com> | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Ligne 388: | Ligne 415: | ||
allow from 192.168.0.0/24 | allow from 192.168.0.0/24 | ||
</Directory> | </Directory> | ||
- | </code> | + | |
+ | </file> | ||
> ''Options -Indexes'' : Pour désactiver l'option permettant le parcours d'un répertoire | > ''Options -Indexes'' : Pour désactiver l'option permettant le parcours d'un répertoire | ||
+ | |||
> ''Options -FollowSymLinks'' : Pour désactiver l'option permettant à apache de suivre des liens symboliques (qui pourraient permettre de quitter /var/www). | > ''Options -FollowSymLinks'' : Pour désactiver l'option permettant à apache de suivre des liens symboliques (qui pourraient permettre de quitter /var/www). | ||
+ | |||
> ''Options -Includes'' : Pour désactiver l'option permettant à apache de faire des inclusions côté serveur. | > ''Options -Includes'' : Pour désactiver l'option permettant à apache de faire des inclusions côté serveur. | ||
+ | |||
> ''Options -ExecCGI'' : Pour désactiver l'option permettant à apache l'utilisation de scripts CGI. Désactiver cette option seulement si on n'utilise pas de script CGI(([[http://fr.wikipedia.org/wiki/Common_Gateway_Interface]])). | > ''Options -ExecCGI'' : Pour désactiver l'option permettant à apache l'utilisation de scripts CGI. Désactiver cette option seulement si on n'utilise pas de script CGI(([[http://fr.wikipedia.org/wiki/Common_Gateway_Interface]])). | ||
Ligne 401: | Ligne 432: | ||
Pour connaître la signification des différentes options à mettre soit dans "sites-avaible" soit dans le fichier de son site voir : [[http://httpd.apache.org/docs/2.2/mod/core.html]] | Pour connaître la signification des différentes options à mettre soit dans "sites-avaible" soit dans le fichier de son site voir : [[http://httpd.apache.org/docs/2.2/mod/core.html]] | ||
- | ====Création d'un nouvelle utilisateur du système Linux==== | + | ====Création d'un nouvel utilisateur du système Linux==== |
On développera son site dans le répertoire de cet utilisateur. Il est déconseillé de développer son site dans /var/www, surtout si la partition est plus petite que /home/ ! | On développera son site dans le répertoire de cet utilisateur. Il est déconseillé de développer son site dans /var/www, surtout si la partition est plus petite que /home/ ! | ||
Ligne 420: | Ligne 451: | ||
<code root>vim /home/web/monsite.com/public_html/index.php</code> | <code root>vim /home/web/monsite.com/public_html/index.php</code> | ||
- | <code><html> | + | <file php index.php> |
+ | <html> | ||
<body> | <body> | ||
<h1>Bienvenue sur monsite.com</h1> | <h1>Bienvenue sur monsite.com</h1> | ||
Ligne 428: | Ligne 460: | ||
?> | ?> | ||
</body> | </body> | ||
- | </html></code> | + | </html> |
+ | </file> | ||
====Restreindre l'accès à "monsite.com" par login et mot de passe apache2==== | ====Restreindre l'accès à "monsite.com" par login et mot de passe apache2==== | ||
Ligne 438: | Ligne 471: | ||
<code root>cd /usr/local/ && ls</code> | <code root>cd /usr/local/ && ls</code> | ||
- | <code>bin etc games include lib man sbin share src</code> | + | <file config retour de la commande>bin etc games include lib man sbin share src</file> |
* Il faut créer un dossier apache du nom de son choix : | * Il faut créer un dossier apache du nom de son choix : | ||
Ligne 447: | Ligne 480: | ||
La commande ''htpasswd'' va créer un fichier qui contiendra utilisateur apache /mot de passe. | La commande ''htpasswd'' va créer un fichier qui contiendra utilisateur apache /mot de passe. | ||
<code root>htpasswd -c passwords web</code> | <code root>htpasswd -c passwords web</code> | ||
- | <code>New password: | + | <file config séquence interactive>New password: |
Re-type new password: | Re-type new password: | ||
- | Adding password for user web</code> | + | Adding password for user web</file> |
-> ''-c'' pour la première fois qu'on crée un mot de passe. Si on l'utilisait une deuxième fois pour le même fichier "passwords", pour un deuxième utilisateur, on écrasera le contenu du fichier, et on perdrait le mot de passe du premier utilisateur. Donc pour un éventuel deuxième utilisateur "toto": ''htpasswd passwords toto''.\\ | -> ''-c'' pour la première fois qu'on crée un mot de passe. Si on l'utilisait une deuxième fois pour le même fichier "passwords", pour un deuxième utilisateur, on écrasera le contenu du fichier, et on perdrait le mot de passe du premier utilisateur. Donc pour un éventuel deuxième utilisateur "toto": ''htpasswd passwords toto''.\\ | ||
Ligne 474: | Ligne 507: | ||
<code root>vim /etc/apache2/sites-available/default</code> | <code root>vim /etc/apache2/sites-available/default</code> | ||
- | <code> | + | |
+ | <file config default> | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Ligne 510: | Ligne 544: | ||
CustomLog ${APACHE_LOG_DIR}/access.log combined | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
- | </code> | + | </file> |
<note> | <note> | ||
- | **Bien remarquer que pour pouvoir ajouter cette directive**\\ | + | **Bien remarquer que pour pouvoir ajouter cette directive**\\ |
- | -> on a mis ''AllowOverride AuthConfig'' à la place de ''AllowOverride None'' non seulement dans la directive "<Directory /var/www/>".\\ mais aussi dans "<Directory />". | + | |
+ | -> on a mis ''AllowOverride AuthConfig'' à la place de ''AllowOverride None'' non seulement dans la directive "<Directory /var/www/>".\\ | ||
- | **Pour autoriser l'accès à tous les utilisateurs** qui ont un mot de passe apache :\\ | + | mais aussi dans "<Directory />". |
- | -> ''Require user web''\\ | + | |
+ | **Pour autoriser l'accès à tous les utilisateurs** qui ont un mot de passe apache :\\ | ||
+ | |||
+ | -> ''Require user web''\\ | ||
+ | |||
-> ''Require group groupe1''\\ | -> ''Require group groupe1''\\ | ||
- | **On aurrait pu mettre** :\\ | + | **On aurait pu mettre** :\\ |
- | -> ''Require valid-user''\\ | + | |
+ | -> ''Require valid-user''\\ | ||
Voir aussi la directive "Satisfy" : [[http://httpd.apache.org/docs/2.2/howto/auth.html]] | Voir aussi la directive "Satisfy" : [[http://httpd.apache.org/docs/2.2/howto/auth.html]] | ||
- | **Pour sécuriser l'accès au système de fichier** :\\ | + | **Pour sécuriser l'accès au système de fichier** :\\ |
+ | |||
''Require all denied'' : interdire aux clients de parcourir l'ensemble du système de fichiers. Ceci va interdire l'accès par défaut à tous les fichiers du système de fichiers; Ensuite on autorise section par section. Voir [[http://httpd.apache.org/docs/trunk/fr/misc/security_tips.html]] et [[http://httpd.apache.org/docs/2.2/mod/core.html#require| require directive]]\\ | ''Require all denied'' : interdire aux clients de parcourir l'ensemble du système de fichiers. Ceci va interdire l'accès par défaut à tous les fichiers du système de fichiers; Ensuite on autorise section par section. Voir [[http://httpd.apache.org/docs/trunk/fr/misc/security_tips.html]] et [[http://httpd.apache.org/docs/2.2/mod/core.html#require| require directive]]\\ | ||
- | Pour l'utiliser avec une zone restreinte, il faut alors l'inclure dans <Directory /> et créer la zone restreinte dans une directive séparée :\\ | + | Pour l'utiliser avec une zone restreinte, il faut alors l'inclure dans <Directory /> et créer la zone restreinte dans une directive séparée :\\ |
+ | |||
''<Directory /var/www/restricted/> ... </Directory>'' | ''<Directory /var/www/restricted/> ... </Directory>'' | ||
</note> | </note> | ||
Ligne 534: | Ligne 578: | ||
<code root>vim /etc/apache2/sites-available/monsite.com</code> | <code root>vim /etc/apache2/sites-available/monsite.com</code> | ||
- | <code> | + | |
+ | <file config monsite.com> | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Ligne 578: | Ligne 623: | ||
CustomLog ${APACHE_LOG_DIR}/access.log combined | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
</VirtualHost> | </VirtualHost> | ||
- | </code> | + | </file> |
===On supprime le fichier "monsite.com" de /var/www/ === | ===On supprime le fichier "monsite.com" de /var/www/ === | ||
- | (Si on a suivi précédemment : [[atelier:chantier:apache2#creation-du-site-web-dans-var-www|création de "monsite.com" dans /var/www/]]) | + | (Si on a suivi précédemment : [[doc:reseau:apache2#Création du site web dans /var/www/|création de "monsite.com" dans /var/www/]] ) |
<code root>cd /var/www/</code> | <code root>cd /var/www/</code> | ||
<code root>rm -r monsite.com</code> | <code root>rm -r monsite.com</code> | ||
Ligne 591: | Ligne 637: | ||
====Vérifier l'appartenance et les droits des fichiers utilisés par "apache"==== | ====Vérifier l'appartenance et les droits des fichiers utilisés par "apache"==== | ||
- | FIXME | ||
===Modifier le groupe de /var/www === | ===Modifier le groupe de /var/www === | ||
Ligne 605: | Ligne 650: | ||
On utilise les droits suivants : | On utilise les droits suivants : | ||
- | * droits en lecture <nowiki>(r)</nowiki> écriture (w) sur les fichiers réguliers, | + | * __Sur les fichiers réguliers__ : pour l'utilisateur root, droits en lecture <nowiki>(r)</nowiki> écriture (w) ; pour le groupe, droit de lecture seulement. |
- | * droits en lecture <nowiki>(r)</nowiki> écriture (w) exécution (x) sur les répertoires. | + | |
+ | * __Sur les répertoires__ : pour l'utilisateur root, droits en lecture <nowiki>(r)</nowiki> écriture (w) exécution (x) ; pour le groupe et les autres droit en lecture et exécution. | ||
</note> | </note> | ||
- | * **Pour le répertoire /var/www** , il faut donc :\\ ''drwxr-xr-x 2 root root 4096 sept. 22 11:47 www'' | + | * **Pour les répertoires /var/www et /home/web** : |
- | <code root>chmod 755 /var/www</code> | + | <code root>chmod -R 755 /var/www/ /home/web/</code> |
- | * **Pour /var/www/index.php**, il faut donc :\\ ''-rw-r----- 1 root www-data 4096 sept. 22 11:47 index.php'' | + | * **Pour les fichiers d'index :** |
- | <code root>chmod 640 /var/www/index.php</code> | + | <code root>chmod -R 644 /var/www/index.php /home/web/monsite.com/public_html/index.php</code> |
- | * **Pour /home/web/monsite.com**, il faut donc :\\ ''drwxr-xr-x 3 root www-data 4096 sept. 22 11:44 monsite.com'': | + | * **Pour les propriétaires des fichiers d'index** : |
- | <code root>chmod 755 /home/web/monsite.com/</code> | + | <code root>chown root:www-data /var/www/index.php\ |
- | + | /home/web/monsite.com/public_html/index.php</code> | |
- | * **Pour /home/web/monsite.com/public_html**, il faut donc :\\ ''drwxr-xr-x 2 root www-data 4096 sept. 22 11:44 public_html'': | + | |
- | <code root>chmod 755 /home/web/monsite.com/public_html/</code> | + | |
- | + | ||
- | * **Pour /home/web/monsite.com/public_html/index.php**, il faut donc :\\ ''-rw-r----- 1 root www-data 4096 sept. 22 11:44 index.php'' | + | |
- | <code root>chown root:www-data /home/web/monsite.com/public_html/index.php\ | + | |
- | && chmod 644 /home/web/monsite.com/public_html/index.php</code> | + | |
* **Pour le lien symbolique /var/www/monsite.com** : on ne peut pas modifier ces droits mais ce n'est pas grave. Ce qui compte c'est le fichier vers lequel pointe un lien symbolique. | * **Pour le lien symbolique /var/www/monsite.com** : on ne peut pas modifier ces droits mais ce n'est pas grave. Ce qui compte c'est le fichier vers lequel pointe un lien symbolique. | ||
Ligne 643: | Ligne 683: | ||
Enfin depuis son navigateur :\\ ''http://ip-serveur/monsite.com/''\\ | Enfin depuis son navigateur :\\ ''http://ip-serveur/monsite.com/''\\ | ||
- | {{http://pix.toile-libre.org/upload/img/1411461721.png?250}} -> {{http://pix.toile-libre.org/upload/img/1411461425.png?250}} | + | {{https://debian-facile.org/images/file-Rd261d8788afa0161885b61b7d3781fd0.png}} -> {{https://debian-facile.org/images/file-R87c7669842e3eac120b8a4a78bd2221e.png}} |
Ligne 656: | Ligne 696: | ||
LogLevel warn | LogLevel warn | ||
- | **Ainsi paramétrer apache inscrit des logs d'erreur.** | + | **Ainsi paramétrer apache inscrit les événements anormaux dans l'un des fichiers du répertoire /var/log/apache2/error.log.** |
- | On peut mettre l'un des neuf niveau d'alerte, pour être alerter de la moindre information jusqu'au alerte grave : | + | On peut mettre l'un des neuf niveau d'alerte, pour être alerter de la moindre information jusqu'au alerte grave :\\ |
- | -''trace'' : traçage des informations de différents niveaux (produit une grande quantité d'informations);\\ | + | |
- | - ''debug'' : informations de débogage qui peut être utile pour repérer où un problème ;\\ | + | -''trace'' : traçage des informations de différents niveaux (produit une grande quantité d'informations);\\ |
+ | |||
+ | - ''debug'' : informations de débogage qui peut être utile pour repérer où un problème ;\\ | ||
+ | |||
- ''info'': message d'information qui pourrait être bon à savoir;\\ | - ''info'': message d'information qui pourrait être bon à savoir;\\ | ||
+ | |||
- ''notice'' : signal un événement normal, mais à noter;\\ | - ''notice'' : signal un événement normal, mais à noter;\\ | ||
- | - ''warn'' : signal un événement anormal, mais pas très préoccupant;\\ | + | |
- | - ''error'' : signal que quelque chose a échoué;\\ | + | - ''warn'' : signal un événement anormal, mais pas très préoccupant;\\ |
- | - ''crit'' : problèmes importants qui doivent être pris en compte;\\ | + | |
- | - ''alert'' : situation grave qui nécessite rapidement une action;\\ | + | - ''error'' : signal que quelque chose a échoué;\\ |
+ | |||
+ | - ''crit'' : problèmes importants qui doivent être pris en compte;\\ | ||
+ | |||
+ | - ''alert'' : situation grave qui nécessite rapidement une action;\\ | ||
+ | |||
- ''emerg'' : urgence de la situation, le système est dans un état inutilisable.\\ | - ''emerg'' : urgence de la situation, le système est dans un état inutilisable.\\ | ||
-> Par défaut, on est informé à partir du niveau choisi jusqu'au niveau le plus grave.\\ | -> Par défaut, on est informé à partir du niveau choisi jusqu'au niveau le plus grave.\\ | ||
- | ===Où Apache conserve-t-il ses journaux? === | + | ===Comment le système de journalisation est-il configuré ? === |
Dans le fichier général **/etc/apache2/apache2.conf** une ligne indique le fichier où sont consigné les logs : | Dans le fichier général **/etc/apache2/apache2.conf** une ligne indique le fichier où sont consigné les logs : | ||
Ligne 795: | Ligne 844: | ||
* Création de la clé privée et du certificat : | * Création de la clé privée et du certificat : | ||
<note> | <note> | ||
- | __**La commande qui suit cette note, peut s'effectuer en quatre étapes:**__\\ | + | __**La commande qui suit cette note, raccourcit ce qui suit:**__\\ |
1) **Création de la clé privée** : par exemple ''openssl genrsa 1024 > /etc/apache2/ssl/apache.key'' | 1) **Création de la clé privée** : par exemple ''openssl genrsa 1024 > /etc/apache2/ssl/apache.key'' | ||
- | 2) **À partir de cette clé privée, on crée un certificat CSR qui contient une clé publique** à faire signer : ''openssl req -new -key /etc/apache2/ssl/apache.key > /etc/apache2/ssl/apache.csr'' | + | 2) **À partir de cette clé privée, on crée un certificat CSR qui contient une clé publique** à faire signer :\\ |
+ | |||
+ | ''openssl req -new -key /etc/apache2/ssl/apache.key > /etc/apache2/ssl/apache.csr'' | ||
=> C'est ce certificat qu'il faut faire signer par une autorité de certification (CA) | => C'est ce certificat qu'il faut faire signer par une autorité de certification (CA) | ||
Ou qu'il faudra auto-signer. | Ou qu'il faudra auto-signer. | ||
- | 3) **On décide d'auto-signer ce certificat donc on crée une clé privée qui serait celle du CA officielle** : ''openssl genrsa -des3 1024 > ca.key''\\ | + | 3) **On décide d'auto-signer ce certificat donc on crée une clé privée qui serait celle du CA officielle** :\\ |
+ | |||
+ | ''openssl genrsa -des3 1024 > ca.key''\\ | ||
-on peut ajouter -des3 qui introduit l'usage d'une "passphrase"\\ | -on peut ajouter -des3 qui introduit l'usage d'une "passphrase"\\ | ||
-c'est cette clé privée qui signera tous les certificats que l'on émettra ; cette "passphrase" sera donc demandée à chaque utilisation de la clé. | -c'est cette clé privée qui signera tous les certificats que l'on émettra ; cette "passphrase" sera donc demandée à chaque utilisation de la clé. | ||
- | 4) **Puis à partir de la clé privée, on crée un certificat x509 pour une durée de validité d'un an auto-signé**\\ ''openssl req -new -x509 -days 365 -key ca.key > ca.crt''\\ | + | 4) **Puis à partir de la clé privée, on crée un certificat x509 pour une durée de validité d'un an auto-signé**\\ |
+ | |||
+ | ''openssl req -new -x509 -days 365 -key ca.key > ca.crt''\\ | ||
+ | |||
-On répondrait à nouveau aux questions, mais on changerait la réponse relative à "Common Name". | -On répondrait à nouveau aux questions, mais on changerait la réponse relative à "Common Name". | ||
- | 5) **Enfin il faudrait faire signer notre certificat de demande de signature par le certificat du CA (qui a été fait par nous-même) :**\\ | + | 5) **Enfin il faudrait faire signer notre certificat de demande de signature par le certificat du CA (qui a été fait par nous-même) :**\\ |
+ | |||
''openssl x509 -req -in /etc/apache2/ssl/apache.csr -out /etc/apache2/ssl/apache.crt -CA ca.crt -CAkey ca.key\ | ''openssl x509 -req -in /etc/apache2/ssl/apache.csr -out /etc/apache2/ssl/apache.crt -CA ca.crt -CAkey ca.key\ | ||
-CAcreateserial -CAserial ca.srl''\\ | -CAcreateserial -CAserial ca.srl''\\ | ||
- | Dans ce qui suit on a sauté les quatre premières étapes.\\ | + | Pour créer une connexion privée et sécurisée entre le serveur et les clients qui s'y connecteraient, il faudrait procurer de façon sécurisé le fichier ca.crt (qu'on aurait fait nous-même en suivant toutes ces étapes) aux clients (ssh par exemple), afin qu'il soit installer dans leur navigateur.\\ Par exemple avec Iceweasel :\\ |
- | Mais pour créer une connexion privée et sécurisée entre le serveur et les clients qui s'y connecteraient, il faudrait utiliser le fichier ca.crt (qu'on a fait nous-même) le procurer de façon sécurisé aux clients (ssh par exemple), et l'installer dans son navigateur :\\ -> Edition -> préférence -> Confidentialité et Sécurité/(bouton) Certificats -> gestion des certificats -> (Onglet)autorité/(Bouton)importer | + | -> Edition -> préférence -> Avancé -> Afficher les certificats -> (Bouton)importer |
</note> | </note> | ||
Ligne 834: | Ligne 892: | ||
<note tip> | <note tip> | ||
__**Il faut répondre à une suite de question**__ : | __**Il faut répondre à une suite de question**__ : | ||
- | La plus importante est "Common Name": il faut répondre par le nom de domaine ou l'ip public du serveur concerné. Dans le cas de cette exemple, l'ip locale (fixe) du serveur fera l'affaire ou nom de domaine.\\ | + | La plus importante est "Common Name": il faut répondre par le nom de domaine ou l'ip public du serveur concerné. Dans le cas de cette exemple, l'ip locale (fixe) du serveur fera l'affaire.\\ |
- | Par exemple :\\ | + | **Par exemple :**\\ |
Country Name (2 letter code) [AU]:FR\\ | Country Name (2 letter code) [AU]:FR\\ | ||
State or Province Name (full name) [Some-State]:France\\ | State or Province Name (full name) [Some-State]:France\\ | ||
- | Locality Name (eg, city) []:Chambery\\ | + | Locality Name (eg, city) []:SaVille\\ |
Organization Name (eg, company) [Internet Widgits Pty Ltd]:\\ | Organization Name (eg, company) [Internet Widgits Pty Ltd]:\\ | ||
Organizational Unit Name (eg, section) []:\\ | Organizational Unit Name (eg, section) []:\\ | ||
Ligne 861: | Ligne 919: | ||
<code root>mkdir -p /home/hypathie/www/pegaseous.com/public_html</code> | <code root>mkdir -p /home/hypathie/www/pegaseous.com/public_html</code> | ||
- | * On crée un index dans /home/hypathie/www/ | + | * On crée un index dans /home/hypathie/www/ |
<code root>mv /var/www/index.html /home/hypathie/www/</code> | <code root>mv /var/www/index.html /home/hypathie/www/</code> | ||
On peut le modifier : | On peut le modifier : | ||
<code root>vim /home/hypathie/www/index.html</code> | <code root>vim /home/hypathie/www/index.html</code> | ||
- | <code><html><body><h1>Ça marche!</h1> | + | <file html index.html> |
+ | <html><body><h1>Ça marche!</h1> | ||
<p>Voici ma page d'index.</p> | <p>Voici ma page d'index.</p> | ||
<p>YEP ! Déployée dans mon répertoire personnel !</p> | <p>YEP ! Déployée dans mon répertoire personnel !</p> | ||
<p>Le serveur web apache2 fonctionne.</p> | <p>Le serveur web apache2 fonctionne.</p> | ||
- | </body></html></code> | + | </body></html> |
+ | </file> | ||
- | *On créer un contenu en php dans "pegaseous" : | + | *On crée un contenu en php dans "pegaseous" : |
<code root>vim /home/hypathie/www/pegaseous.com/public_html/index.php</code> | <code root>vim /home/hypathie/www/pegaseous.com/public_html/index.php</code> | ||
- | <code><html> | + | <file php index.php> |
+ | <html> | ||
<body> | <body> | ||
<h1>Bienvenue sur pegaseous.com</h1> | <h1>Bienvenue sur pegaseous.com</h1> | ||
Ligne 883: | Ligne 945: | ||
</body> | </body> | ||
</html> | </html> | ||
- | </code> | + | </file> |
===On pense aux droits unix sur ses répertoires et fichiers=== | ===On pense aux droits unix sur ses répertoires et fichiers=== | ||
Ligne 897: | Ligne 960: | ||
<code root>vim /etc/apache2/sites-available/default</code> | <code root>vim /etc/apache2/sites-available/default</code> | ||
- | <code> | + | <file config default> |
<VirtualHost 192.168.0.13:80> | <VirtualHost 192.168.0.13:80> | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Ligne 928: | Ligne 992: | ||
CustomLog ${APACHE_LOG_DIR}/access.log combined | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
</VirtualHost> | </VirtualHost> | ||
- | </code> | + | </file> |
- | + | ||
* On charge le site "default" : | * On charge le site "default" : | ||
+ | |||
<code root>a2ensite default</code> | <code root>a2ensite default</code> | ||
* On édite /etc/apache2/ports.conf | * On édite /etc/apache2/ports.conf | ||
+ | |||
Pour s'éviter d'avoir au redémarrage d'apache2 le message suivant : | Pour s'éviter d'avoir au redémarrage d'apache2 le message suivant : | ||
<code>service apache2 reload | <code>service apache2 reload | ||
- | [....] Reloading web server config: apache2[Thu Sep 25 09:33:25 2014] [warn] NameVirtualHost 192.168.0.13:80 has no VirtualHosts</code> | + | [....] Reloading web server config: apache2[Thu Sep 25 09:33:25 2014] |
+ | [warn] NameVirtualHost 192.168.0.13:80 has no VirtualHosts</code> | ||
<code root>vim /etc/apache2/ports.conf</code> | <code root>vim /etc/apache2/ports.conf</code> | ||
- | <code>NameVirtualHost 192.168.0.13:80 | + | <file config ports.conf> |
- | Listen 80</code> | + | NameVirtualHost 192.168.0.13:80 |
+ | Listen 80 | ||
+ | </file> | ||
===Le fichier "default-ssl"=== | ===Le fichier "default-ssl"=== | ||
Ligne 951: | Ligne 1021: | ||
<code root>vim /etc/apache2/sites-available/default-ssl</code> | <code root>vim /etc/apache2/sites-available/default-ssl</code> | ||
- | <code><IfModule mod_ssl.c> | + | <file config default-ssl> |
+ | <IfModule mod_ssl.c> | ||
<VirtualHost *:443> | <VirtualHost *:443> | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
| | ||
- | ServerName monsite.com | + | ServerName pegaseous.com |
DocumentRoot /home/hypathie/www | DocumentRoot /home/hypathie/www | ||
<Directory /> | <Directory /> | ||
Ligne 970: | Ligne 1041: | ||
SSLCertificateFile /etc/apache2/ssl/apache.crt | SSLCertificateFile /etc/apache2/ssl/apache.crt | ||
SSLCertificateKeyFile /etc/apache2/ssl/apache.key | SSLCertificateKeyFile /etc/apache2/ssl/apache.key | ||
- | </code> | + | #<...> |
+ | |||
+ | </VirtualHost> | ||
+ | </IfModule> | ||
+ | |||
+ | </file> | ||
Il n'y a rien d'autre à modifier. | Il n'y a rien d'autre à modifier. |