Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
install:secureapache [2011/04/13 22:03] linkuff |
install:secureapache [2011/09/15 09:31] linkuff |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
Par défaut, Apache affiche la version que vous utilisez, votre système d' | Par défaut, Apache affiche la version que vous utilisez, votre système d' | ||
- | **/ | + | Éditez le fichier |
Nota : sur Apache/ | Nota : sur Apache/ | ||
- | Mettez | ||
- | < | ||
- | ServerTokens Prod</ | ||
+ | Recherchez la ligne contenant | ||
+ | < | ||
+ | et mettez | ||
+ | < | ||
- | * Limitations contre les DOS | + | Recherchez la ligne contenant |
+ | < | ||
+ | et mettez | ||
+ | < | ||
- | De façon à limiter la portée des attaques de type Denial of Service, il est conseillé de limiter le nombre de connexions simultanées MaxClients et en particulier le nombre de connexions persistantes MaxKeepAliveRequests. Celles-ci sont apparues avec la norme HTTP 1.1. Elles permettent d' | ||
- | Exemple pour un petit serveur : | + | ===== Restreindre l' |
- | < | + | On suppose que le répertoire |
- | KeepAlive | + | |
- | MaxKeepAliveRequests 100 | + | |
- | KeepAliveTimeout 5</code> | + | |
- | | + | Éditez le fichier |
+ | < | ||
+ | Order Deny, | ||
+ | Deny from all | ||
+ | Options None | ||
+ | AllowOverride None | ||
+ | </ | ||
+ | < | ||
+ | Order Allow, | ||
+ | Allow from all | ||
+ | </ | ||
+ | Étant donné que les directives **Options** et **AllowOverride** sont mises à **None**, vous devrez ensuite les spécifier, si besoin, pour chaque répertoire décrit dans ce fichier.\\ | ||
+ | Dans le cas d' | ||
- | Apache permet la définition de Virtual Host, c' | + | ===== Empêcher |
- | <code><VirtualHost 194.57.201.103> | + | Pour empêcher |
- | ServerName www.esiea.fr | + | <file> |
- | ... | + | <Directory /web> |
- | </VirtualHost></code> | + | Order Allow,Deny |
+ | Allow from all | ||
+ | Options -Indexes | ||
+ | </Directory></file> | ||
- | * Gérer ses fichiers de log | + | ===== Désactiver les inclusions coté serveur ===== |
+ | Toujours au même endroit, (dans un tag < | ||
+ | < | ||
- | Apache permet de définir ses propres formats LogFormat pour les enregistrements dans les fichiers de log. | ||
- | < | + | ===== Désactiver |
- | LogFormat "%h %l %u %t \" | + | Si vous n' |
- | LogFormat " | + | <file>Options |
- | LogFormat " | + | |
- | Ensuite, on enregistre les informations de log précisées par le format dans le fichier de son choix | ||
- | < | + | ===== Empêcher |
- | + | <file> | |
- | Suivant l' | + | AccessFileName .httpdoverride |
- | + | ||
- | * Gestion des droits | + | |
- | + | ||
- | Nous présenterons ici les mesures préventives liées aux fichiers | + | |
- | + | ||
- | * Directory, Files, Location | + | |
- | + | ||
- | La gestion des accès est effectuée par le module mod_access. On manipule principalement trois catégories d' | + | |
- | + | ||
- | Directory désigne un répertoire du serveur ; | + | |
- | Location une arborescence du serveur web ; | + | |
- | Files un fichier. | + | |
- | . | + | |
- | Voici un exemple un peu farfelu extrait du manuel d' | + | |
- | < | + | |
- | < | + | |
- | order deny, | + | |
- | deny from all | + | |
- | allow from env=let_me_in | + | |
- | </ | + | |
- | + | ||
- | * Mesure défensive | + | |
- | + | ||
- | Plus sérieusement, | + | |
- | + | ||
- | < | + | |
- | Order deny, | + | |
- | Deny from all | + | |
- | </ | + | |
- | + | ||
- | Ensuite, il ne reste qu'à valider l' | + | |
- | + | ||
- | Order indique dans quel ordre les directives deny et allow sont évaluées. Deny from all interdit l' | + | |
- | + | ||
- | * Options, AllowOverride | + | |
- | + | ||
- | Options contrôle | + | |
- | + | ||
- | le suivi des liens symboliques FollowSymLinks/ | + | |
- | l' | + | |
- | les Server Side Includes Includes et IncludesNOEXEC ; | + | |
- | la génération de pages d' | + | |
- | ainsi que l' | + | |
- | All regroupe les différentes options sauf MultiViews, None supprime les options. | + | |
- | MultiViews redirige une demande pour index.html vers index.html.en ou index.html.fr selon la préférence signalée par le navigateur au serveur web. | + | |
- | + | ||
- | Il est important d' | + | |
- | + | ||
- | < | + | |
- | Options SymLinksIfOwnerMatch | + | |
- | AllowOverride None | + | |
- | </ | + | |
- | + | ||
- | Un pirate pouvant écrire dans un répertoire du serveur web, par exemple via un partage NFS, peut en profiter pour accéder au fichier /etc/passwd via un lien symbolique si l' | + | |
- | + | ||
- | La directive AllowOverride peut prendre n' | + | |
- | + | ||
- | * Protection par mot de passe | + | |
- | + | ||
- | Le module mod_auth permet de protéger l' | + | |
- | + | ||
- | < | + | |
- | AllowOverride AuthConfig | + | |
- | Options SymLinksIfOwnerMatch | + | |
- | </ | + | |
- | + | ||
- | ou pour bloquer l' | + | |
- | + | ||
- | < | + | |
- | Options None | + | |
- | AllowOverride None | + | |
- | AuthName " | + | |
- | AuthType Basic | + | |
- | AuthUserFile "/ | + | |
- | require valid-user | + | |
- | </ | + | |
- | + | ||
- | Dans le cas des pages personnelles / | + | |
- | + | ||
- | < | + | |
<Files ~ " | <Files ~ " | ||
- | Order deny,allow | + | Order allow,deny |
Deny from all | Deny from all | ||
- | </ | + | Satisfy All |
+ | </ | ||
+ | </file> | ||
- | Si on veut pouvoir définir explicitement des exceptions pour les fichiers .htpipo par exemple, il faut spécifier l' | + | ===== Filtrer |
- | Le fichier .htaccess contient | + | Vous pouvez choisir |
- | <code>AuthName "my restricted stuff" | + | Par exemple : autoriser l' |
- | AuthType Basic | + | <file> |
- | AuthUserFile "/ | + | Order Deny,Allow |
- | require valid-user</code> | + | Deny from all |
+ | Allow from 127.0.0.1 | ||
+ | </file> | ||
- | Le serveur Apache s' | + | ou encore |
- | + | < | |
- | * Server Side Includes | + | Order Deny,Allow |
- | + | Deny from all | |
- | Les SSI ont déjà été présentés lors du sixième article sur la programmation sécurisée. Il s'agit d'un vestige de l' | + | Allow from 192.168.0.0/24 |
- | + | </file> | |
- | * Perl: mod_perl | + | |
- | + | ||
- | Le module mod_perl a été le résultat d'une intégration plus poussée des scripts CGI écrits en Perl. Il permet de meilleures performances qu'un script CGI classique. En terme de sécurité, il présente des risques identiques. | + | |
- | + | ||
- | * PHP: mod_php | + | |
- | + | ||
- | PHP a été conçu spécifiquement pour la programmation web en tenant compte d' | + | |
- | + | ||
- | < | + | |
- | expose_php = Off | + | |
- | max_execution_time = 30 ; Maximum execution time of each script, in seconds | + | |
- | memory_limit = 8M | + | |
- | magic_quotes_gpc = On | + | |
- | display_errors = Off | + | |
- | [SQL] | + | |
- | sql.safe_mode = On</code> | + | |
- | + | ||
- | * CGI | + | |
- | + | ||
- | Il faut limiter leur présence à des répertoires bien déterminés, | + | |
- | + | ||
- | * Répertoires des utilisateurs : mod_userdir | + | |
- | + | ||
- | Les utilisateurs du serveur peuvent bien souvent publier leurs pages dans leur répertoire public_html, | + | |
- | + | ||
- | * Directory listing : mod_dir, mod_autoindex | + | |
- | + | ||
- | La directive DirectoryIndex définit les pages d' | + | |
- | + | ||
- | * Users et users | + | |
- | Le serveur web est lancé par l' | + | ou interdire une IP précise : |
+ | < | ||
+ | Order Allow, | ||
+ | Allow from all | ||
+ | Deny from 192.168.0.5 | ||
+ | </ | ||
- | < | + | etc... |
- | Group apache</ | + | |
- | | + | Le principe est le suivant :\\ |
+ | **Allow, | ||
+ | **Deny, | ||
- | Le problème est que les scripts s' | + | Pour ceux qui voudraient aller encore plus loin [[http:// |
+ | ---- | ||
- | Il est déjà compilé sur une RedHat mais pas forcément activé, il suffit alors d'un chmod u+s / | ||
- | < | ||
- | ls -l / | ||
- | -r-s--x--- | ||
- | # httpd -l | ||
- | Compiled-in modules: | ||
- | http_core.c | ||
- | mod_so.c | ||
- | |