Cette partie détaille l’installation, la configuration et l’utilisation des modules pour Apache 2 pour renforcer la sécurité de votre site Internet.
Installation
Sous Debian, on peut utiliser les paquets comme d’habitude.
apt-get install apache2 php5 libapache2-mod-php5 php5-gd apache2-dev
Ce que permet le paquet :
- apache2 → installation du serveur Web
- php5 → installation de Php pour générer les pages dynamiques
- libapache2-mod-php5 → fait le lien entre Apache2 et PHP5 pour activer PHP
- php5-gd → installation de la librairie GD pour générer des images
- apache2-dev → fournit l’outil “apxs2” pour compiler des modules Apache2
Configuration
Il faut modifier quelques lignes de la configuration Apache2 pour affiner la sécurité.
nano /etc/apache2/apache2.conf
Modifiez la ligne ServerTokens, car nous avons notre serveur en Production, par :
ServerTokens Prod
Puis modifiez la ligne ServerSignature pour empêcher l’affichage de la version du serveur, etc. et donc réduire les données qu’une personne mal intentionnée pourrait récupérer :
ServerSignature Off
Si vous avez des points d’interrogations à la place des accents, il faut décommenter cette ligne :
AddDefaultCharset ISO-8859-1
Modules Apache
Mod Rewriting
Le module Rewriting est très important pour le référencement Google.
Par exemple, au lieu d’avoir votre-site.com/voir_photos.php?id=1234 vous allez pouvoir formater l’URL de cette manière votre-site.com/voir_photos_superbe_motos_650_KLR,1234. Lorsqu’un internaute cliquera sur votre lien, Apache2 effectuera un remplacement, et récupèrera l’ID 1234 pour afficher correctement la page.
Par défaut, le mod_rewrite est livré avec Apache2.
Un coup de
a2enmod rewrite
et le voila activé !
Il faut maintenant éditer le fichier des VirtualHosts pour l’activer sur les sites.
nano /etc/apache2/sites-enabled/000-default
Puis ajouter la directive
AllowOverride all
dans le fichier.
# activation url rewriting AllowOverride all Options FollowSymLinks MultiViews Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place RedirectMatch ^/$ /index.html
Ainsi, dès qu’un site se situe dans le dossier ”/var/www” il sera possible de jouer avec les fichier .htaccess !
Mod SuPHP
Le module SUPHP permet à Apache de se faire passer pour le propriétaire du fichier. Cela est très utile lorsque vous hébergez plusieurs sites et que chaque site appartient à un utilisateur Linux. Sans l’utilisation de ce module, il faut donner au groupe Apache les droits sur le dossier de l’utilisateur pour que la création d’un dossier avec la fonction mkdir sous PHP ne génère pas un erreur de type : permission denied !
Ainsi, votre dossier appartient à toto et lorsque toto se connecte par FTP, il transfère ses fichiers dans le dossier géré par Apache et lors des modifications telles que l’envoi d’images de vos internautes, les dossiers et fichiers seront la propriété de toto donc il n’y aura pas de soucis de permissions.
Par contre, SuPHP ne peut pas fonctionner avec le module PHP5, il faut utiliser PHP5 en CGI.
apt-get install libapache2-mod-suphp php5-cgi
Pour configurer les options de PHP, il faut modifier le fichier CGI :
nano /etc/php5/cgi/php.ini
Sous Apache2 il faut autoriser le VirtualHost du site Internet
nano /etc/apache2/sites-enabled/000-default Options ExecCGI
On vérifie la bonne description du module :
nano /etc/apache2/mods-enabled/suphp.conf AddHandler x-httpd-php .php .php3 .php4 .php5 .phtml suPHP_AddHandler x-httpd-php suPHP_Engine on # # Use a specific php config file (a dir which contains a php.ini file) # suPHP_ConfigPath /etc/php4/cgi/suphp/ # # Tells mod_suphp NOT to handle requests with the type . # suPHP_RemoveHandler
Ensuite on configure le module avec son fichier de configuration :
nano /etc/suphp/suphp.conf [global] ;Path to logfile logfile=/var/log/suphp/suphp.log ;Loglevel loglevel=info ;User Apache is running as webserver_user=www-data ;Path all scripts have to be in ;docroot=/var/www docroot=/home/sites ;Path to chroot() to before executing script ;chroot=/mychroot ; Security options allow_file_group_writeable=false allow_file_others_writeable=false allow_directory_group_writeable=false allow_directory_others_writeable=false ;Check wheter script is within DOCUMENT_ROOT check_vhost_docroot=true ;Send minor error messages to browser errors_to_browser=false ;PATH environment variable env_path=/bin:/usr/bin ;Umask to set, specify in octal notation ;umask=0077 umask=0002 ; Minimum UID min_uid=1000 ; Minimum GID min_gid=1000 [handlers] ;Handler for php-scripts x-httpd-php=php:/usr/bin/php-cgi ;Handler for CGI-scripts x-suphp-cgi=execute:!self
On active le module SuPHP et on redémarre Apache2 :
a2enmod suphp /etc/init.d/apache2 restart
Mod Evasive
Ce module va empêcher / limiter les attaques DDOS en bloquant l’IP qui tente d’effectuer des milliers de requêtes sur le serveur pour mettre à genoux le serveur.
Le module sera téléchargé puis compilé (chez moi, l’installation par paquet n’a pas fonctionné) avec “APXS2” :
cd /tmp wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz tar xzf mod_evasive_1.10.1.tar.gz cd mod_evasive apxs2 -i -a -c mod_evasive20.c
Nous allons maintenant créer un fichier qui contient le lien vers le module compilé pour qu’Apache2 puisse l’activer :
nano /etc/apache2/mods-available/mod_evasive.load # dans le nouveau fichier, coller cette ligne : LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
Puis nous l’activons :
a2enmod mod_evasive
Pour qu’Apache2 prenne en compte ce nouveau module, il va falloir le paramétrer :
DOSHashTableSize 3097 # Nbre d'affichage de la même page par IP : X DOSPageCount 2 # Nbre d'affichage du même site par IP : X DOSSiteCount 50 # Interval d'affichage de la même page par IP : X DOSPageInterval 1 # Interval d'affichage du même site par IP : X DOSSiteInterval 1 # Durée du blocus (exprimé en secondes) DOSBlockingPeriod 10 # Notification par adresse email pour être prévenu DOSEmailNotify adresse@email.com # nouveau dossier pour y placer le logs du module DOSLogDir "/var/log/apache2/evasive/" # Utlisation de iptables pour bannier l'IP qui tente de saturer le serveur #DOSSystemCommand "/sbin/iptables -I INPUT -s %s -j DROP" # Liste blanche permettant à une IP d’effectuer un nombre illimité de requêtes #DOSWhiteLt 127.0.0.1 # création du dossier pour les logs du mod Evasive mkdir /var/log/apache2/evasive # pensez à bien donner les droits au dossier sinon Apache2 nous pourra écrire dedans chown -R www-data:www-data /var/log/apache2/evasive # on relance Apache2 et aucune erreur ne doit apparaitre /etc/init.d/apache2 reload
Test du bon fonctionnement du module Evasive avec un fichier PERL : ce script va effectuer une cinquantaine de requêtes sur notre serveur Internet.
nano test_mod_evasive.pl #!/usr/bin/perl # test.pl: small script to test mod_dosevasive's effectiveness use IO::Socket; use strict; for(0..50) { my($response); my($SOCKET) = new IO::Socket::INET( Proto => "tcp", PeerAddr=> "127.0.0.1:80"); if (! defined $SOCKET) { die $!; } print $SOCKET "GET /?$_ HTTP/1.0nn"; $response = ; print $response; close($SOCKET); } # rendre le script exécutable chmod +x test_mod_evasive.pl # exécution du script ./test_mod_evasive.pl
Le résultat s’affichera dans la fenêtre et au bout d’une dizaine de ligne, il devrait y avoir d’écrit “HTTP/1.1 403 Forbidden” ou “HTTP/1.1 404 Not Found” preuve que le module fonctionne.
Bien évidemment, sans le module activé, toutes les lignes auraient été “HTTP/1.1 200 OK” monopolisant les ressources de tout le serveur pour ce script !
Mod Cband
Le module Cband est très pratique, surtout pour un site qui contient des vidéos ou des fichiers à télécharger : en effet, ce module va permettre de limiter la bande passante allouée par IP (donc pour chaque internaute) mais aussi par VirtualHost (donc par site Internet hébergé).
Par exemple, je peux allouer seulement 50 Mbits de bande passante pour toute ma plateforme Web, laissant ainsi de la marge pour les autres applications. Sans ce module, si une personne mal intentionnée lancent 1 ou plusieurs gros téléchargements de mes fichiers à partir d’un autre serveur dédié, il y a de fortes chances pour que ma plateforme soit saturée, or si la limite globale est de 50 MBits, cette personne plafonnera à 50 Mbits et mon serveur devrait rester en activité sans trop souffrir.
Installation du module en utilisant les paquets :
apt-get install libapache2-mod-cband
Activons le module avec
a2enmod cband
Il faut ensuite le référer dans le fichier de configuration d’Apache2 (par exemple tout en bas du fichier) :
nano /etc/apache2/apache2.conf
Il faut ajouter les 2 lignes suivantes :
CBandScoreFlushPeriod 1 CBandRandomPulse On
Puis redémarrer Apache2 :
/etc/init.d/apache2 force-reload
Nous allons éditer le fichier de configuration des VirtualHosts gérés par Apache2 :
nano /etc/apache2/sites-enabled/000-default
Voici un exemple de VirtualHost avec une limitation de la bande passante par client et globalement pour un site. Notre site est par exemple situé dans le dossier ”/var/www/domaine”
ServerAdmin webmaster@localhost ServerName rxxxxx.ovh.net DocumentRoot /var/www/ # 90 Mbps pour Apache - 200 requetes/sec - 20 connexions simultanees CBandSpeed 90Mbps 200 20 # Par personne : 7 Mbps - 35 requetes/sec - 3 connexions simultanees CBandRemoteSpeed 7096 35 3 # affichage des stats de Cband # les stats seront visibles dans le dossier /var/www/administration/mod_cband_stats SetHandler cband-status # dossier sites # activation url rewriting AllowOverride all Options FollowSymLinks MultiViews Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place RedirectMatch ^/$ /index.html
Voici la liste des unités de mesures disponibles et comprises par le module Cband :
Vitesses de transfert: kbps Mbps Gbps
La valeur par défaut est kbps.
Dans cet exemple, tous les sites Internet stockés dans le dossier ”/var/www” ne pourront pas dépasser les 90 Mbps de bande passante, les 200 requêtes par secondes et les 20 connexions simultanées. Lorsqu’un internaute ira sur votre site, il ne pourra pas télécharger à plus de 7 Mbps, 35 requêtes par secondes et les 3 connexions simultannées.
Redirection de domaine.com vers www.domaine.com
Lorsqu’un visiteur entre le nom de domaine de votre site Internet, vous aimeriez bien que les “WWW” apparaissent avant le nom de domaine ? Cela est tout à fait réalisable avec le fichier des VirtualHosts (hé oui, toujours celui-la ).
Il faut donc l’éditer :
nano /etc/apache2/sites-enabled/000-default DocumentRoot /var/www/domaine ServerAdmin webmaster@domaine.fr ServerName domaine.fr ServerAlias domaine.fr www.domaine.fr # activation url rewriting AllowOverride all Options FollowSymLinks MultiViews Order allow,deny Allow from all # Et ici la redirection de tous les ServerAlias vers www.monsite.com RewriteEngine on RewriteCond %{HTTP_HOST} !^www.domaine.fr [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://www.domaine.fr/$1 [L,R=301]
N’oubliez pas de redémarrer :
/etc/init.d/apache2 restart
A présent, une requête sur “domaine.fr” renverra l’internaute sur “www.domaine.fr” !
Liste de tous les modules Apache2 disponible
Si vous cherchez un module en particulier, le site d’Apache saura vous répondre : http://httpd.apache.org/docs/2.0/mod/
amoxil online generic amoxil buy amoxicillin no prescription canada amoxicillin generic brand order Amoxicillin amoxil purchase buy amoxicillin usa is a medicine that is used for the treatment of itching cheap atarax 14 Dec 2013 ... Recently active Atarax forums and community discussion threads. Post your question or story about Atarax and connect with others who have ... dapoxetine clinical trials dapoxetine dosage dapoxetine comments dapoxetine without prescription