vi /etc/apache/apache.conf
<Location /> Options -Indexes </Location>
ServerSignature Off ServerTokens Prod
Afin d'obtenir différents sites sur votre serveur Web (hébergement mutualisé),
plusieurs techniques s'offre à nous.
vi /etc/apache2/sites-available/test
<VirtualHost *:81>
ServerAdmin admin@test.local # adresse mail postmaster
DocumentRoot /var/www/test/ # emplacement des sources
DirectoryIndex index.html # page par défaut
CustomLog /var/log/apache2/www.test.local-access.log combined # log d'accès
ErrorLog /var/log/apache2/www.test.local-error.log # log d'erreur
</VirtualHost>
vi /etc/apache2/ports.conf
NameVirtualHost *:80 NameVirtualHost *:81 Listen 80 Listen 81
a2ensite test apache2ctl configtest apache2ctl graceful
Cette technique est peu utilisée du fait que le protocole HTTP est définit par défaut sur le 80.
Il faut attaquer le nom ou l'ip en précisant le port :
vi /etc/apache2/sites-available/test
<VirtualHost 192.168.1.100:80>
ServerAdmin admin@test.local # adresse mail postmaster
DocumentRoot /var/www/test/ # emplacement des sources
DirectoryIndex index.html # page par défaut
CustomLog /var/log/apache2/www.test.local-access.log combined # log d'accès
ErrorLog /var/log/apache2/www.test.local-error.log # log d'erreur
</VirtualHost>
vi /etc/network/interfaces
# INTERFACE VIRTUELLE auto eth0:0 iface eth0:0 inet static address 192.168.1.100 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.254
a2ensite test apache2ctl configtest apache2ctl graceful
Cette technique repose donc sur l'interface d'écoute. Cette option peut s'avérer utile pour des restrictions d'accès comme un intranet.
vi /etc/apache2/sites-available/test
<VirtualHost *:80>
ServerAdmin admin@test.local # adresse mail postmaster
ServerName www.test.local # résolution interne
ServerAlias www.test.com # résolution externe
DocumentRoot /var/www/test/ # emplacement des sources
DirectoryIndex index.html # page par défaut
CustomLog /var/log/apache2/www.test.local-access.log combined # log d'accès
ErrorLog /var/log/apache2/www.test.local-error.log # log d'erreur
</VirtualHost>
vi /var/cache/bind/test.local.db
srv-web IN A 192.168.1.1 www IN CNAME srv-web.test.local.
a2ensite test apache2ctl configtest apache2ctl graceful
Cette technique est basé sur la résolution DNS. Vous faites pointer les alias (souvent www) vers le site web qui les héberge.
apache2ctl -V
a2enmod suphp /etc/init.d/apache2 reload
a2dismod rewrite /etc/init.d/apache2 reload
a2ensite www.truc.fr service apache2 reload
a2dissite www.machin.com service apache2 reload
apache2ctl configtest
apache2ctl graceful
apache2ctl -t -D DUMP_MODULES
ou
apache2ctl -M
apache2ctl -S
php -m
Le module auth_basic permet d'utiliser l'authentification basique HTTP pour restreindre l'accès en recherchant les utilisateurs dans les fournisseurs d'authentification spécifiés.
<Directory /var/www/site/public/> AuthUserFile /etc/apache2/users.pwd AuthName "Authentification requise" AuthType Basic Require user admin Order Deny,Allow Deny from all Allow from 172.10.1 172.20.1 Satisfy any </Directory>
Le module Rewrite est un mécanisme de manipulation d'URL particulièrement souple et puissant en supportant un nombre illimité de règles et de conditions attachées à chaque règle. Les manipulations d'URLs peuvent dépendre de tests variés : les URLs peuvent être finement caractérisées en fonction de variables du serveur, de variables d'environnement, d'en-têtes HTTP, de repères temporels, de recherches dans des bases de données externes, ou même de requêtes vers des bases de données externes et de différents gestionnaires ou programmes externes.
a2enmod rewrite
echo "Rewrite Engine On" >> /etc/apache2/apache.conf
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^84\.7\.10\.124
RewriteRule ^.*$ - [R=403]
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.artduweb.com$ [NC]
RewriteRule ^(.*) http://www.artduweb.com$1 [R=301;L]
# Redirections des domaines optionnels vers la page specifique
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.newdomaine\.com$ [NC]
RewriteRule ^/(.*) http://www.existdomaine.fr/truc/machin.html [R=301,L]
# Redirections si flv ou swp de https vers http
RewriteEngine On
RewriteCond %{REQUEST_URI} \.(?:flv|swf)$
RewriteCond %{SERVER_PORT} ^443$
RewriteRule (.*) http://www.mydomain.com/$1 [R=301,L]
RedirectMatch ^/admin https://www.domain.com/admin
Mod_ssl permet l'hébergement http avec le support SSL. Ce protocole permet à deux machines de communiquer de manière sécurisée. Les informations échangées entre les deux machines sont de ce fait inviolables. Le protocole SSL se traduit par la combinaison de deux protocoles bien distincts (Handshake et Record) qui permettent la négociation entre les deux machines et le chiffrement des données échangées.
a2enmod ssl /etc/init.d/apache2 reload
aptitude install openssl
(Détails)
openssl genrsa -des3 -out server.key 1024 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt mkdir /etc/apache2/certficate cp server.crt server.key /etc/apache2/certificate
<VirtualHost *:80 *:443>
ServerAdmin root@artduweb.com
ServerName test.artduweb.com
DocumentRoot /var/www/test/
ErrorLog /var/logs/apache2/test.artduweb.com-error_log
TransferLog /var/logs/apache2/test.artduweb.com-access_log
SSLEngine on
SSLCertificateFile /etc/apache2/certificate/server.crt
SSLCertificateKeyFile /etc/apache2/certificate/server.key
SSLProxyEngine On
RewriteEngine On
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R=301]
</VirtualHost>
apache2ctl configtest apache2ctl graceful
Mod_evasive est un module pour contrer les attaques DOS. Il est capable de détecter lorsqu'un utilisateur demande un trop grand nombre de pages sur un site web, sur un délai de temps très court. Il blackliste par IP en renvoyant une erreur 403 et peut-être couplé à IPTABLES.
aptitude install libapache2-mod-evasive
vi /etc/apache2/mods-available/mod-evasive.conf
<IfModule mod_evasive20.c>
# taille de la table de surveillance, a augmenter pour les DDoS
DOSHashTableSize 2048
# Pas plus de 5 pages par seconde
# Nb max de refresh d'une uri par periode
DOSPageCount 5
# Duree de la periode pour la uri (en secondes)
DOSPageInterval 1
# Nb max de requetes sur le site par periode
DOSSiteCount 150
# Duree de la periode pour le site (en secondes)
DOSSiteInterval 1
# Duree du blacklistage de l'IP en secondes (sans iptables)
DOSBlockingPeriod 10
# envoi de mail quand une IP est bloquee
DOSEmailNotify admin@exemple.com
# Execute une action quand une IP est bloquee
DOSSystemCommand "su - root -c /sbin/iptables -I INPUT -s %s -j DROP"
# repertoire des logs
DOSLogDir "/var/log/apache2/lock/"
# Whitelist non surveillee
DOSWhiteList 127.0.0.1
DOSWhitelist 192.168.1.*
</IfModule>
aptitude install postfix ln -s /usr/bin/mail /bin/mail chmod 755 /bin/mail mkdir /var/log/apache2/lock/ chown -R www-data:www-data /var/log/apache2/lock/
a2enmod mod-evasive
/etc/init.d/apache2 restart
ab -n 1000 -c 100 http://$IP_SERVER_WEB/
<VirtualHost _default_:80>
ServerAdmin root@domaine.fr
ServerName hostname.domaine.fr
<IfModule mod_status.c>
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 192.168.1
</Location>
</IfModule>
<IfModule mod_info.c>
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 192.168.1
</Location>
</IfModule>
</VirtualHost>
Liens utiles :
./configure --prefix=/usr/local/apache2/ \ --enable-module=so \ --enable-cgi