System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

Configuration avancée d'apache2

Voici quelques informations et quelques pistes pour arriver à vos fins avec apache. htaccess, modules, vhost, configuration du nombre de processus etc...

Protéger un répertoire par un mot de passe avec htaccess :

Il s'agit d'une des applications les plus utiles du fichier .htaccess car elle permet de définir de façon sûre (à l'aide d'un login et d'un mot de passe) les droits d'accès à des fichiers par certains utilisateurs.

La syntaxe est la suivante :

AuthUserFile {emplacement du fichier de mot de passe}
AuthGroupFile {emplacement du fichier de groupe}
AuthName "Veuillez vous identifier s'il vous please !"
AuthType Basic

<LIMIT GET POST>
Require valid-user
</LIMIT>

La commande AuthUserFile permet de définir l'emplacement du fichier contenant les logins et les mots de passe des utilisateurs autorisés à accéder à un répertoire donné.

La commande AuthGroupFile permet de définir l'emplacement du fichier contenant les groupes d'utilisateurs autorisés à s'identifier. Il est possible d'outrepasser cette déclaration de groupe en mettant : /dev/null.

Voici un exemple de fichier .htaccess :

<Directory /repertoire/a/proteger>

ErrorDocument 403 http://www.system-linux.eu/acces-refuse.php
AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse
AuthGroupFile /dev/null
AuthName "Accès sécurisé au site CCM"
AuthType Basic

<LIMIT GET POST>
Require valid-user
</LIMIT>

</Directory>

Le fichier de mot de passe est un fichier texte devant contenir sur chacune des ses lignes le nom de chaque utilisateur suivi des deux points (:), puis du mot de passe crypté ou en clair.

.FichierDeMotDePasse est un simple fichier texte contenant les noms des utilisateurs suivis d'un : puis du mot de passe crypté (ou non) de cet utilisateur. Ce fichier de mot de passe ne devrait pas être mis dans un répertoire virtuel Internet (mais comment faire autrement si l'on ne possède pas de serveur Internet et que notre site est hébergé par un tiers ?). Il faut de plus prendre la précaution de mélanger des majuscules, des minuscules, des chiffres et des symboles dans le nom du fichier... Crypter les mots de passe

Apache fournit un outil permettant de générer facilement des mots de passe cryptés (aussi bien sous Windows que sous Unix), il s'agit de l'utilitaire htpasswd accessible dans le sous-répertoire bin d'Apache.

La syntaxe de cet utilitaire est la suivante :

Pour créer un nouveau fichier de mots de passe :

htpasswd -c {chemin du fichier de mot de passe} utilisateur

Pour ajouter un nouvel utilisateur/mot de passe à un fichier existant :

htpasswd {chemin du fichier de mot de passe} utilisateur

Le mot de passe sera demandé en ligne de commande avec bien sur une confirmation.

Voici un lien qui donne des informations sur les differents modules utilisable par apache2 :

cliquez moi

Activation/désactivation des modules d’Apache :

Pour voir les modules disponibles tapez la commande

a2enmod

puis pour activer le module

a2enmod nom_module

Pour voir les modules chargés tapez la commande

a2dismod
ou
./apachectl -t -D DUMP_MODULES (si vous n'avez pas installé apache par votre gestionnaire de paquet)

puis pour désactiver le module

a2dismod nom_module

Forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload
ou
/opt/http/bin/apachectl reload

Activation/désactivation site/répertoire virtuel :

Dans le répertoire /etc/apache2/sites-availables créez un fichier de configuration de site dans l’exemple suivant je créé un répertoire virtuel dans le fichier mon_repertoire_virtuel :

Alias /test/ "/var/www/test/"
   <Directory "/var/www/test/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride None
       Order deny,allow
       Allow from all
   </Directory>

Pour activer ce répertoire virtuel tapez la commande

a2ensite  mon_repertoire_virtuel

et forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload

Pour désactiver ce répertoire virtuel tapez la commande

a2dissite  mon_repertoire_virtuel

et forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload
ou
/opt/httpd/bin/apachectl

Les commandes a2ensite et a2dissite créent/suppriment des liens symboliques dans le répertoire /etc/apache2/sites-enabled/ ou /opt/httpd/htdocs/

Bloquer les scanners de failles de sécurité avec Mod_Rewrite :

Procédez ainsi, dans votre httpd.conf ou apache2.conf mettez ceci :

RewriteEngine on
RewriteCond %{QUERY_STRING} ^(.*)http(\:|\%3A)(.*)$
ReWriteRule .* - [F]

Explications :

- la première ligne active mod_rewrite au niveau du serveur Apache - la seconde filtre toutes les requêtes qui contiennent “http:” - enfin, la dernière ligne interdit l’accès au site (F pour Forbidden) pour celles-ci

Gestion de processus pere et fils :

Dans httpd.conf ou apache2.conf selon votre installation

StartServers 10
MinSpareServers 10
MaxSpareServers 16
MaxClients 50
KeepAlive Off
MaxKeepAliveRequests 40
KeepAliveTimeout 8
Timeout 50
MaxRequestsPerChild 20

Explication :

Timeout

Timeout définit, en secondes, le temps pendant lequel votre serveur attend des réceptions et des émissions en cours de communication. Plus spécifiquement, Timeout définit le temps pendant lequel le serveur attend de recevoir une demande GET, le temps pendant lequel il attend de recevoir des paquets TCP sur une requête POST ou PUT et le temps pendant lequel il attend entre des ACK répondant aux paquets TCP. Timeout est définie sur 300 secondes, ce qui convient dans la plupart des cas.

KeepAlive

KeepAlive définit si votre serveur autorisera des connexions persistantes (c'est-à-dire plusieurs demandes par connexion). KeepAlive peut être utilisée pour empêcher tout client de consommer trop de ressources du serveur.

Par défaut, KeepAlive est définie sur off, ce qui signifie que votre serveur n'autorise pas les connexions persistantes. Vous pouvez la définir sur on, ce qui active les connexions persistantes. Dans la plupart des cas, il est préférable de laisser KeepAlive sur off car Apache ne peut avoir qu'un nombre limité de processus fils et ces processus vagabonderaient sans rien faire dans l'attente d'une connexion future possible du même client. Si vous activez Keepalive, vous devriez tenir la valeur de KeepAliveTimeout (reportez-vous à la la section intitulée KeepAliveTimeout) basse et contrôler votre fichier error_log du serveur qui vous indique s'il vous manque des processus fils pour traiter les requêtes.

MaxKeepAliveRequests

Cette directive définit le nombre maximum de demandes autorisées par connexion persistante. Le groupe Apache recommande d'utiliser un paramétrage élevé, qui améliorera les performances de votre serveur. Par défaut, MaxKeepAliveRequests est paramétrée sur 100, ce qui convient dans la plupart des cas.

KeepAliveTimeout

KeepAliveTimeout définit la durée en secondes pendant laquelle votre serveur attendra, après avoir servi une demande, la demande suivante, avant d'interrompre la connexion. Une fois une demande reçue, c'est la directive Timeout qui s'applique à sa place.

MinSpareServers et MaxSpareServers

Le serveur Web Apache s'adapte de façon dynamique à la charge reçue en maintenant un nombre de processus serveur de rechange approprié en fonction du trafic. Le serveur vérifie le nombre de processus attendant une requête et en supprime s'ils sont plus nombreux que MaxSpareServers ou en crée s'ils sont moins nombreux que MinSpareServers.

La valeur MinSpareServers par défaut de votre serveur est 5 ; la valeur MaxSpareServers par défaut de votre serveur est 20. Ces paramètres par défaut devraient être appropriés dans presque toutes les situations. Ne définissez pas une valeur très élevée pour MinSpareServers car cela créera une charge de traitement importante sur le serveur, même si le trafic est faible.

StartServers

StartServers définit le nombre de processus créés au démarrage. Du fait que le serveur Web supprime et crée des processus serveur, de façon dynamique en fonction de la charge du trafic, il est inutile de modifier ce paramètre. Votre serveur Web est réglé pour lancer huit processus serveur au démarrage.

MaxClients

MaxClients définit une limite au nombre total de processus serveur (c'est-à-dire le nombre de clients connectés simultanément) pouvant s'exécuter en même temps. Conservez une valeur élevée pour MaxClients (par défaut, la valeur du serveur est réglée sur 150) car personne d'autre ne sera autorisé à se connecter une fois ce nombre atteint. Vous ne pouvez pas définir pour MaxClients une valeur supérieure à 256 sans recompiler Apache. La principale raison d'être de MaxClients est d'éviter qu'un serveur Web surchargé ne perturbe votre système d'exploitation.

MaxRequestsPerChild

MaxRequestsPerChild définit le nombre total de demandes que chaque processus serveur fils sert avant de disparaître. La principale raison justifiant de définir MaxRequestsPerChild consiste à éviter des pertes de mémoire induites par les processus longs. La valeur par défaut de MaxRequestsPerChild pour votre serveur est 1000.

Par GanGan | le vendredi, janvier 2 2009 08:15

Commentaires

1. feten

mercredi, novembre 3 2010 | 16:36

salut ,
votre cours est pas trop détaillé