« Mémo Apache » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 86 : | Ligne 86 : | ||
== Sécuriser davantage la configuration == | == Sécuriser davantage la configuration == | ||
Mozilla fournit un générateur de configuration TLS qui permet d'avoir facilement une sécurité convenable. Il faut savoir que plus vous durcissez la configuration TLS de vos sites, plus ceux-ci deviennent inaccessibles aux vieux clients. En fonction de votre contexte et votre modèle de menace, il va vous falloir trouver le bon compris entre sécurité renforcée et accessbilité.<br/> https://mozilla.github.io/server-side-tls/ssl-config-generator/ | Mozilla fournit un générateur de configuration TLS qui permet d'avoir facilement une sécurité convenable. Il faut savoir que plus vous durcissez la configuration TLS de vos sites, plus ceux-ci deviennent inaccessibles aux vieux clients. En fonction de votre contexte et votre modèle de menace, il va vous falloir trouver le bon compris entre sécurité renforcée et accessbilité.<br/> [https://mozilla.github.io/server-side-tls/ssl-config-generator/ https://mozilla.github.io/server-side-tls/ssl-config-generator/] | ||
<br/> Si vous voulez durcir vos configurations TLS au maximum, BetterCrypto fournit un papier indiquant les paramètres à mettre en place pour différents services (Apache, NGINX, Postfix, Dovecot, etc.).<br/> https://bettercrypto.org/static/applied-crypto-hardening.pdf | <br/> Si vous voulez durcir vos configurations TLS au maximum, BetterCrypto fournit un papier indiquant les paramètres à mettre en place pour différents services (Apache, NGINX, Postfix, Dovecot, etc.).<br/> [https://bettercrypto.org/static/applied-crypto-hardening.pdf https://bettercrypto.org/static/applied-crypto-hardening.pdf] | ||
<br/> Si vous voulez tester la robustesse de votre configuration TLS, vous pouvez utiliser l'outil de de testssl.sh.<br/> https://testssl.sh/testssl.sh | <br/> Si vous voulez tester la robustesse de votre configuration TLS, vous pouvez utiliser l'outil de de testssl.sh.<br/> [https://testssl.sh/testssl.sh https://testssl.sh/testssl.sh] | ||
== Effectuer une redirection (à tester): == | |||
Issu de : https://httpd.apache.org/docs/2.4/fr/rewrite/avoid.html | |||
<code class="module">[https://httpd.apache.org/docs/2.4/fr/mod/mod_alias.html mod_alias]</code> fournit les directives <code class="directive">[https://httpd.apache.org/docs/2.4/fr/mod/mod_alias.html#redirect Redirect]</code> et <code class="directive">[https://httpd.apache.org/docs/2.4/fr/mod/mod_alias.html#redirectmatch RedirectMatch]</code> qui permettent de rediriger une URL vers une autre. Plutôt que d'utiliser la directive <code class="directive">[https://httpd.apache.org/docs/2.4/fr/mod/mod_rewrite.html#rewriterule RewriteRule]</code> pour ce genre de redirection simple d'une URL ou d'une classe d'URLs vers une autre, on préfèrera l'utilisation de ces directives. En outre, avec <code>RedirectMatch</code>, vous pouvez inclure une expression rationnelle dans votre critère de redirection, ce qui vous permet de bénéficier de nombreux avantages de la directive <code>RewriteRule</code>. | |||
Une utilisation courante de la directive <code>RewriteRule</code> est la redirection de toute une classe d'URLs. Par exemple, toutes les URLs faisant référence au répertoire <code>/un</code> doivent être redirigées vers <code>http://un.example.com/</code>, ou toutes les requêtes <code>http</code> doivent être redirigées vers <code>https</code>. | |||
Pour ce faire, il est préférable d'utiliser la directive <code>Redirect</code>. Souvenez-vous que la directive <code>Redirect</code> conserve les informations relatives au chemin. En d'autres termes, la redirection d'une URL <code>/un</code> va aussi rediriger toutes les URLs de niveaux inférieurs comme <code>/un/deux.html</code> et <code>/un/trois/quatre.html</code>. | |||
Pour rediriger les URLs sous <code>/un</code> vers <code>http://un.example.com/</code>, utilisez cette définition : | |||
<pre class="prettyprint lang-config prettyprinted" style=""><span class="kwd">Redirect</span><span class="pln"> </span><span class="pun">/</span><span class="pln">one</span><span class="pun">/</span><span class="pln"> http</span><span class="pun">://</span><span class="pln">one</span><span class="pun">.</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span></pre> | |||
Pour rediriger un nom d'hôte vers un autre nom d'hôte, par exemple <code>example.com</code> vers <code>www.example.com</code>, voir la méthode [https://httpd.apache.org/docs/2.4/fr/rewrite/remapping.html#canonicalhost Noms d'hôtes canoniques]. | |||
Pour rediriger les URLs <code>http</code> vers <code>https</code>, utilisez cette définition : | |||
<pre class="prettyprint lang-config prettyprinted" style=""><span class="pun"><</span><span class="tag">VirtualHost</span><span class="pln"> </span><span class="pun">*:</span><span class="lit">80</span><span class="pun">></span><span class="pln"> | |||
</span><span class="kwd">ServerName</span><span class="pln"> www</span><span class="pun">.</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com | |||
</span><span class="kwd">Redirect</span><span class="pln"> </span><span class="str">"/"</span><span class="pln"> </span><span class="str">"https://www.example.com/"</span><span class="pln"> | |||
</span><span class="pun"></</span><span class="tag">VirtualHost</span><span class="pun">></span><span class="pln"> | |||
</span><span class="pun"><</span><span class="tag">VirtualHost</span><span class="pln"> </span><span class="pun">*:</span><span class="lit">443</span><span class="pun">></span><span class="pln"> | |||
</span><span class="kwd">ServerName</span><span class="pln"> www</span><span class="pun">.</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com | |||
</span><span class="com"># ... insérer ici la configuration SSL</span><span class="pln"> | |||
</span><span class="pun"></</span><span class="tag">VirtualHost</span><span class="pun">></span></pre> | |||
L'utilisation de la directive <code>RewriteRule</code> pour accomplir cette tâche peut se justifier s'il existe d'autres directives <code>RewriteRule</code> dans la même portée. En effet, lorsque des directives <code>Redirect</code> et <code>RewriteRule</code> se trouvent dans la même portée, les directives <code>RewriteRule</code> sont exécutées en premier, sans tenir compte de leur ordre d'apparition dans le fichier de configuration. | |||
Dans le cas de la redirection ''http-vers-https'', l'utilisation de règles <code>RewriteRule</code> se justifie si vous n'avez pas accès au fichier de configuration principal, et devez donc accomplir cette tâche au sein d'un fichier <code>.htaccess</code>. |
Version du 26 avril 2019 à 14:24
Apache
Installation / désinstallation # Installation sudo apt install apache2 # Déinstallation sudo apt remove apache2 # Déinstallation avec suppression des fichiers de configuration sudo apt purge apache2
Commandes de configuration
Activer un module
Les modules disponibles se trouvent dans le répertoire /etc/apache2/mods-available/. a2enmod <module> # Exemple a2enmod ssl
Activer une configuraton
Les configurations disponibles se trouvent dans le répertoire /etc/apache2/conf-available/.
a2enconf <config> # Exemple a2enconf php7.0-fpm
Activer un site
Les sites disponibles se trouvent dans le répertoire /etc/apache2/sites-available/
a2ensite <site> # Exemple a2ensite default-ssl.conf
Vérifier la validité de la configuration
apachectl configtest
Démarrer Apache
systemctl start apache2
Stopper Apache
systemctl stop apache2
Redémarrer Apache
systemctl restart apache2
Recharger Apache
systemctl reload apache2
Fichiers de configuration
Exemple de VirtualHost basique avec HTTPS activé
<VirtualHost *:80> ServerName www.exemple.org ServerAlias exemple.fr web.exemple.org ServerAdmin admin@exemple.fr DocumentRoot /var/www/exemple.org <Directory /var/www/exemple.org> AllowOverride All Require all granted </Directory> </VirtualHost> <VirtualHost *:443> ServerName www.exemple.org ServerAlias exemple.fr web.exemple.org ServerAdmin admin@exemple.fr DocumentRoot /var/www/exemple.org <Directory /var/www/exemple.org> AllowOverride All Require all granted </Directory> SSLEngine on SSLCertificateKeyFile /etc/ssl/private/exemple.org_priv_key.pem SSLCertificateFile /etc/ssl/certs/exemple.org_cert.pem </VirtualHost>
Sécuriser davantage la configuration
Mozilla fournit un générateur de configuration TLS qui permet d'avoir facilement une sécurité convenable. Il faut savoir que plus vous durcissez la configuration TLS de vos sites, plus ceux-ci deviennent inaccessibles aux vieux clients. En fonction de votre contexte et votre modèle de menace, il va vous falloir trouver le bon compris entre sécurité renforcée et accessbilité.
https://mozilla.github.io/server-side-tls/ssl-config-generator/
Si vous voulez durcir vos configurations TLS au maximum, BetterCrypto fournit un papier indiquant les paramètres à mettre en place pour différents services (Apache, NGINX, Postfix, Dovecot, etc.).
https://bettercrypto.org/static/applied-crypto-hardening.pdf
Si vous voulez tester la robustesse de votre configuration TLS, vous pouvez utiliser l'outil de de testssl.sh.
https://testssl.sh/testssl.sh
Effectuer une redirection (à tester):
Issu de : https://httpd.apache.org/docs/2.4/fr/rewrite/avoid.html
mod_alias
fournit les directives Redirect
et RedirectMatch
qui permettent de rediriger une URL vers une autre. Plutôt que d'utiliser la directive RewriteRule
pour ce genre de redirection simple d'une URL ou d'une classe d'URLs vers une autre, on préfèrera l'utilisation de ces directives. En outre, avec RedirectMatch
, vous pouvez inclure une expression rationnelle dans votre critère de redirection, ce qui vous permet de bénéficier de nombreux avantages de la directive RewriteRule
.
Une utilisation courante de la directive RewriteRule
est la redirection de toute une classe d'URLs. Par exemple, toutes les URLs faisant référence au répertoire /un
doivent être redirigées vers http://un.example.com/
, ou toutes les requêtes http
doivent être redirigées vers https
.
Pour ce faire, il est préférable d'utiliser la directive Redirect
. Souvenez-vous que la directive Redirect
conserve les informations relatives au chemin. En d'autres termes, la redirection d'une URL /un
va aussi rediriger toutes les URLs de niveaux inférieurs comme /un/deux.html
et /un/trois/quatre.html
.
Pour rediriger les URLs sous /un
vers http://un.example.com/
, utilisez cette définition :
<span class="kwd">Redirect</span><span class="pln"> </span><span class="pun">/</span><span class="pln">one</span><span class="pun">/</span><span class="pln"> http</span><span class="pun">://</span><span class="pln">one</span><span class="pun">.</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span>
Pour rediriger un nom d'hôte vers un autre nom d'hôte, par exemple example.com
vers www.example.com
, voir la méthode Noms d'hôtes canoniques.
Pour rediriger les URLs http
vers https
, utilisez cette définition :
<span class="pun"><</span><span class="tag">VirtualHost</span><span class="pln"> </span><span class="pun">*:</span><span class="lit">80</span><span class="pun">></span><span class="pln"> </span><span class="kwd">ServerName</span><span class="pln"> www</span><span class="pun">.</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com </span><span class="kwd">Redirect</span><span class="pln"> </span><span class="str">"/"</span><span class="pln"> </span><span class="str">"https://www.example.com/"</span><span class="pln"> </span><span class="pun"></</span><span class="tag">VirtualHost</span><span class="pun">></span><span class="pln"> </span><span class="pun"><</span><span class="tag">VirtualHost</span><span class="pln"> </span><span class="pun">*:</span><span class="lit">443</span><span class="pun">></span><span class="pln"> </span><span class="kwd">ServerName</span><span class="pln"> www</span><span class="pun">.</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com </span><span class="com"># ... insérer ici la configuration SSL</span><span class="pln"> </span><span class="pun"></</span><span class="tag">VirtualHost</span><span class="pun">></span>
L'utilisation de la directive RewriteRule
pour accomplir cette tâche peut se justifier s'il existe d'autres directives RewriteRule
dans la même portée. En effet, lorsque des directives Redirect
et RewriteRule
se trouvent dans la même portée, les directives RewriteRule
sont exécutées en premier, sans tenir compte de leur ordre d'apparition dans le fichier de configuration.
Dans le cas de la redirection http-vers-https, l'utilisation de règles RewriteRule
se justifie si vous n'avez pas accès au fichier de configuration principal, et devez donc accomplir cette tâche au sein d'un fichier .htaccess
.