« Mémo Apache » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 121 : Ligne 121 :


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>.
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>.
==Retirer les informations de la page de 404 concernant le serveur=
Par défaut, le 404 renvoie des informations sur le serveur pour les supprimer, il faut rajouter les lignes suivantes dans /etc/apache2/apache2.conf :
ServerSignature Off
ServerTokens Prod
Puir redémarrer le service.

Version du 10 juin 2019 à 00:35

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.

=Retirer les informations de la page de 404 concernant le serveur

Par défaut, le 404 renvoie des informations sur le serveur pour les supprimer, il faut rajouter les lignes suivantes dans /etc/apache2/apache2.conf :

ServerSignature Off
ServerTokens Prod

Puir redémarrer le service.