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:04] linkuff |
install:secureapache [2018/04/30 09:58] linkuff [Protéger contre le Clickjacking] |
||
---|---|---|---|
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 : | + | ===== Protéger contre le Clickjacking et le Referer ===== |
- | < | + | Éditez le fichier **/ |
- | KeepAlive On | + | |
- | MaxKeepAliveRequests 100 | + | |
- | KeepAliveTimeout 5</code> | + | |
- | * Bien définir un virtual host | + | Ajouter : |
+ | < | ||
+ | add_header Referrer-Policy strict-origin-when-cross-origin;</ | ||
- | Apache permet la définition de Virtual Host, c'est-à-dire | + | ===== Restreindre l'accès aux seuls fichiers du répertoire web ===== |
- | < | + | On suppose |
- | ServerName www.esiea.fr | + | |
- | ... | + | |
- | </ | + | |
- | | + | É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 de définir ses propres formats LogFormat pour les enregistrements dans les fichiers de log. | + | ===== Empêcher le parcours d'un répertoire ===== |
+ | Pour empêcher le parcours du répertoire ///web//, ajoutez l' | ||
+ | < | ||
+ | < | ||
+ | Order Allow, | ||
+ | Allow from all | ||
+ | Options -Indexes | ||
+ | </ | ||
- | <code>LogFormat "%h %l %u %t \" | + | ===== Désactiver les inclusions coté serveur ===== |
- | LogFormat "%h %l %u %t \" | + | Toujours au même endroit, (dans un tag <Directory>) : |
- | LogFormat " | + | <file>Options |
- | LogFormat " | + | |
- | Ensuite, on enregistre les informations de log précisées par le format dans le fichier de son choix | ||
- | <code>CustomLog / | + | ===== Désactiver l' |
+ | Si vous n' | ||
+ | <file>Options -ExecCGI</file> | ||
- | Suivant l' | ||
- | * Gestion des droits | + | ===== Empêcher |
- | + | <file> | |
- | Nous présenterons ici les mesures préventives liées aux fichiers contenus dans l' | + | AccessFileName .httpdoverride |
- | + | ||
- | * 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' | + | |
- | <code>User apache | + | ou interdire une IP précise : |
- | Group apache</code> | + | <file> |
+ | Order Allow, | ||
+ | Allow from all | ||
+ | Deny from 192.168.0.5 | ||
+ | </file> | ||
- | * suexec | + | etc... |
- | Le problème | + | Le principe |
+ | **Allow,Deny** : L'IP doit être dans un Allow from **et** ne pas être dans un Deny From pour être autorisée\\ | ||
+ | **Deny,Allow** : L'IP doit être dans un Deny from **et** ne pas être dans un Allow From pour être interdite | ||
- | Il est déjà compilé sur une RedHat mais pas forcément activé, il suffit alors d'un chmod u+s /usr/sbin/suexec pour le rendre actif. | + | Pour ceux qui voudraient aller encore plus loin [[http://www.system-linux.eu/index.php? |
- | < | + | ---- |
- | ls -l /usr/sbin/suexec | + | |
- | -r-s--x--- 1 root | + | |
- | # httpd -l | + | |
- | Compiled-in modules: | + | |
- | http_core.c | + | |
- | mod_so.c | + | |
- | | + |