Académique Documents
Professionnel Documents
Culture Documents
Sécurité Linux :
Sécuriser le serveur Web
Apache
Module : Administration systèmes et réseaux
Responsable : ADBI
Email : adbi.usms@gmail.com
Plan 2
Introduction
Apache
Liste des modules installés par défaut
Fonctionnalités
Fichiers de configuration
Le répertoire /etc/apache2/mods-available
Le répertoire /etc/apache2/mods-enabled
Le répertoire/etc/apache2/sites-available/
Le fichier /etc/apache2/ports.conf
Le fichier /etc/apache2/apache2.conf
Plan 3
dynamiques :
cat /etc/apache2/mods-available/userdir.load
Les fichiers avec l'extension conf sont les fichiers de configuration des modules :
cat /etc/apache2/mods-available/userdir.conf
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo
AuthConfig Limit
Options MultiViews
Indexes SymLinksIfOwnerMatch
IncludesNoExec
</Directory> </IfModule>
Le répertoire /etc/apache2/mods-enabled 14
ce sont les fichiers qui sont inclus dans le fichier de configuration principal par
les directives :
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
ces fichiers sont en fait des liens qui pointent vers les fichiers de
/etc/apache2/mods-available
Pour activer un module (ce qui revient donc à créer le lien), il est pratique
d'utiliser la commande suivante :
#a2enmod mod_userdir
Le répertoire/etc/apache2/sites-available/ 15
Le répertoire/etc/apache2/sites-enalable/
Contient les fichiers de configuration des sites web activés
ces fichiers sont en fait des liens qui pointent vers les fichiers de
/etc/apache2/sites-available
pour activer un site, il existe une commande :
#a2ensite fichier_conf.
"fichier_conf" étant un fichier de configuration présent dans /etc/apache2/sites-
available/
Le fichier /etc/apache2/ports.conf 16
Sile serveur est très sollicité, il faudra dans un premier temps diminuer cette
quantité puis si les problèmes persistes, mettre KeepAlive à Off. Les
connexions persistantes peuvent empêcher d'autres utilisateurs d'obtenir leur
réponse.
User www et Group www : détermine l'utilisateur et le groupe utilisés par le serveur.
Ne jamais mettre root
Le fichier /etc/apache2/apache2.conf 22
warn : "emerg" + "alert" + "crit" + "error" + erreurs non bloquantes (pages mal
codées, scripts comportant des erreurs non bloquantes...)
Exemple :
<html>
<body>
<!--#exec cmd="ls" --><BR/>
La date locale <!--#echo var="DATE_LOCAL" -->
</body>
</html>
Permet de contrôler les accès sur un fichier, de la même manière que le fait
<Directory> sur les répertoires Généralement utilisé sur un ensemble de fichier
particulier
Exemple : Interdit à tout client d'accéder aux fichiers commençant par .ht
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
La directive <Files> 33
module installé sur le système, un dont l’extension est .load qui contient la directive le
#/etc/init.d/apache2 restart
La configuration des modules
40
Lors de leur activation, les modules utilisent leur configuration par défaut contenue
dans le répertoire/etc/apache2/mods-available
Installation :
#a2enmod geoip
#/etc/init.d/apache2 restart
La configuration des modules
41
#gedit /etc/hosts
127.0.0.1 site1.ma
127.0.0.1 site2.ma
Créer les dossier pour les sites dans le dossier /var/www
#mkdir /var/www/site1
#mkdir /var/www/site2
créer un fichier de configuration pour chaque site dans dans /etc/apache2/sites-available
#cp /etc/apache2/sites-available/default.conf site1.conf
#vim site1.conf
Virtual host basé sur le nom (suite)
<VirtualHost *:80>
44
ServerAdmin admin@site1.ma
ServerName www.site1.ma
ServerAlias www.site1.ma
DocumentRoot /var/www/site1
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/site1>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Virtual Hosts basé sur le port
45
le Serveur Web Apache2 est configuré pour écouter sur le port 80
Il est possible d'utiliser des ports différents pour chaque hôte virtuel (site)
Ajouter les noms des site dans le fichier /etc/hosts pour la même @IP
Virtual Hosts basé sur le port
Créer le fichier de configuration pour chaque site (site1.conf) 46
<VirtualHost *:8081>
ServerAdmin admin@site1.ma
ServerName www.site1.ma
ServerAlias www.site1.ma
DocumentRoot /var/www/site1
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/site1>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHos>
Ajouter les lignes suivantes dans le fichier /etc/apache2/ports.conf
Listen 80801
Virtual Hosts basé sur la @IP
47
Avec cette solution le serveur soit doté de plusieurs interfaces réseau, soit de plusieurs @IP
associées à une interface réseau
nous créons des Hôtes Virtuels utilisant chacun une @IP
Exemple:
site1.ma 192.168.1.2
site2.ma 192.168.1.3
Dans un premier temps, nous renseignons le fichier /etc/hosts avec des noms de sites et leurs
@IP
Exemple :
127.0.0.1 localhost
192.168.0.2 site1.ma
192.168.0.100 site2.ma
Virtual Hosts basé sur la @IP (suite)
48
Creez les fichiers de configuration de chaque site
Exemple
site1.conf :
<VirtualHost 192.168.1.2:80>
DocumentRoot /var/www/site1
ServerName wwv.site1.ma
</VirtualHost>
site2.conf :
<VirtualHost 192.168.1.3:80>
DocumentRoot /var/www/site2
ServerName www.site2.ma
</VirtualHost>
Protéger un dossier par .htaccess 49
Il est possible de redéfinir les règles d'accès à un répertoire en plaçant dans celui-ci un fichier
texte appelé fichier de contrôle d'accès dont le nom est définit par la directive
AccessFileName
Les règles d'accès qu'il est possible de redéfinir sont gérées par la directive AllowOverride. Pour
interdire les redéfinitions, il suffit de mettre AllowOverride none
Protéger un dossierpar .htaccess
50
<Directory />
Order Deny, Allow
Deny from all
Options None
AllowOverride None
</Directory>
<Directory /web>
Order Allow,Deny
Allow from all
</Directory>
Sécuriser apache 54
Empêcher le parcours d'un répertoire
<Directory /web>
Order Allow,Deny
Allow from all
Options -Indexes
</Directory>
Désactiver les inclusions coté serveur
Options –Includes
Sécuriser apache 55
Empêcher Apache de suivre les liens symboliques
Options –FollowSymLinks
Empêcher le téléchargement de fichiers .htaccess
AccessFileName .htaccess
<Files ~ "^\.ht">
Order Allow,Deny
Deny from All
</Files>
Sécuriser apache avec TLS/SSL
56
#a2enmod ssl
#a2ensite default-ssl
Génération des certificats
57
Gêner la clé (par exemple la bi-clé RSA)
#cd /etc/apache2/
#mkdir ssl
#cd ssl
#openssl genrsa -out apache.key 1024
générons le certificat auto signé
#openssl req -new -x509 -days 365 -key apache.key -out apache.crt
-x509 : génération d’un certificat auto signé,
-days 365 : le certificat est valable 365 jours
-key server.key : la clé publique est extraite de la bi-clé précédente
-out server.crt : le certificat est copié
Génération des certificats
58
Fail2ban est un petit utilitaire qui se base sur les logs de la machine pour chercher des actions
suspectes répétées (par exemple, des erreurs de mots de passe) dans un laps de temps donné.
S’il en trouve, il bannira l’IP de l’attaquant via iptables. Ce type de logiciel est indispensable, car,
bien que léger, il offre une bonne protection contre les attaques basiques.
Sécurisation par Fail2ban
63
Installation
#apt-get install fail2ban
Configuration
#vim /etc/fail2ban/fail2ban.conf
Loglevel : Niveau de détail des logs (défaut 3)
logtarget = /var/log/fail2ban.log (Chemin vers le fichier de log )
Les services à monitorer sont stockés dans jail.conf. Il est recommandé d’en
effectuer une copie nommée jail.local qui sera automatiquement utilisée (cp
/etc/fail2ban/jail.conf /etc/fail2ban/jail.local)
#vim /etc/fal2ban/jail.local
ignoreip = 127.0.0.1 Liste des adresses IP de confiance à ignorer par fail2ban
Sécurisation par Fail2ban 64
bantime = 600 Temps de ban en secondes
maxretry = 3 Nombre d’essais autorisés pour une connexion avant d’être
banni
destmail monitoring@test.com Adresse e-mail destinataire des notifications
Action Action à entreprendre en cas de détection positive (voir dans
/etc/fail2ban/action.d/)
Enabled Monitoring activé (true) ou non (false)
Port Port IP concerné
Logpath Fichier de log à analyser pour détecter des anomalies
Filter Filtre utilisé pour l’analyser du log
Après modification de la configuration, redémarrer fail2ban
#/etc/init.d/fail2ban restart
Sécurisation par rootkit 65
Rootkit Hunter est un programme de détection de rootkits. Vous pouvez l’installer grâce à :
#apt-get install rkhunter
Il est conseillé de l’installer très tôt car il calcule l’empreinte MD5 des programmes installés afin
de détecter d’éventuels changements.
Editez/etc/default/rkhunter.conf pour indiquer l’adresse de notification et l’exécution
journalière :
#vi /etc/default/rkhunter.conf
REPORT_EMAIL="monitoring@test.com"
CRON_DAILY_RUN="yes"
En cas de fausses détections positives sur des répertoires ou fichiers existants et sains,
éditez /etc/rkhunter.conf pour les ajouter à la liste des éléments autorisés.
#vi /etc/rkhunter.conf
ALLOWHIDDENDIR=/dev/.udev
ALLOWHIDDENDIR=/dev/.static