logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 [21/09/2014 06:09]
Hypathie [Installer le module php]
doc:reseau:apache2:tp01 [22/09/2014 15:42]
Hypathie [Sécuriser son site web]
Ligne 118: Ligne 118:
  
 <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 /​etc/​apache2/​sites-enabled/​000-default -> ../​sites-available/​default</​code>​+<​code>​lrwxrwxrwx 1 root root 26 sept. 19 06:06
 + /​etc/​apache2/​sites-enabled/​000-default -> ../​sites-available/​default</​code>​
  
 <​note>​ <​note>​
Ligne 259: Ligne 260:
 </​code>​ </​code>​
  
-====Sécuriser son site ====+=====Sécuriser son site web===== 
 + 
 +====Sécuriser Apache2 ​====
 Ce n'est là qu'un minimum et non une sécurisation optimale. Ce n'est là qu'un minimum et non une sécurisation optimale.
 FIXME FIXME
-===Éditer le fichier /​etc/​apache2/​conf.d/​security ​=== +====Diffuser le minimum d'​information sur apache ==== 
-  * Il s'agit de diffuser le minimum d'​information sur apache.+  * Éditer le fichier /​etc/​apache2/​conf.d/​security.
  
 <code root>vim /​etc/​apache2/​conf.d/​security</​code>​ <code root>vim /​etc/​apache2/​conf.d/​security</​code>​
Ligne 281: Ligne 284:
 <code root>​service apache2 restart</​code>​ <code root>​service apache2 restart</​code>​
  
-===Limiter l'​accès à toute l'​arborescence du système Linux===+====Vérifier certaines options <​Directory>​ de son Virtualhost====
  
-  * Désactiver le site "​sites-available/​efault" :+  * Désactiver le site "​sites-available/​default" : 
  
 <code root>​a2dissite default</​code>​ <code root>​a2dissite default</​code>​
Ligne 303: Ligne 306:
         ServerAlias www.monsite.com         ServerAlias www.monsite.com
  
-        DocumentRoot /​var/​www/​monsite.com/​public_html+        DocumentRoot /​var/​www/​monsite.com
         <​Directory />         <​Directory />
-                Options FollowSymLinks +                Options ​-FollowSymLinks 
-                AllowOverride ​None+                AllowOverride ​AuthConfig
         </​Directory>​         </​Directory>​
         <​Directory /​var/​www/>​         <​Directory /​var/​www/>​
Ligne 326: Ligne 329:
 > ''​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]])).
  
-  * On réactive le site +====Création d'un nouvelle utilisateur du système Linux==== 
-<code root>​a2ensite monsite.com</​code>​+On développera son site dans le répertoire de cet utilisateurIl est plus facile de surveiller un système bien rangé !
  
-Et comme indiqué : ''​service apache2 reload''​.+  * Par exemple du nom de "​web"​ 
 +<code root>​adduser --system web --ingroup www-data</​code>​
  
-====Développer son site web dans un /home/==== +  * On lui crée un mot de passe système : 
-Il n'est pas recommandé de travailler directement dans des répertoires du serveur. Un lien symbolique depuis le répertoire principal du serveur vers un répertoire du dossier personnel est préférable.+<code root> passwd ​web</code> ​
  
-===On désactive ​"​monsite" ​=== +  * On crée les fichiers du site web, "​monsite.com" ​dans /home/web/: 
-<code root>a2dissite ​monsite.com</​code>​+<code root>cd /​home/​web/</​code>​ 
 +<​code>​mkdir -p monsite.com/​public_html</​code>​
  
-Et on recharge ​''​service apache2 reload''​.\\ +  * On édite un index.html ​: 
 +<code root>vim /​home/​web/​monsite.com/​public_html/​index.html</​code>​ 
 +<​code><​html>​ 
 + <​body>​ 
 + <​h1>​Bienvenue sur pegaseous.com</​h1>​ 
 +  <​p>​Site en cours de réalisation !</​p>​ 
 + </​body>​ 
 +</​html></​code>​
  
-===Création d'un nouvel Virtualhost ​=== +====Restreindre l'accès à "​monsite.com"​ par login et mot de passe ==== 
-  * Par exemple du nom de "​web"​ +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.\\ ​ 
-<code root>​adduser --system web --ingroup www-data</​code>​+Pour ce faire on va créer un compte utilisateur du système Linux et un compte apache avec la commande htpasswd.
  
-  * On lui crée un mot de passe : +===Création d'un mot de passe pour accéder à "​monsite.com"​=== 
-<code root> passwd web</code> ​+Le dossier ​/etc/local est un bon endroit pour créer les fichiers de mots de passe de ce compte apache.
  
-  * On crée les fichiers du site web, par exemple du nom de "​pegaseous.com":​ +<​code ​root>cd /usr/local/ && ls</​code>​ 
-<​code>​mkdir -p pegaseous.com/public_html</​code>​+<​code>​bin ​ etc  games  include ​ lib  man  sbin  share  src</​code>​
  
-  * On corrige l'​appartenance et les droits ​:+  * Il faut créer un dossier apache du nom de son choix : 
 +Par exemple "​passwd"​ 
 +<code root>​mkdir -p apache/​passwd && cd apache/​passwd</​code>​
  
-<code root>chown -R root:​www-data /home/web/ && chmod -R 755 /home/web/</​code>​+  * Il faut générer des mots de passe pour l'​utilisateur apache2: 
 +La commande ''​htpasswd''​ va créer un fichier qui contiendra utilisateur apache /mot de passe.  
 +<code root>htpasswd ​-c passwords ​web</code> 
 +<​code>​New password:  
 +Re-type new password:  
 +Adding password for user web</​code>​
  
-  * On édite ​un index.html +-> ''​-c''​ pour la première fois qu'on crée un mot de passeSi 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''​.\\ ​ 
-<code root>vim /​home/​web/​pegaseous.com/​public_html/​index.html</​code>​+-le mot de passe est chiffré.
  
-  * On crée un lien symbolique vers /var/www +  * On peut aussi créer ​un groupe par exemple aussi dans le même dossier ​/usr/local/​apache/​passwd/​ 
-<code root>ln -s /home/web/​pegaseous.com/​ /​var/​www/​pegaseous.com</​code>​+Par exemple du nom de "​groups" ​
 +<code root>vim groups</code> 
 +<​code>​goupe1 ​web toto</​code>​
  
-  * On édite un fichier ​/​etc/​apache2/​sites-available/​pegaseous.com : +====Modifier les fichiers des sites actifs de /​etc/​apache2/​sites-available ​==== 
-Pour aller plus vite on peut se servir ​d'un fichier ​"​sites-available" ​existant qu'on modifiera. Par exemple celui du site "​monsite.com"​.+Pour restreindre l'​accès à "​monsite.com",​ il faut modifier ​d'abord le virtualhost ​"/​etc/​apache2/​sites-available/default"
  
-Si on a suivi le wiki du début : +===Pour "/​etc/​apache2/​sites-available/​default" ​ === 
-<​code>​cp ​/​etc/​apache2/​sites-available/​monsite.com ​/etc/apache2/sites-available/​pegaseous.com</​code>​+Cela est nécessaire pour restreindre l'​accès du site qui est développé dans le répertoire de l'​utilisateur ​/home/web/monsite.com qu'on a créé.
  
-Si on n'a pas de fichier ​"sites-available/​monsite.com" : ''​vim /​etc/​apache2/​sites-available/​pegaseous.com'' ​et on y colle ce qui suit.+  * On désactive ​"default" : ''​a2dissite default''​
  
-<​code ​text><​VirtualHost *:80>+  * On modifie "/​etc/​apache2/​sites-available/​default"​ comme ceci : 
 + 
 +<​code ​root>vim /​etc/​apache2/​sites-available/​default</​code>​ 
 +<​code>​ 
 +<​VirtualHost *:80>
         ServerAdmin webmaster@localhost         ServerAdmin webmaster@localhost
-        ServerName pegaseous.com 
-        ServerAlias www.pegaseous.com 
- 
-        DocumentRoot /​var/​www/​pegaseous.com 
  
 +        DocumentRoot /var/www
         <​Directory />         <​Directory />
                 Options FollowSymLinks                 Options FollowSymLinks
-                AllowOverride ​None+                AllowOverride ​AuthConfig 
 +        </​Directory>​ 
 +        <​Directory /​var/​www/>​ 
 +                Options Indexes FollowSymLinks MultiViews 
 +                AllowOverride AuthConfig 
 +                Order allow,​deny 
 +                allow from all 
 +                AuthType Basic 
 +                AuthName "Ma zone est restreinte !" 
 +                AuthBasicProvider file 
 +                AuthUserFile /​usr/​local/​apache/​passwd/​passwords 
 +                AuthGroupFile /​usr/​local/​apache/​passwd/​groups 
 +                Require valid-user 
 +        </​Directory>​ 
 +</​code>​ 
 + 
 +<​note>​ 
 +**Bien remarquer que pour pouvoir ajouter cette directive**\\  
 +-> on a mis ''​AllowOverride AuthConfig''​ à la place de ''​AllowOverride none''​. 
 + 
 + 
 +**Pour autoriser l'​accès à tous les utilisateurs** qui ont un mot de passe apache :\\  
 +-> ''​Require valid-user''​\\  
 + 
 +**On aurrait pu mettre** :\\  
 +-> ''​Require user web''​\\  
 +-> ''​Require group groupe1''​\\  
 + 
 +**On remarque que l'​option ''​Options -FollowSymLinks''​** : qui évite de suivre les liens symbolique depuis la racine /var/www 
 +</​note>​ 
 + 
 +===Pour "/​etc/​apache2/​sites-available/​monsite.com"​=== 
 + 
 +<code root>vim /​etc/​apache2/​sites-available/​monsite.com</​code>​ 
 + 
 +<​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>​
         <​Directory /​var/​www/>​         <​Directory /​var/​www/>​
                 Options -Indexes                 Options -Indexes
-                Options ​+FollowSymLinks +                Options ​-FollowSymLinks 
-               ​Options -Includes+                Options -Includes
                 Options -ExecCGI                 Options -ExecCGI
                 Options MultiViews                 Options MultiViews
Ligne 396: Ligne 463:
                 Allow from all                 Allow from all
         </​Directory>​         </​Directory>​
 + 
         ErrorLog ${APACHE_LOG_DIR}/​error.log         ErrorLog ${APACHE_LOG_DIR}/​error.log
 + 
         # Possible values include: debug, info, notice, warn, error, crit,         # Possible values include: debug, info, notice, warn, error, crit,
         # alert, emerg.         # alert, emerg.
Ligne 406: Ligne 473:
 </​code>​ </​code>​
  
-  * On active ​le site pegaseous.com : +  * On supprime ​le fichier "​monsite.com" de /​var/​www/ ​
-<code root>a2ensite pegaseous.com</​code>​+<code root>cd /​var/​www/</​code>​ 
 +<code root>rm -r monsite.com</​code>​
  
-Et on recharge ​''​service apache2 reload''​.+  * On crée un lien symbolique "​monsite.com"​ dans /​var/​www/ ​: 
 +<code root>ln -s /​home/​web/​monsite.com/​ /​var/​www/​monsite.com</​code>​
  
-  * Enfin on teste tout ça  +====Limiter l'accès à toute l'arborescence ​du système Linux====
-Au niveau du navigateur : ''​http://ip-du-serveur/​pegaseous.com''​+
  
-<​code>​Index of /pegaseous.com +===Modifier le groupe de /var/www === 
-[ICO] Name Last modified Size Description +On attribue les fichiers de /var/www au groupe www-data et non à l'​utilisateur root.
-[DIR] Parent Directory -  +
-[DIR] public_html/ 20-Sep-2014 09:15 -  +
-</​code>​+
  
-Si on clique sur ''​public_html'' ​+<code root>​chown -R root:www-data /​var/​www/​*</​code>​
  
-<code>Bienvenue sur pegaseous.com+===On vérifie les droits POSIX de /var/www/ === 
 +<note tip> 
 +A priori le fichier /​var/​www/​index.html, au même titre que n'​importe quelle page web accessible depuis un navigateur web, devrait avoir les droits suivants :
  
-Site en cours de réalisation !</​code>​+  -rw-r----- 1 root www-data 142  3 déc.  17:03 index.html 
 + 
 +On utilise les droits suivants : 
 +  * droits ​en lecture (r) écriture (w) sur les fichiers réguliers,​ 
 +  * droits en lecture (r) écriture (w) exécution (x) sur les répertoires. 
 +</note> 
 + 
 +<code root>cd /​var/</​code>​ 
 + 
 +**Pour le répertoire /var/www** , il faut donc :\\ ''​drwxr-xr-x ​ 2 root root  4096 sept. 22 11:47 www''​ 
 +<code root>​chmod 755 www</​code>​ 
 + 
 +**Pour /​var/​www/​index.html**,​ il faut donc :\\ ''​-rw-r----- 1 root www-data 142  3 déc.  17:03 index.html''​ 
 +<code root>​chmod 640 /​var/​www/​index.html</​code>​ 
 + 
 +**Pour /​home/​web/​monsite.com**,​ il faut donc :\\ ''​drwxr-xr-x 3 root www-data 4096 sept. 22 11:44 monsite.com'':​ 
 +<code root>​chmod 755 /​home/​web/​monsite.com/</​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/​inde**,​ il faut donc :\\ ''​-rw-r----- 1 root www-data 111 sept. 22 11:44 index.html''​ 
 +<code root>​chown root:​www-data /​home/​web/​monsite.com/​public_html/​index.html\ 
 + &&​ chmod 640 /​home/​web/​monsite.com/​public_html/​index.html</​code>​ 
 + 
 +**Pour le lien symbolique /​var/​www/​monsite.com** : on ne peut modifier ces droits mais ce n'est pas grave. Ce qui compte c'est le fichier vers lequel pointe un lien symbolique. 
 + 
 +===On vérifie depuis son navigateur=== 
 + 
 +  * On ré-active le site "​monsite.com"​ 
 + 
 +<code root>​a2ensite monsite.com</​code>​ 
 + 
 +<code root>​service apache2 reload</​code>​ 
 +''​http://​ip-serveur/​monsite.com/''​\\ ​
  
-> On peut réactiver "​monsite"​ si on le souhaite. +8-) **Le login du compte apache (nom de l'utilisateur ​du système Linux) est demandé ainsi que son mot de passe.**
-> Dans ce cas on peut accéder à "​monsite"​ en tapant ''​http://​ip-du-serveur/​monsite.com''; +
-> ou à "​pegaseous.com"​ en tapant ''​http://​ip-du-serveur/​pegaseous.com''​.+
  
-Il reste à ajouter un module par exemple pour le php.  
 ===== Installer le module php===== ===== Installer le module php=====
 ===Installer libapache2-mod-php5 === ===Installer libapache2-mod-php5 ===
Ligne 488: Ligne 586:
 Puisque tout fonctionne, pour utiliser php dans les autres sites, il n'y a qu'à modifier le nom de leur page d'​index.html en index.php et entrer du code php bien sûr. Puisque tout fonctionne, pour utiliser php dans les autres sites, il n'y a qu'à modifier le nom de leur page d'​index.html en index.php et entrer du code php bien sûr.
  
-  * Par exemple pour "pegaseous" :+  * Par exemple pour "monsite.com" :
  
-<code root>mv /home/web/pegaseous.com/​public_html/​index.html /home/web/pegaseous.com/​public_html/​index.php</​code>​+<code root>mv /home/web/monsite.com/​public_html/​index.html /home/web/monsite.com/​public_html/​index.php</​code>​
  
-<code root>vim /home/web/pegaseous.com/​public_html/​index.php</​code>​+<code root>vim /home/web/monsite.com/​public_html/​index.php</​code>​
 <​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 508: Ligne 606:
  
   * Tester en tapant dans le navigateur :   * Tester en tapant dans le navigateur :
-''​http://​ip-du-serveur/​pegaseous.com''​+''​http://​ip-du-serveur/​monsite.com''​
  
 et cliquer sur ''​public_html/''​ : et cliquer sur ''​public_html/''​ :
  
-<​code>​Bienvenue sur pegaseous.com+<​code>​Bienvenue sur monsite.com
  
 Site en cours de réalisation ! Site en cours de réalisation !
doc/reseau/apache2/tp01.txt · Dernière modification: 01/11/2019 08:43 par smolski

Pied de page des forums

Propulsé par FluxBB