« Apache2 » : différence entre les versions

De Wiki doc

(Ajout création du dossier /srv/httpd)
Aucun résumé des modifications
 
Ligne 6 : Ligne 6 :
==Interdiction d'accès==
==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é :
Pour interdire l'accès à un répertoire, il suffit d'ajouter la section suivante dans l'hôte virtuel concerné :
<source lang="apache">
<syntaxhighlight lang="apache">
<Directory /var/www/monsite/rep_à_protéger/>
<Directory /var/www/monsite/rep_à_protéger/>
  Deny from all
  Deny from all
</Directory>  
</Directory>  
</source>
</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.
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.
Ligne 19 : Ligne 19 :
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 :
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 :


<source lang="apache">
<syntaxhighlight lang="apache">
Redirect permanent / https://votresite.fr/
Redirect permanent / https://votresite.fr/
</source>
</syntaxhighlight>


==Source de la section==
==Source de la section==
Ligne 33 : Ligne 33 :
  vim /etc/apache2/sites-enabled/toto.conf
  vim /etc/apache2/sites-enabled/toto.conf
et ajouter le paramètre suivant:
et ajouter le paramètre suivant:
<source lang="apache">
<syntaxhighlight lang="apache">
Protocols h2 http/1.1
Protocols h2 http/1.1
</source>
</syntaxhighlight>


Par exemple:
Par exemple:
<source lang="apache">
<syntaxhighlight lang="apache">
<VirtualHost *:443>
<VirtualHost *:443>
   Protocols h2 http/1.1
   Protocols h2 http/1.1
Ligne 45 : Ligne 45 :
   ...
   ...
</VirtualHost>
</VirtualHost>
</source>
</syntaxhighlight>


'''Relancer le service Apache'''
'''Relancer le service Apache'''
Ligne 67 : Ligne 67 :
et ajouter
et ajouter


<source lang="apache">
<syntaxhighlight lang="apache">
ServerSignature Off
ServerSignature Off
ServerTokens Prod
ServerTokens Prod
</source>
</syntaxhighlight>


Quitter et redémarrer le service ''Apache2'' :
Quitter et redémarrer le service ''Apache2'' :
Ligne 76 : Ligne 76 :
  systemctl restart apache2.service
  systemctl restart apache2.service


{{info|<source lang="apache" inline>ServerSignature Off</source> désactive la signature visible en bas de page tandis que <source lang="apache" inline>ServerTokens Prod</source> désactive les détails sur la version d'apache utilisé dans le code source des pages.}}
{{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==
Ligne 97 : Ligne 97 :
==Mise en œuvre==
==Mise en œuvre==


Sa configuration s'effectue à l'intérieur des balises <source lang="apache" inline><Directory></source> comme suit :
Sa configuration s'effectue à l'intérieur des balises <syntaxhighlight lang="apache" inline><Directory></syntaxhighlight> comme suit :


Activation des modules
Activation des modules
Ligne 106 : Ligne 106 :
Sans authentification
Sans authentification


<source lang="apache">
<syntaxhighlight lang="apache">
<Directory "Chemin/à/partager">
<Directory "Chemin/à/partager">
DAV on
DAV on
Ligne 112 : Ligne 112 :
Allow from all
Allow from all
</Directory>
</Directory>
</source>
</syntaxhighlight>


Avec authentification
Avec authentification
<source lang="apache">
<syntaxhighlight lang="apache">
<Directory "Chemin/à/partager">
<Directory "Chemin/à/partager">
Dav on
Dav on
Ligne 128 : Ligne 128 :
Require valid-user
Require valid-user
</Directory>
</Directory>
</source>
</syntaxhighlight>


  a2enmod auth_digest
  a2enmod auth_digest
Ligne 139 : Ligne 139 :
  chmod 400 /srv/httpd/utilisateurs.pwd
  chmod 400 /srv/httpd/utilisateurs.pwd


''Note : "realm" correspond à un nom quelconque qui devra être renseigné dans le paramètre <source lang="apache" inline>AuthName</source> (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])''
''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
Redémarrage du service
Ligne 147 : Ligne 147 :
* https://httpd.apache.org/docs/2.4/fr/mod/mod_dav.html
* https://httpd.apache.org/docs/2.4/fr/mod/mod_dav.html
* http://httpd.apache.org/docs/current/howto/auth.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
==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 à 19: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

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