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:28] 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 : | + | ===== Protéger contre le Clickjacking ===== |
- | < | + | Éditez le fichier **/ |
- | KeepAlive On | + | |
- | MaxKeepAliveRequests 100 | + | |
- | KeepAliveTimeout 5</code> | + | |
- | * Bien définir un virtual host | + | Ajouter : |
+ | < | ||
- | Apache permet la définition de Virtual Host, c' | ||
- | < | ||
- | ServerName www.esiea.fr | ||
- | ... | ||
- | </ | ||
- | * Gérer ses fichiers de log | + | ===== Restreindre l' |
+ | On suppose que le répertoire /web est le répertoire où sont les fichiers de votre site web (à adapter selon votre configuration). | ||
- | Apache permet de définir ses propres formats LogFormat | + | É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, | ||
+ | Dans le cas d' | ||
- | < | + | ===== Empêcher le parcours d'un répertoire ===== |
- | LogFormat "%h %l %u %t \" | + | Pour empêcher le parcours du répertoire ///web//, ajoutez |
- | LogFormat " | + | <file> |
- | LogFormat " | + | < |
+ | Order Allow, | ||
+ | Allow from all | ||
+ | Options | ||
+ | </ | ||
- | Ensuite, on enregistre | + | ===== Désactiver |
+ | Toujours au même endroit, (dans un tag < | ||
+ | < | ||
- | < | ||
- | Suivant | + | ===== Désactiver |
+ | Si vous n' | ||
+ | < | ||
- | * Gestion des droits | ||
- | Nous présenterons ici les mesures préventives liées aux fichiers contenus dans l' | + | ===== Empêcher |
- | + | <file> | |
- | * Directory, Files, Location | + | AccessFileName .httpdoverride |
- | + | ||
- | 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 | + | |
- | | + |