« Apache2 » : différence entre les versions
(Ajout d'une ligne de désactivation de signature + ajout d'une source + aération du code + modernisation systemd + ajout configuration globale) |
Aucun résumé des modifications |
||
(8 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:service_web]] | [[Category:service_web]] | ||
=Contrôle d'accès= | |||
Il est possible de définir un ensemble de règles pour contrôler les accès à un répertoire partagé via ''Apache2''. Ce contrôle se fait soit via la configuration de l'hôte virtuel concerné, soit via un fichier ''.htaccess'', ou bien les deux. | |||
==Interdiction d'accès== | |||
Pour interdire l'accès à un répertoire, il suffit d'ajouter la section suivante dans l'hôte virtuel concerné : | |||
<syntaxhighlight lang="apache"> | |||
<Directory /var/www/monsite/rep_à_protéger/> | |||
Deny from all | |||
</Directory> | |||
</syntaxhighlight> | |||
Ceci à un intérêt lorsque des informations présentes dans ledit répertoire ne doivent être accessibles que côté serveur et non client. | |||
Plus de détails peuvent êtres trouvé dans la [http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow documentation d'Apache2]. | |||
=Rediriger vers HTTPS= | |||
Si vous souhaitez que vos clients soient redirigés automatiquement vers la version HTTPS de votre site lorsqu'il tapent juste l'URL de celui-ci (port 80 par défaut dans les navigateurs), il faut simplement mettre cette ligne au début de votre hôte virtuel : | |||
<syntaxhighlight lang="apache"> | |||
Redirect permanent / https://votresite.fr/ | |||
</syntaxhighlight> | |||
==Source de la section== | |||
* https://www.webrankinfo.com/dossiers/techniques/redirection-http-https | |||
=Activer le HTTP2= | |||
'''Activer le module''' | |||
a2enmod http2 | |||
'''Éditer la configuration du site''' | |||
vim /etc/apache2/sites-enabled/toto.conf | |||
et ajouter le paramètre suivant: | |||
<syntaxhighlight lang="apache"> | |||
Protocols h2 http/1.1 | |||
</syntaxhighlight> | |||
Par exemple: | |||
<syntaxhighlight lang="apache"> | |||
<VirtualHost *:443> | |||
Protocols h2 http/1.1 | |||
ServerAdmin toi@tes-le-meilleurs.fr | |||
ServerName tes-le-meilleurs.fr | |||
... | |||
</VirtualHost> | |||
</syntaxhighlight> | |||
'''Relancer le service Apache''' | |||
systemctl restart apache2.service | |||
==Source de la section== | |||
* https://http2.pro/doc/Apache | |||
=Désactiver les signatures= | =Désactiver les signatures= | ||
{{info|Les signatures sont les phrase en bas de page qui indique votre distribution et la version de apache. Ex: "Apache/x.x.x (Debian) Server at domaine.local Port 443"}} | |||
{{info|Les signatures sont les phrase en bas de page qui indique votre distribution et la version de apache. Ex: "Apache/x.x.x (Debian) Server at domaine.local Port 443".}} | |||
Éditer le fichier VirtualHost d'apache (pour une configuration spécifique au site) | Éditer le fichier VirtualHost d'apache (pour une configuration spécifique au site) | ||
Ligne 13 : | Ligne 67 : | ||
et ajouter | et ajouter | ||
< | <syntaxhighlight lang="apache"> | ||
ServerSignature Off | ServerSignature Off | ||
ServerTokens Prod | ServerTokens Prod | ||
</ | </syntaxhighlight> | ||
Quitter et redémarrer le service | Quitter et redémarrer le service ''Apache2'' : | ||
systemctl restart apache2.service | systemctl restart apache2.service | ||
{{info|< | {{info|<syntaxhighlight lang="apache" inline>ServerSignature Off</syntaxhighlight> désactive la signature visible en bas de page tandis que <syntaxhighlight lang="apache" inline>ServerTokens Prod</syntaxhighlight> désactive les détails sur la version d'apache utilisé dans le code source des pages.}} | ||
==Source de la section== | ==Source de la section== | ||
* http://ask.xmodulo.com/turn-off-server-signature-apache-web-server.html | * http://ask.xmodulo.com/turn-off-server-signature-apache-web-server.html | ||
=Désactiver le | =Désactiver le listage de fichiers= | ||
Désactiver le | Désactiver le listage de fichiers « ''index of'' » dans les répertoires ''WEB'' | ||
Désactiver le module autoindex | Désactiver le module ''autoindex'' | ||
a2dismod autoindex | a2dismod autoindex | ||
Redémarrer le service apache: | Redémarrer le service apache : | ||
systemctl restart apache2.service | |||
=Partage WebDAV= | |||
[https://fr.wikipedia.org/wiki/WebDAV WebDAV] (''Web-based Distributed Authoring and Versioning'') est une extension du protocole ''HTTP'' défini par l{{'}}''IETF'' et normé dans la ''RFC'' [https://tools.ietf.org/html/rfc4918 4918]. Il permet de récupérer, déposer et synchroniser des fichiers (incluant les répertoires) d'un client à un serveur. Son objectif principal est de rendre possible l'écriture de données à travers le ''WEB'' là où seule la lecture était possible via les commandes ''HTTP'' natives (parler de partage de fichier avec la commande ''PUT HTTP'' n'est pas sérieux). On peut le considérer comme le successeur du protocole ''FTP'' tombé en désuétude suite à la multiplication des ''NAT'' sur Internet (qui lui posait problème, surtout dans sa version chiffrée). Enfin, ''WebDAV'' permet à plusieurs utilisateurs d'éditer le contenu d'un répertoire distant simultanément car il sait gérer les droits d'accès aux fichiers en les verrouillant momentanément lors de leur accès en écriture. | |||
==Mise en œuvre== | |||
Sa configuration s'effectue à l'intérieur des balises <syntaxhighlight lang="apache" inline><Directory></syntaxhighlight> comme suit : | |||
Activation des modules | |||
a2enmod dav dav_fs | |||
Avec les configurations permettant l'authentification ou non suivantes : | |||
Sans authentification | |||
<syntaxhighlight lang="apache"> | |||
<Directory "Chemin/à/partager"> | |||
DAV on | |||
Order Allow,Deny | |||
Allow from all | |||
</Directory> | |||
</syntaxhighlight> | |||
Avec authentification | |||
<syntaxhighlight lang="apache"> | |||
<Directory "Chemin/à/partager"> | |||
Dav on | |||
Order Allow,Deny | |||
Allow from all | |||
AuthType Digest | |||
AuthName "toto" | |||
AuthUserFile "/srv/httpd/utilisateurs.pwd" | |||
AuthDigestProvider file | |||
Require valid-user | |||
</Directory> | |||
</syntaxhighlight> | |||
a2enmod auth_digest | |||
Création de la base utilisateur | |||
mkdir -p /srv/httpd | |||
htdigest -c /srv/httpd/utilisateurs.pwd realm utilisateur | |||
chown -R www-data: /srv/httpd/ | |||
chmod 500 /srv/httpd/ | |||
chmod 400 /srv/httpd/utilisateurs.pwd | |||
''Note : "realm" correspond à un nom quelconque qui devra être renseigné dans le paramètre <syntaxhighlight lang="apache" inline>AuthName</syntaxhighlight> (ici "toto") de l'hôte virtuel Apache permettant à l'utilisateur de savoir quel identifiant rentrer (voir [https://datatracker.ietf.org/doc/html/rfc2617#section-3.2.1 RFC 2617 section 3.2.1])''. | |||
Redémarrage du service | |||
systemctl restart apache2.service | |||
==Sources de la section== | |||
* https://httpd.apache.org/docs/2.4/fr/mod/mod_dav.html | |||
* http://httpd.apache.org/docs/current/howto/auth.html | |||
=Journalisation et mandataire inverse= | |||
Derrière un mandataire inverse ([[:Category:Reverse_proxy|reverse proxy]]), le serveur ''WEB'' n'obtient que l'adresse ''IP'' source de celui-ci et non celle du client ayant initié la requête. Il en résulte des journaux d'accès biaisés avec la seule ''IP'' du mandataire (aucun intérêt). Si ce dernier a été [[Haproxy#Configuration|configuré]] pour ajouter l{{'}}''IP'' source du client dans une entête ''X-Forwarded-For'', il est possible de demander à ''Apache'' de lire cette information et de la répercuter dans les journaux. | |||
Activation du module | |||
a2enmod remoteip | |||
Chargement de celui-ci | |||
echo "LoadModule remoteip_module modules/mod_remoteip.so" >> /etc/apache2/apache2.conf | |||
Exploitation de cette capacité dans l'hôte virtuel (à mettre au même niveau que <syntaxhighlight lang="bash" inline>DocumentRoot</syntaxhighlight>) | |||
RemoteIPHeader X-Forwarded-For | |||
Prise en compte des modifications | |||
systemctl restart apache2.service | systemctl restart apache2.service | ||
==Sources de la section== | |||
* https://unix.stackexchange.com/questions/627492/how-to-add-x-forwarded-for-header-in-reverse-proxy-with-ssl-passthrough | |||
* https://www.haproxy.com/documentation/hapee/latest/load-balancing/client-ip-preservation/add-x-forward-for-header/ | |||
* https://httpd.apache.org/docs/current/mod/mod_remoteip.html#remoteipheader |
Dernière version du 9 mai 2023 à 18:42
Contrôle d'accès
Il est possible de définir un ensemble de règles pour contrôler les accès à un répertoire partagé via Apache2. Ce contrôle se fait soit via la configuration de l'hôte virtuel concerné, soit via un fichier .htaccess, ou bien les deux.
Interdiction d'accès
Pour interdire l'accès à un répertoire, il suffit d'ajouter la section suivante dans l'hôte virtuel concerné :
<Directory /var/www/monsite/rep_à_protéger/>
Deny from all
</Directory>
Ceci à un intérêt lorsque des informations présentes dans ledit répertoire ne doivent être accessibles que côté serveur et non client.
Plus de détails peuvent êtres trouvé dans la documentation d'Apache2.
Rediriger vers HTTPS
Si vous souhaitez que vos clients soient redirigés automatiquement vers la version HTTPS de votre site lorsqu'il tapent juste l'URL de celui-ci (port 80 par défaut dans les navigateurs), il faut simplement mettre cette ligne au début de votre hôte virtuel :
Redirect permanent / https://votresite.fr/
Source de la section
Activer le HTTP2
Activer le module
a2enmod http2
Éditer la configuration du site
vim /etc/apache2/sites-enabled/toto.conf
et ajouter le paramètre suivant:
Protocols h2 http/1.1
Par exemple:
<VirtualHost *:443>
Protocols h2 http/1.1
ServerAdmin toi@tes-le-meilleurs.fr
ServerName tes-le-meilleurs.fr
...
</VirtualHost>
Relancer le service Apache
systemctl restart apache2.service
Source de la section
Désactiver les signatures
INFORMATION
Les signatures sont les phrase en bas de page qui indique votre distribution et la version de apache. Ex: "Apache/x.x.x (Debian) Server at domaine.local Port 443".Éditer le fichier VirtualHost d'apache (pour une configuration spécifique au site)
vim /etc/apache2/sites-enabled/000-default.conf
ou éditer directement le fichier de configuration global (pour tout les sites)
vim /etc/apache2/apache2.conf
et ajouter
ServerSignature Off
ServerTokens Prod
Quitter et redémarrer le service Apache2 :
systemctl restart apache2.service
INFORMATION
ServerSignature Off
désactive la signature visible en bas de page tandis que ServerTokens Prod
désactive les détails sur la version d'apache utilisé dans le code source des pages.Source de la section
Désactiver le listage de fichiers
Désactiver le listage de fichiers « index of » dans les répertoires WEB
Désactiver le module autoindex
a2dismod autoindex
Redémarrer le service apache :
systemctl restart apache2.service
Partage WebDAV
WebDAV (Web-based Distributed Authoring and Versioning) est une extension du protocole HTTP défini par l'IETF et normé dans la RFC 4918. Il permet de récupérer, déposer et synchroniser des fichiers (incluant les répertoires) d'un client à un serveur. Son objectif principal est de rendre possible l'écriture de données à travers le WEB là où seule la lecture était possible via les commandes HTTP natives (parler de partage de fichier avec la commande PUT HTTP n'est pas sérieux). On peut le considérer comme le successeur du protocole FTP tombé en désuétude suite à la multiplication des NAT sur Internet (qui lui posait problème, surtout dans sa version chiffrée). Enfin, WebDAV permet à plusieurs utilisateurs d'éditer le contenu d'un répertoire distant simultanément car il sait gérer les droits d'accès aux fichiers en les verrouillant momentanément lors de leur accès en écriture.
Mise en œuvre
Sa configuration s'effectue à l'intérieur des balises <Directory>
comme suit :
Activation des modules
a2enmod dav dav_fs
Avec les configurations permettant l'authentification ou non suivantes :
Sans authentification
<Directory "Chemin/à/partager">
DAV on
Order Allow,Deny
Allow from all
</Directory>
Avec authentification
<Directory "Chemin/à/partager">
Dav on
Order Allow,Deny
Allow from all
AuthType Digest
AuthName "toto"
AuthUserFile "/srv/httpd/utilisateurs.pwd"
AuthDigestProvider file
Require valid-user
</Directory>
a2enmod auth_digest
Création de la base utilisateur
mkdir -p /srv/httpd htdigest -c /srv/httpd/utilisateurs.pwd realm utilisateur chown -R www-data: /srv/httpd/ chmod 500 /srv/httpd/ chmod 400 /srv/httpd/utilisateurs.pwd
Note : "realm" correspond à un nom quelconque qui devra être renseigné dans le paramètre AuthName
(ici "toto") de l'hôte virtuel Apache permettant à l'utilisateur de savoir quel identifiant rentrer (voir RFC 2617 section 3.2.1).
Redémarrage du service
systemctl restart apache2.service
Sources de la section
- https://httpd.apache.org/docs/2.4/fr/mod/mod_dav.html
- http://httpd.apache.org/docs/current/howto/auth.html
Journalisation et mandataire inverse
Derrière un mandataire inverse (reverse proxy), le serveur WEB n'obtient que l'adresse IP source de celui-ci et non celle du client ayant initié la requête. Il en résulte des journaux d'accès biaisés avec la seule IP du mandataire (aucun intérêt). Si ce dernier a été configuré pour ajouter l'IP source du client dans une entête X-Forwarded-For, il est possible de demander à Apache de lire cette information et de la répercuter dans les journaux.
Activation du module
a2enmod remoteip
Chargement de celui-ci
echo "LoadModule remoteip_module modules/mod_remoteip.so" >> /etc/apache2/apache2.conf
Exploitation de cette capacité dans l'hôte virtuel (à mettre au même niveau que DocumentRoot
)
RemoteIPHeader X-Forwarded-For
Prise en compte des modifications
systemctl restart apache2.service
Sources de la section
- https://unix.stackexchange.com/questions/627492/how-to-add-x-forwarded-for-header-in-reverse-proxy-with-ssl-passthrough
- https://www.haproxy.com/documentation/hapee/latest/load-balancing/client-ip-preservation/add-x-forward-for-header/
- https://httpd.apache.org/docs/current/mod/mod_remoteip.html#remoteipheader