Accueil
Fermer

Publicité

Nos liens web
Les liens utiles
Publicité
Configurer Apache - Guide .htaccess - Les directives Imprimer Envoyer
Écrit par Thierry S.   
Index de l'article
Configurer Apache - Guide .htaccess
Généralités
Les classes
Les pages d'erreur
Les directives
Autres Tutoriels
Toutes les pages

Activer la base Rewriting

Certains serveurs ne sont pas configurés avec mod_rewrite activé par défaut. Pour vous assurer que mod_rewrite (réécriture de base) est activé sur votre site, ajoutez la ligne suivante à votre fichier htaccess qui se trouve à la racine de votre site :

# activer basic rewriting
RewriteEngine on

Activer les liens symboliques

Activer les liens symboliques (symlinks) en ajoutant la directive suivante dans le répertoire cible du fichier htaccess.
Note: Pour la directive FollowSymLinks tout comme AllowOverride; les privilèges doivent être activés dans le fichier de configuration de serveur.

# activer les liens symboliques
Options +FollowSymLinks

Renommez le fichier htaccess (côté serveur)

La plupart de hébergement gardent l'extention .htaccess par défaut mais sachez qu'il vous est possible de renommer cette extention  par celle de votre choix.
Note: Cette directive doit être ajoutée dans le fichier de configuration du serveur sinon elle ne fonctionnera pas :

# renommer les fichiers htaccess
AccessFileName ht.access

Note: Si vous renommez vos fichiers htaccess, n'oubliez pas de mettre à jour les paramètres de configuration associés.
Par exemple, si vous protégez vos fichiers via htaccess FilesMatch souvenez-vous d'informer le nouveau nom de fichier:

# Protége les fichiers htaccess renommés
<FilesMatch "^ht\.">
Order deny,allow
Deny from all
</FilesMatch>

Désactiver la Signature du serveur

Ici, nous désactivons la signature numérique qui permet d'identifier le serveur:

# desactive la signature du serveur
ServerSignature Off

Réglez le fuseau horaire du serveur

Nous sommes ici pour instruction au serveur pour synchroniser chronologiquement en fonction du fuseau horaire spécifié de certains pays:

# mettre le server timezone pour Paris
SetEnv TZ Europe/Paris

ou

# mettre le server timezone pour Washington
SetEnv TZ America/Washington

ou bien Londres

# mettre le server timezone pour Washington
SetEnv TZ Europe/London

Empêcher le listage des répertoires

Habituellement, si votre site ne dispose pas d’une page d’index par défaut tous les fichiers de ce répertoire sont accessibles aux visiteurs. Pour éviter cela utilisez le code suivant.

# Protège si pas d'index dans un repertoire
Options All -Indexes

De même, cette règle empêche le serveur de lister le contenu de répertoires:

# empêche le listage de repertoires
IndexIgnore *
#Définir la langue le jeu de caractères par défaut
AddDefaultCharset UTF-8

Limite les requêtes par methode GET et PUT
Options -ExecCGI -Indexes -All
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD) RewriteRule .* - [F]

Processus de sélection de fichiers selon la méthode de demande au serveur
# traiter les fichiers selon la méthode de demande au serveur
Script PUT /cgi-bin/upload.cgi
Script GET /cgi-bin/download.cgi

Exécuter différents types de fichiers par le biais d'un script CGI

Pour des besoins spéciaux où certains types de fichiers doivent être traités avec certains script cgi

# execute tous les fichiers png par png-script.cgi
Action image/png /cgi-bin/png-script.cgi

Améliorer la vitesse de transfert de site, en permettant la mise en cache des fichiers

Comment améliorer la vitesse de transfert de fichier en permettant la mise en cache.
Utilisation de temps en secondes * pour indiquer la durée de mise en cache du contenu.

# mettre en cache les images et fichiers flash pour un mois
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

# mettre en cache les fichiers javascript, texte,css et pdf pour une semaine
<FilesMatch ".(js|css|pdf|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>

#mettre en cache les fichiers html et htm pour un jour
<FilesMatch ".(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>

#mettre un cache minimum pendant la durée de construction d'un site
<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|js|css|pdf|swf|html|htm|txt)$">
Header set Cache-Control "max-age=5"
</FilesMatch>

#desactive le cache pour les scripts et fichiers dynamiques
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

# methode alternative pour mettre en cache les fichiers
ExpiresActive On
ExpiresDefault A604800 # 1 week
ExpiresByType image/x-icon A2419200 # 1 month
ExpiresByType application/x-javascript A2419200 # 1 month
ExpiresByType text/css A2419200 # 1 month
ExpiresByType text/html A300 # 5 minutes
# desactive le cache de scripts et fichiers
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
ExpiresActive Off
</FilesMatch>


* Convertir des intervalles de temps en secondes:
300 = 5 minutes
2700 = 45 minutes
3600 = 1 heure
54000 = 15 heures
86400 = 1 jour
518400 = 6 jours
604800 = 1 semaine
1814400 = 3 semaines
2419200 = 1 mois
26611200 = 11 mois
29030400 = 1 an = n'expire jamais


Limiter l'accès au réseau local (LAN)
# limiter l'accès au réseau local
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 192.168.0.0/33
</Limit>

Déguise les extentions de fichiers

Cette méthode se charge de déguiser tous les types de fichiers (toute extension de fichier) et de les présenter comme des fichiers .php (ou celle de votre choix)

# déguise toutes les extensions de fichier par php
ForceType application/x-httpd-php

Planquer les extensions de script

Pour renforcer la sécurité, de dissimuler les langages de script, en remplaçant l'extensions d'origine par celle de votre choix.
Par exemple, pour changer le .php par l'extension .foo ajouter la ligne suivante à votre fichier htaccess et renommé tous les fichiers en conséquence

# change toutes les extentions .foo par .php
AddType application/x-httpd-php .foo

# change toutes les extentions .foo par .cgi
AddType application/x-httpd-cgi .foo

Bloquer les Proxy
RewriteEngine on
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteRule ^(.*)$ - [F]

Protection par le couple .htaccess et .htpasswd

Il est parfois nécessaire de protéger l’accès à un répertoire sur un serveur web (ex : répertoire d’administration, contenant des données sensibles) afin d’éviter que n’importe qui puisse y accéder.
Il y a différentes méthodes, ont peut avoir recourt à des langages comme le PHP, ASP, PERL …), mais la méthode la plus simple est d’utiliser le mécanisme de protection d’Apache.
C'est-à-dire effectuer une protection à l’aide des fichiers .htaccess et .htpasswd. On estime ici que l’on n’a pas accès au fichier de configuration http.conf.

AuthUserFile indique au serveur Web où trouver le fichier .htpasswd, qui contient les noms d'utilisateurs et les mots de passe associés.ce fichier devra être mis en CHMOD 444 pour eviter sa lecture.
AuthGroupFile permet de définir un droit d’accès à un groupe d’utilisateur. Cette solution n’est que rarement utilisée pour un site Web. Le reste du temps il pointe vers /dev/null. Il faut que cette ligne soit présente.
AuthName indique le nom de la zone protégée. On peut y mettre ce qu'on veut et sera visible dans la zone de dialogue lors de l'accès.
AuthType Basic est le type d'authentification utilisé. C'est le seul actuellement vraiment utilisé.
Require valid-user accepte tous les utilisateurs qui ont un login : mot de passe dans .htpasswd.

La section Limit permet de donner les directives, comme par exemple "require valid-user" (on pourrait spécifier un ou plusieurs utilisateurs précis avec par exemple require user nom1, nom2). GET et POST sont deux méthodes de la norme HTTP, et là on indique qu'on effectue la restriction sur ces deux méthodes. On peut ne pas mettre de limite, ce qui a pour conséquence d'appliquer les directives à toutes les méthodes.POST est utilisé pour autoriser l’upload de fichiers sous le protocole http.

Ici un générateur de password excellent outils en ligne pour générer vos password.

# protection d'un type de fichiers par password
<Files secure.php>
AuthType Basic
# titre pour la zone de dialogue
AuthName "Prompt"
# repertoire dans lequel se trouve .htpasswd
AuthUserFile /home/path/. htpasswd
Require valid-user
</Files>

# protection de multiple types de fichiers par password
<FilesMatch "^(execute|index|secure|insanity|biscuit)*$">
AuthType basic
# titre pour la zone de dialogue
AuthName "Developpement"
# repertoire dans lequel se trouve .htpasswd
AuthUserFile /home/path/. htpasswd
Require valid-user
</FilesMatch>

# protection du repertoire dans lequel se trouve les user-passwords
AuthType basic
# titre pour la zone de dialogue
AuthName "Répertoire protégé"
# repertoire dans lequel se trouve .htpasswd
AuthUserFile /home/path/. htpasswd
AuthGroupFile /dev/null
Require valid-user

Autoriser un ou plusieurs utilisateurs (via l'adresse IP ou nom de domaine) à accéder à un répertoire

En spécifiant l'adresse IP d'une machine, seule cette machine pourra entrer dans la zone protégée sans mot de passe. On peut ajouter autant d'adresse que l'on désire.Avec cette méthode, on peut égalment protéger l'accès à un répertoire à un groupe de machine ou un domaine suivant la précision de l'adresse IP (129.194 ou 129.194.34).
La directive Order s'assure que "allow" supplante "deny" et que ce n'est pas le contraire. Il est toujours bon de préciser les choses. En général "allow from all" est la configuration par défaut des serveurs Web. Ces directives peuvent être restreintes à certaines méthodes HTTP comme GET ou POST (mais il y a aussi PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, et UNLOCK) en utilisant une section débutant par exemple par <Limit GET POST> ...directives... </Limit>.

#protection par password d'un répertoire à l'exeption d'un IP
AuthType Basic
# titre pour la zone de dialogue
AuthName "Répertoire perso"
# repertoire dans lequel se trouve .htpasswd
AuthUserFile /home/path/. htpasswd
Require valid-user
# autorisation pour cet IP
Allow from 82.85.74.68
# autorisation pour ce nom de domaine
Allow from .domaine-a.fr
Satisfy Any

Autoriser un seul domaine à accéder à un ensemble de fichiers

Cet exemple autorise uniquement les gens d'un établissement (.domaine-a.fr) à visionner les fichiers qui débutent par les lettres "visu".

# repertoire dans lequel se trouve .htpasswd
AuthUserFile /home/path/. htpasswd
AuthGroupFile /dev/null
# titre pour la zone de dialogue
AuthName "Zone protégée du cours "
AuthType Basic
# restriction sur tous les fichiers qui commencent par visu
<Files visu*>
Order Allow, Deny
Deny from all
Allow from .domaine-a.fr
</Files>

Autoriser deux domaines ou un utilisateur hors domaines-autorisés à accéder à un répertoire

S'il y a à la fois les directives "allow" et "require" dans un même fichier, le serveur a besoin de savoir si le client est supposé remplir toutes les conditions ou bien une seule. Avec le paramètre "any" (au lieu de "all" par défaut) il faut remplir une seul des conditions.Contrôle par mot de passe: si l'on n'accède pas depuis un des domaines précédents il faut fournir un mot de passe

AuthUserFile /home/path/. htpasswd
AuthGroupFile /dev/null
AuthName "Zone protégée du cours "
AuthType Basic
Satisfy any
Order Deny,Allow
Deny from all
#2 domaines autorisés
Allow from .domaine-a.fr
Allow from .domaine-b.com
#L'utilisateur Danakyl est autorisé
Require user Danaky

Voici une excellente méthode pour SSL (Secure Sockets Layer) :

# méthode SSL
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "domain.tld"
ErrorDocument 403 https://domain.tld

# méthode SSL sans le mod_ssl
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Attribuer un CHMOD sur divers types de fichiers automatiquement

Cette méthode va vous permettre de changer les droits sur les fichiers 'CHMOD)de votre choix , emplyez les directives ci dessous soit dans le htaccess root ou dans un htaccess secondaire d'un sous répertoire si placé en root les chmods seront appliqués pour tous repertoires et ses sous répertoires.

# CHMOD à 400 pour des fichiers privés
chmod . htpasswd files 640
chmod . htaccess files 644
chmod php files 600

Protection contre attaque DOS (denial-of-service) en limitant le poid de fichier en upload

Une méthode pour aider à protéger votre serveur contre les attaques DOS implique de limiter la taille maximale autorisée pour le téléchargement de fichiers. Ici, nous limiterons la taille des fichiers envoyés à 10240000 bytes, ce qui équivaut à environ 10 méga-octets.
Pour cette règle, les tailles de fichiers sont exprimées en octets.
Note: ce code est utile uniquement si vous permettez aux utilisateurs d'uploader des fichiers sur votre site.

# Protection contre attaque DOS
LimitRequestBody 10240000

Protection des répertoires en désactivant l'exécution de scripts. voir Contenu dynamique basé sur CGI

Protéger les répertoires de l'exécution de scripts en ajoutant cette règle au fichier htaccess d'un répertoire qui ne comporte pas de script (modifier les types de fichiers en fonction de vos besoins):

En général c'est dans des répertoires ne comportant aucun script que certains scripts malicieux sont insérés lorsque que votre FTP à subit une intrusion (serveur vulnérable)

ExecCGI autorise l'exécution des scripts, si cette option est à -ExecCGI alors le code source du script sera affiché à l'écran.
SymLinksIfOwnerMatch fait la même chose que FollowSymLinks mais suit les liens symboliques créer uniquement par l'utilisateur étant propriétaire des fichiers et répertoires.
AddHandler indique au serveur qu'il doit traiter tous les fichiers possédant les extensions définies en tant que programmes CGI :

# Protection des répertoires en désactivant l'exécution de scripts
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI

Ici ce termine donc le guide  pratique d'introduction au htaccess !! qui je pense devrait vous permettre de moins appréhender la chose.

Au lieu de le recopier; référencez le c'est plus élégant et c'est la meilleure manière de me remercier ... Complice


Mise à jour le Samedi, 17 Octobre 2009 22:52
 
Powerd by Web-Infoservice
rentabilisez votre site aujourd'hui !
XHTML Validation
CSS Validation
Flux Rss