Différences
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 | ||
apache2 [Le 02/07/2020, 15:42] 78.248.102.13 [HTTPS] |
apache2 [Le 15/02/2022, 18:14] krodelabestiole [mod_headers] (ortograf) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>réseau serveur internet Xenial Bionic}} | + | {{tag>réseau serveur internet Xenial Bionic Focal}} |
- | + | {{ :logo:apache-logo.png?80nolink| Logo du logiciel Apache 2}} | |
- | ---- | + | |
- | {{ apache_logo.png?80nolink| Logo du logiciel Apache 2}} | + | |
====== Serveur HTTP Apache 2 ====== | ====== Serveur HTTP Apache 2 ====== | ||
- | Un [[https://fr.wikipedia.org/wiki/Serveur_HTTP|serveur HTTP]] permet à un site web de communiquer avec un navigateur en utilisant le protocole [[https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol|HTTP(S)]] et ses extensions ([[https://fr.wikipedia.org/wiki/WebDAV|WebDAV]], etc.). **Apache** est probablement le serveur HTTP le plus populaire. C'est donc lui qui met à disposition la plupart des sites internet du [[https://fr.wikipedia.org/wiki/World_Wide_Web|WWW]].\\ | + | Un [[https://fr.wikipedia.org/wiki/Serveur_HTTP|serveur HTTP]] permet à un site web de communiquer avec un navigateur en utilisant le protocole [[https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol|HTTP(S)]] et ses extensions ([[https://fr.wikipedia.org/wiki/WebDAV|WebDAV]], etc.). **Apache** est probablement le serveur HTTP le plus populaire. C'est donc lui qui met à disposition la plupart des sites Web du [[https://fr.wikipedia.org/wiki/World_Wide_Web|WWW]].\\ |
Il est produit par la //Apache Software Foundation//. C'est un logiciel libre fourni sous la [[wpfr>Licence_Apache|licence spécifique Apache]]. | Il est produit par la //Apache Software Foundation//. C'est un logiciel libre fourni sous la [[wpfr>Licence_Apache|licence spécifique Apache]]. | ||
Ligne 17: | Ligne 15: | ||
===== Installation ===== | ===== Installation ===== | ||
- | Pour installer Apache seul, [[:tutoriel:comment_installer_un_paquet|installez simplement le paquet]] **[[apt>apache2|apache2]]**. | + | Pour installer Apache seul, [[:tutoriel:comment_installer_un_paquet|installez simplement le paquet]] **[[apt>apache2]]**. |
Pour installer Apache avec PHP et MySQL ou MariaDB, reportez vous à l'[[:lamp#installation|installation de LAMP]]. | Pour installer Apache avec PHP et MySQL ou MariaDB, reportez vous à l'[[:lamp#installation|installation de LAMP]]. | ||
Ligne 200: | Ligne 198: | ||
<note tip> | <note tip> | ||
- | On peut définir un hôte virtuel par un nom de domaine même sans avoir de nom de domaine enregistré chez un registrar. | + | On peut définir un hôte virtuel sans avoir de nom de domaine enregistré chez un registrar. |
On peut soit utiliser un sous-domaine de ''localhost'', comme ''example.localhost'', qui pointera directement sur la machine locale (et qui ne sera donc valable que sur la machine qui fait tourner Apache), soit créer un nouveau nom de domaine "fictif". | On peut soit utiliser un sous-domaine de ''localhost'', comme ''example.localhost'', qui pointera directement sur la machine locale (et qui ne sera donc valable que sur la machine qui fait tourner Apache), soit créer un nouveau nom de domaine "fictif". | ||
Ligne 240: | Ligne 238: | ||
=== Installation de Certbot === | === Installation de Certbot === | ||
- | Pour installer Certbot, [[:ppa#ajout_d_un_ppa_a_vos_sources_logicielles|ajoutez le PPA]] officiel **ppa:certbot/certbot**, puis installez le paquet [[apt>python3-certbot-apache]] : | + | Pour installer Certbot : |
<code>sudo apt install python3-certbot-apache</code> | <code>sudo apt install python3-certbot-apache</code> | ||
Ligne 256: | Ligne 254: | ||
=== Renouvellement automatique === | === Renouvellement automatique === | ||
- | Pour information c'est la commande ''certbot renew'' qui permet de renouveler les certificats très simplement, mais Certbot créé automatiquement une [[:cron|tâche cron]] à cet effet dans ''/etc/cron.d/certbot''. | + | Pour information c'est la commande ''certbot renew'' qui permet de renouveler les certificats très simplement, mais Certbot créé automatiquement une [[:cron|tâche cron]] à cet effet dans ''/etc/cron.d/certbot''. Il est également créé un « //timer// » systemd qui fait la même chose (/lib/systemd/system/certbot.timer et certbot.service). |
Le script est lancé automatiquement toutes les 12 heures, mais les certificats ne seront renouvelés que si nécessaire. En principe il n'y a donc rien à faire. | Le script est lancé automatiquement toutes les 12 heures, mais les certificats ne seront renouvelés que si nécessaire. En principe il n'y a donc rien à faire. | ||
Ligne 333: | Ligne 331: | ||
<note>On peut écrire ces règles de réécriture dans une section //[[#hotes_virtuels|<VirtualHost>]]// ou //[[#hotes_virtuels|<Directory>]]// (le comportement n'est pas le même), ou dans un fichier //[[#.htaccess]]//.</note> | <note>On peut écrire ces règles de réécriture dans une section //[[#hotes_virtuels|<VirtualHost>]]// ou //[[#hotes_virtuels|<Directory>]]// (le comportement n'est pas le même), ou dans un fichier //[[#.htaccess]]//.</note> | ||
+ | <note important>N'oubliez pas de modifier le virtualhost en conséquence sinon les règles de réécriture .htaccess ne fonctionneront pas correctement. Voici un exemple de configuration qui marche : | ||
+ | <code> | ||
+ | <Directory /var/www/html> | ||
+ | AllowOverride All | ||
+ | </Directory> | ||
+ | </code> | ||
+ | </note> | ||
==== mod_proxy==== | ==== mod_proxy==== | ||
Ligne 393: | Ligne 398: | ||
# Cet en-tête empêchera les autres sites d'intégrer les pages de ce site dans des frames. | # Cet en-tête empêchera les autres sites d'intégrer les pages de ce site dans des frames. | ||
- | # C'est une mesure de portection contre les attaques par détournement de clic (clickjacking) | + | # C'est une mesure de protection contre les attaques par détournement de clic (clickjacking) |
# Attention cet en-tête est rendue obsolète par les CSP | # Attention cet en-tête est rendue obsolète par les CSP | ||
# | # | ||
Header set X-Frame-Options: "sameorigin" | Header set X-Frame-Options: "sameorigin" | ||
- | # Cet en-tête oblige les navigateurs à utiliser la protection XSS même s'il l'ont désactivé | + | # Cet en-tête est obsolète et doit être spécifiquement désactivée avec la valeur O |
- | # | + | # Pour une protection XSS, utilisez des CSP empêchant l'exécution des scripts « en ligne » |
- | Header set X-XSS-Protection "1; mode=block" | + | Header set X-XSS-Protection "0" |
# En-tête qui permet de masquer la technologie utilisée (par exemple PHP 7.0) | # En-tête qui permet de masquer la technologie utilisée (par exemple PHP 7.0) | ||
Ligne 419: | Ligne 424: | ||
</VirtualHost></file> | </VirtualHost></file> | ||
- | Enfin, toujours dans un objectif de sécurité, vous pourrez être amené à utiliser les en-têtes [[https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP|Content-Security-Policy]], exemple : | + | Enfin, toujours dans un objectif de sécurité, vous devez utiliser les en-têtes [[https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP|Content-Security-Policy]], exemple : |
<file>Header always set Content-Security-Policy: "default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com"</file> | <file>Header always set Content-Security-Policy: "default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com"</file> | ||
Ligne 456: | Ligne 461: | ||
==== Fail2ban ==== | ==== Fail2ban ==== | ||
- | Pour contrer les attaques par force brute sur un système d'authentification d'une application web, il est vivement recommandé d'utiliser l'application [[:Fail2ban]]. | + | Pour limiter les attaques par force brute sur un système d'authentification d'une application web, il est parfois recommandé d'utiliser l'application [[:Fail2ban]]. |
===== Problèmes courants ===== | ===== Problèmes courants ===== |