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 Prochaine révision Les deux révisions suivantes | ||
doc:reseau:apache2:tp01 [22/09/2014 18:04] Hypathie [Sécuriser son site web] |
doc:reseau:apache2:tp01 [23/09/2014 13:43] Hypathie [Sécuriser son site web] |
||
---|---|---|---|
Ligne 375: | Ligne 375: | ||
<Directory /> | <Directory /> | ||
Options -FollowSymLinks | Options -FollowSymLinks | ||
- | AllowOverride AuthConfig | + | AllowOverride None |
</Directory> | </Directory> | ||
<Directory /var/www/> | <Directory /var/www/> | ||
Ligne 394: | Ligne 394: | ||
> ''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]])). | ||
+ | |||
+ | > Si on ne peut pas mettre l'option ''-FollowSymLinks'' dans le fichier "sites-available/default", on peut dans celui de son site. | ||
+ | |||
+ | > S'il s'agit d'un usage personnel local, on peut restreindre l'accès au serveur avec les IP des clients du réseau local. | ||
+ | |||
+ | 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 nouvelle 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/ ! Cela évitera aussi de mettre en place le module [[http://httpd.apache.org/docs/current/fr/mod/mod_userdir.html|userdir]] déconseillé par la documentation d'apache. | + | 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/ ! |
+ | |||
+ | Cela évitera aussi de mettre en place le module [[http://httpd.apache.org/docs/current/fr/mod/mod_userdir.html|userdir]], ce qui est déconseillé par la documentation d'apache(("De même, soyez méfiant en jouant avec la directive UserDir")) | ||
* Par exemple du nom de "web" | * Par exemple du nom de "web" | ||
Ligne 414: | Ligne 422: | ||
<code><html> | <code><html> | ||
<body> | <body> | ||
- | <h1>Bienvenue sur pegaseous.com</h1> | + | <h1>Bienvenue sur monsite.com</h1> |
<p>Site en cours de réalisation !</p> | <p>Site en cours de réalisation !</p> | ||
<?php | <?php | ||
Ligne 422: | Ligne 430: | ||
</html></code> | </html></code> | ||
- | ====Restreindre l'accès à "monsite.com" par login et mot de passe ==== | + | ====Restreindre l'accès à "monsite.com" par login et mot de passe apache2==== |
La création d'un mot de passe sécurise un peu l'accès du site qu'on va crée pour le nouvel virtualhost.\\ | La création d'un mot de passe sécurise un peu l'accès du site qu'on va crée pour le nouvel virtualhost.\\ | ||
- | Pour ce faire on va créer un compte utilisateur du système Linux et un compte apache avec la commande htpasswd. | + | **Pour ce faire on va créer en correspondance au utilisateur "web" du système Linux, un mot de passe apache avec la commande ''htpasswd''**. |
===Création d'un mot de passe pour accéder à "monsite.com"=== | ===Création d'un mot de passe pour accéder à "monsite.com"=== | ||
- | Le dossier /etc/local est un bon endroit pour créer les fichiers de mots de passe de ce compte apache. | + | Le dossier /etc/local est un bon endroit pour créer les fichiers de mots de passe apache. |
<code root>cd /usr/local/ && ls</code> | <code root>cd /usr/local/ && ls</code> | ||
Ligne 449: | Ligne 457: | ||
Par exemple du nom de "groups" : | Par exemple du nom de "groups" : | ||
<code root>vim groups</code> | <code root>vim groups</code> | ||
- | <code>goupe1 web toto</code> | + | <code>goupe1 web</code> |
====Modifier les fichiers des sites actifs de /etc/apache2/sites-available ==== | ====Modifier les fichiers des sites actifs de /etc/apache2/sites-available ==== | ||
Ligne 467: | Ligne 475: | ||
<Directory /> | <Directory /> | ||
Options FollowSymLinks | Options FollowSymLinks | ||
- | AllowOverride AuthConfig | + | AllowOverride None |
+ | Require all denied | ||
</Directory> | </Directory> | ||
<Directory /var/www/> | <Directory /var/www/> | ||
Options Indexes FollowSymLinks MultiViews | Options Indexes FollowSymLinks MultiViews | ||
AllowOverride AuthConfig | AllowOverride AuthConfig | ||
- | Order allow,deny | + | Order deny,allow |
- | allow from all | + | deny from all |
+ | allow from 192.168.0.0/24 | ||
AuthType Basic | AuthType Basic | ||
AuthName "Ma zone est restreinte !" | AuthName "Ma zone est restreinte !" | ||
Ligne 485: | Ligne 495: | ||
<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''. | + | -> on a mis ''AllowOverride AuthConfig'' à la place de ''AllowOverride None'' seulement dans la directive "<Directory /var/www/>".\\ Mais laisser à ''None'' dans "<Directory />"(( afin d'éviter l'utilisation des fichiers ".htaccess" qui permettent de passer outre les fonctionnalités de sécurité que vous avez configurées.))\\ Mais il faut mettre ''AuthConfig'' pour utiliser " AuthName" c'est-à-dire les mots de passe apache. |
Ligne 495: | Ligne 505: | ||
-> ''Require group groupe1''\\ | -> ''Require group groupe1''\\ | ||
- | **On remarque que l'option ''Options -FollowSymLinks''** : qui évite de suivre les liens symbolique depuis la racine /var/www | + | **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]] | ||
</note> | </note> | ||
- | ===Pour "/etc/apache2/sites-available/monsite.com"=== | + | * Pour "/etc/apache2/sites-available/monsite.com" : Il n'y a pas à modifier quoique ce soit. |
- | <code root>vim /etc/apache2/sites-available/monsite.com</code> | + | ===On supprime le fichier "monsite.com" de /var/www/ === |
- | + | ||
- | <code> | + | |
- | <VirtualHost *:80> | + | |
- | ServerAdmin webmaster@localhost | + | |
- | ServerName monsite.com | + | |
- | ServerAlias www.monsite.com | + | |
- | + | ||
- | DocumentRoot /var/www/monsite.com | + | |
- | + | ||
- | <Directory /> | + | |
- | Options -FollowSymLinks | + | |
- | AllowOverride AuthConfig | + | |
- | </Directory> | + | |
- | <Directory /var/www/> | + | |
- | Options -Indexes | + | |
- | Options -FollowSymLinks | + | |
- | Options -Includes | + | |
- | Options -ExecCGI | + | |
- | Options MultiViews | + | |
- | AllowOverride None | + | |
- | Order deny,allow | + | |
- | deny from all | + | |
- | allow from 192.168.0.0/24 | + | |
- | </Directory> | + | |
- | ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ | + | |
- | <Directory "/usr/lib/cgi-bin"> | + | |
- | AllowOverride None | + | |
- | Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | + | |
- | Order allow,deny | + | |
- | Allow from all | + | |
- | </Directory> | + | |
- | + | ||
- | ErrorLog ${APACHE_LOG_DIR}/error.log | + | |
- | + | ||
- | # Possible values include: debug, info, notice, warn, error, crit, | + | |
- | # alert, emerg. | + | |
- | LogLevel warn | + | |
- | CustomLog ${APACHE_LOG_DIR}/access.log combined | + | |
- | </VirtualHost> | + | |
- | </code> | + | |
- | + | ||
- | * 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 : [[atelier:chantier:apache2#creation-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> | ||
- | * On crée un lien symbolique "monsite.com" dans /var/www/ vers /home/web/monsite.com/ : | + | ===On crée un lien symbolique à la place=== |
+ | Le nom symbolique doit avoir pour nom celui du site ("monsite.com") et il faut le placer dans /var/www/ et le faire pointer vers les répertoires et fichiers où le site est développé (/home/web/monsite.com/) : | ||
<code root>ln -s /home/web/monsite.com/ /var/www/monsite.com</code> | <code root>ln -s /home/web/monsite.com/ /var/www/monsite.com</code> | ||
Ligne 553: | Ligne 525: | ||
===Modifier le groupe de /var/www === | ===Modifier le groupe de /var/www === | ||
- | Le groupe www-data ne doit pas être propriétaire de /var/www/ ce fichier peut appartenir à son groupe. | + | Le groupe www-data ne doit pas être propriétaire de /var/www/ mais ce répertoire peut appartenir au groupe www-data. L'idée est ainsi de diminuer au maximum les droits du groupe www-data, tout en laissant possible la consultation du site web. |
<code root>chown -R root:www-data /var/www/*</code> | <code root>chown -R root:www-data /var/www/*</code> | ||
Ligne 561: | Ligne 533: | ||
A priori le fichier /var/www/index.php, au même titre que n'importe quelle page web accessible depuis un navigateur web, devrait avoir les droits suivants : | A priori le fichier /var/www/index.php, au même titre que n'importe quelle page web accessible depuis un navigateur web, devrait avoir les droits suivants : | ||
- | -rw-r----- 1 root www-data 4096 sept. 22 11:47 index.php | + | <code>-rw-r----- 1 root www-data 4096 sept. 22 11:47 index.php</code> |
On utilise les droits suivants : | On utilise les droits suivants : | ||
Ligne 600: | Ligne 572: | ||
<code root>service apache2 reload</code> | <code root>service apache2 reload</code> | ||
- | 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}} | ||
8-) **Le login du compte apache (nom de l'utilisateur du système Linux) est demandé ainsi que son mot de passe et on peut accéder à ses pages d'index !** | 8-) **Le login du compte apache (nom de l'utilisateur du système Linux) est demandé ainsi que son mot de passe et on peut accéder à ses pages d'index !** | ||