Directives apache
| Fiche express | |
|---|---|
| Type | Référence de configuration |
| Fichiers | httpd.conf, conf.d/*.conf
|
| Contexte SELinux | httpd_sys_content_t et apparentés
|
| Voir aussi | Apache · Commandes apache · SELinux |
Référence des principales directives de configuration d'Apache HTTP Server, regroupées par
thème, suivie des éléments de contexte SELinux spécifiques à Apache (labels de fichiers
et booléens). Toutes ces directives se placent dans httpd.conf ou dans un fichier
inclus sous conf.d/ ; certaines peuvent aussi être utilisées dans un
.htaccess si AllowOverride l'autorise (voir Htaccess).
Identité et arborescence du serveur
- ServerRoot — répertoire racine du serveur ; les autres chemins relatifs en dépendent.
- ServerTokens — niveau de détail de la version affichée sur les pages d'erreur
(OS,Prod,Major,Minor,Min,Full). MettreProden production pour limiter la fuite d'information.
- ServerSignature — ajoute (ou non) un pied de page avec la version du serveur et
l'adresse deServerAdminsur les pages d'erreur et listings de répertoire (On,Off,
- ServerAdmin — adresse e-mail de contact affichée sur les pages d'erreur.
- ServerName / UseCanonicalName — nom canonique du (virtual) host, utilisé pour
générer les URL absolues.
- DocumentRoot — racine des fichiers servis pour le site.
- PidFile — fichier contenant le PID du processus maître (sert aussi de verrou).
Processus, connexions et threads
- Listen — port (et éventuellement adresse IP, en environnement multi-hébergé) sur
lequel écouter.
- Timeout — délai maximal d'attente pour l'envoi/la réception d'une requête.
- KeepAlive — active les connexions persistantes (une connexion TCP sert plusieurs
requêtes).
- KeepAliveTimeout — délai avant fermeture d'une connexion persistante inactive.
- MaxKeepAliveRequests — nombre maximal de requêtes servies sur une connexion
persistante (0 = illimité).
- StartServers — nombre de processus enfants créés au démarrage.
- MinSpareServers / MaxSpareServers — bornes basse/haute du nombre de processus
enfants inactifs maintenus en réserve.
- ServerLimit — plafond dur du nombre de processus enfants configurables.
- MaxClients (renommé MaxRequestWorkers depuis Apache 2.4) — nombre maximal de
requêtes traitées simultanément ; au-delà, les requêtes suivantes attendent en file.
- MaxRequestsPerChild (
MaxConnectionsPerChilddepuis 2.4) — nombre de
requêtes traitées par un processus enfant avant son recyclage (limite les fuites mémoire).
- MinSpareThreads / MaxSpareThreads / ThreadsPerChild — réglages fins des
threads par processus enfant, pertinents avec le MPMworkerouevent.
- User / Group — utilisateur/groupe système sous lequel tournent les processus
enfants (jamais root).
- LoadModule — charge un module (authentification, réécriture, exécution de scripts…).
- Include — inclut le contenu d'un autre fichier de configuration.
Répertoires, accès et contenu
- Options — fonctionnalités activées pour un répertoire (
ExecCGI,
FollowSymLinks,Includes,Indexes,MultiViews,SymLinksIfOwnerMatch…).
- AllowOverride — autorise (ou non) les fichiers
.htaccessà surcharger
certaines directives (voir Htaccess).
- Order / Allow / Deny — contrôle d'accès historique (module
mod_access_compat) ; sous Apache 2.4, remplacé parRequire(à privilégier —Order/Allow/Denysont dépréciées).
- UserDir — active/désactive les répertoires personnels (
~user/). - DirectoryIndex — fichier(s) servi(s) par défaut pour un répertoire
(index.html par défaut).
- AccessFileName — nom du fichier de configuration par répertoire,
.htaccess
par défaut.
- Satisfy — combine restrictions d'authentification et de contrôle d'accès hôte
(AnyouAll).
- Alias — fait correspondre une URL à un répertoire hors de
DocumentRoot. - ScriptAlias — équivalent d'
Aliaspour les scripts exécutables (CGI). - IndexOptions, AddIcon, AddIconByType, AddIconByEncoding,
DefaultIcon — apparence des listings de répertoire générés automatiquement.
- ReadmeName / HeaderName — fichiers affichés en pied/haut de listing.
- IndexIgnore — motifs de fichiers exclus d'un listing.
- DAVLockDB — fichier de verrous pour le module WebDAV.
MIME, encodage et langues
- TypesConfig — chemin du fichier
mime.types. - DefaultType — type MIME par défaut si aucune correspondance n'est trouvée.
- MIMEMagicFile — fichier de signatures utilisé pour deviner un type MIME par contenu.
- AddType — associe une extension à un type MIME.
- AddHandler — associe une extension à un gestionnaire (scripts, langages multiples…).
- AddOutputFilter — associe une extension à un filtre de sortie.
- AddLanguage / LanguagePriority / ForceLanguagePriority — négociation de
contenu multilingue.
- AddDefaultCharset — jeu de caractères par défaut des réponses.
Journalisation
- HostNameLookups — résolution DNS inverse des IP clientes avant journalisation
(coûteux en performance, généralement désactivé — Off).
- ErrorLog — chemin du fichier de log d'erreurs.
- LogLevel — verbosité des messages de log.
- LogFormat — format personnalisé des entrées de log.
- CustomLog — fichier de log personnalisé, avec son propre format et emplacement.
Directives spécifiques aux virtual hosts
- NameVirtualHost (obsolète depuis Apache 2.4 — l'hébergement par nom se configure
directement viaListen+<VirtualHost>) — adresse IP et port partagés par plusieurs virtual hosts.
- ServerAdmin, DocumentRoot, ServerName, ErrorLog, CustomLog —
déclinaisons par virtual host des directives globales décrites plus haut.
Contextes SELinux Apache
Sous une distribution avec SELinux en mode enforcing (voir SELinux),
Apache ne peut lire/écrire que les chemins portant les labels attendus :
/etc/httpd, /etc/httpd/conf, /etc/httpd/conf.d, /var/run/httpd httpd_config_t /usr/lib64/httpd/modules httpd_modules_t /var/log/httpd httpd_log_t /var/www, /var/www/html, /var/www/cgi-bin (contenu statique) httpd_sys_content_t /var/www/cgi-bin (exécution des scripts) httpd_sys_script_exec_t
Pour appliquer un label à une arborescence hors des chemins standards (par exemple un
DocumentRoot personnalisé) :
chcon -R -u system_u /chemin/vers/le/site/ chcon -R -t httpd_sys_content_t /chemin/vers/le/site/ semanage fcontext -a -s system_u -t httpd_sys_content_t "/chemin/vers/le/site(/.*)?" restorecon -Rv /chemin/vers/le/site/
Pour un répertoire de scripts CGI exécutables :
semanage fcontext -a -s system_u -t httpd_sys_script_exec_t "/chemin/vers/le/site/cgi-bin(/.*)?"
Booléens SELinux utiles à Apache
Quelques booléens fréquemment ajustés (lister l'état courant avec
getsebool -a | grep httpd, modifier avec setsebool -P nom_booleen on) :
- httpd_can_network_connect — autorise Apache à ouvrir des connexions sortantes
(nécessaire par exemple pour un proxy applicatif ou un appel API depuis un script).
- httpd_can_network_connect_db — autorise la connexion à une base de données distante.
- httpd_can_network_relay — autorise l'usage d'Apache comme proxy.
- httpd_can_sendmail — autorise l'envoi de mail depuis les scripts servis par Apache.
- httpd_enable_cgi — autorise l'exécution de scripts CGI.
- httpd_enable_homedirs — autorise l'accès aux répertoires personnels via
UserDir.
- httpd_unified — assouplit l'ensemble des accès lecture/écriture/exécution pour les
fichiers déjà labellisés httpd_t (pratique en dépannage, à éviter en usage
permanent : trop permissif).
- httpd_use_nfs / httpd_use_cifs — autorise Apache à servir du contenu depuis un
partage réseau NFS/Samba (voir NFS, Samba).
- httpd_execmem — autorise l'exécution de code nécessitant des pages mémoire à la fois
inscriptibles et exécutables (normalement désactivé, réduit le risque d'exploitation de débordement de tampon).
- httpd_tmp_exec — autorise l'exécution de scripts depuis
/tmp. - allow_httpd_anon_write / allow_httpd_sys_script_anon_write — autorise
l'écriture dans les chemins labellisés public_content_rw_t.
Avant de désactiver SELinux par frustration, audit2allow (à partir des messages
de /var/log/audit/audit.log) permet généralement d'identifier précisément quel
label ou quel booléen manque.
Voir aussi
- Apache — vue d'ensemble du service
- Commandes apache — commandes d'exploitation courantes
- Htaccess — sous-ensemble de directives utilisables par répertoire
- SELinux — durcissement du système, contextes et booléens en détail
- Configurer vhost securise — application pratique des directives SSL