Revue :
- Tous
- Français
- Par mot clé
- Par site
- Le tagwall



Sommaires :
- Tendances
- Failles
- Virus
- Concours
- Reportages
- Acteurs
- Outils
- Breves
- Infrastructures
- Livres
- Tutoriels
- Interviews
- Podcasts
- Communiques
- Commentaires


Top :
- Ensemble
- Articles
- Revue
- Videos
- Auteurs


Articles :
- Par mot clé
- Par auteur
- Par organisme
- Le tagwall


Videos :
- Toutes
- Par mot clé
- Par site
- Le tagwall


Exostat :
:: Détails tests
:: Top Failles
:: Top Divers
:: Top Tests


Secumail :
- Secunia
- Full Disclosure
- Bugtraq
- DailyDave
- Vulnwatch
- Vulndiscuss
- FunSec
- Focus-IDS
- WebAppSec
- Security-Basis


RSS/XML :
- Articles
- Brèves
- Revue
- Revue FR
- Videos
- Secunia
- Full Disclosure
- Bugtraq
- DailyDave
- Vulnwatch
- Vulndiscuss
- FunSec
- Focus-IDS
- WebAppSec
- Security-Basis


RSS SecuObs :
- sécurité
- windows
- exploit
- réseau
- vulnérabilité
- système


RSS Revue :
- security
- microsoft
- windows
- vulnérabilité
- network
- google


RSS Videos :
- virus
- spyware
- vmware
- firmware
- biometric
- lockpicking










Tous
Français
TUTORIEL  


Tutorial : Installation sécurisée, automatisée en globalité ou manuelle de Apache pour Linux avec Openssl, Php4, Mysql, Mod_ssl, Mod_rewrite, Mod_perl , DSO
& Mod_security avec les rêgles de l'IDS Snort

Note : Ce tutorial a été mis à jour le 16 juin 2004 à 15:38 pour la sortie de la version stable 1.8 de mod_security + activation par défaut du chroot dans la partie automatisée.

Par Xavier Poli, SecuObs.com
Le 03/05/2004




 


Navigation
Pages : 1 - 2 - 3 - 4 - 5 - 6 - 7
----------------------------------------

Le serveur web apache_1.3.31 :

cd /usr/src
tar -zxvf apache_1.3.31.tar.gz

Appliquer le patch apache-patch_HARD_SERVER_LIMIT.txt :

cd /usr/src
tar -zxvf apache_1.3.31.tar.gz
rm -fr /usr/src/apache_1.3.31/src/include/apache-patch_HARD_SERVER_LIMIT.txt
cp apache-patch_HARD_SERVER_LIMIT.txt /usr/src/apache_1.3.31/src/include/
cd /usr/src/apache_1.3.31/src/include/
patch -p0 < ./apache-patch_HARD_SERVER_LIMIT.txt
#le fichier à patcher est httpd.h


Installer mod_ssl-2.9 dans les sources d'apache :

cd /usr/src
tar -zxvf mod_ssl-2.8.18-1.3.31.tar.gz
cd /usr/src/mod_ssl-2.8.18-1.3.31
./configure --with-apache=/usr/src/apache_1.3.31

-----------------------------------------------------------------------------------------------------------------

Nous ne pouvions établir un tutorial sur la sécurisation d'Apache sans vous parler de la fonction suEXEC qui permet au administrateur de serveur Apache de faire éxécuter des programmes CGI/SSI sous des utiisateurs et des groupes différents de celui sous lequel est lancé le serveur principal et qui est normalement celui sous lequel ils sont éxécutés.

Attention ! : Lisez l'ensemble de cette section avant de vous lancer dans l'installation ou la configuration de suEXEC

Si les termes setuid root, setuid/setgid ne vous sont pas familiers il vaut mieux ne pas installer suEXEC et passer directement à l'installation d'Apache, une mauvaise configuration ou une mauvaise utilisation de suEXEC pouvant à l'inverse se révéler catastrophique pour la sécurité de votre machine.

Vous devez éditer le fichier /usr/src/apache_1.3.31/support/suexec.h :

/*
* HTTPD_USER -- Définit le nom d'utilisateur sous lequel Apache tourne en
* temps normal. C'est le seul utilisateur habilité à exécuter
* ce programme.
*/
#define HTTPD_USER "apache"

/*
* UID_MIN -- Definit le plus faible UID permis pour l'utilisateur
* cible donné à suEXEC. Dans la plupart des cas, 500 ou 100 convient.
*/
#define UID_MIN 100

/*
* GID_MIN -- Definit le plus faible GID permis pour l'utilisateur
* cible donné à suEXEC. Dans la plupart des cas, 100 convient.
*/
#define GID_MIN 100

/*
* USERDIR_SUFFIX -- Definit le sous-répertoire relatif sous la racine
* du compte utilisateur auquel suEXEC a l'autorisation
* d'accès. Tous les exécutables dans ce répertoire
* pourront être lancés par suEXEC sous cet utilisateur
* et seront donc "sécurisés". Si vous utilisez une directive
* UserDir simple (c-à-d. une ou n'apparaît pas de
* "*"), cette étoile est implicite pour le répertoire
* spécifié. suEXEC ne fonctionnera pas correctement
* si la directive UserDir pointe vers un répertoire
* différent de celui défini comme répertoire de "login"
* pour cet utilisateu dans le fichier /etc/passwd.
*
* Si vous avez défini des VirtualHosts assignés à un
* UserDir différent pour chacun, vous aurez peut être besoin
* de rassembler tous les répertoires concernés dans un seul
* et unique répertoire père ; vous pouvez nommer ce répertoire
* père ici. SI CE PARAMETRE N'EST PAS CORRECTEMENT
* RENSEIGNE, LES REQUETES CGI POUR LES ~USERDIR
* N'ABOUTIRONT PAS !
* Voir la documentation de suEXEC pour plus d'informations.
*/
#define USERDIR_SUFFIX "suexec_directory"

/*
* LOG_EXEC -- Definit le nom de fichier dans lequel toutes les
* transactions et erreurs générées par l'usage de suEXEC
* seront tracées.
*/
#define LOG_EXEC "/usr/local/apache/logs/cgi.log" /* Need me? */

/*
* DOC_ROOT -- Definit le DocumentRoot pour Apache. Ce sous-arbre
* sera le seul (à part ceux définis par chaque UserDirs)
* à pouvoir être utilisé par suEXEC.
*/
#define DOC_ROOT "/usr/local/apache/htdocs"

/*
* SAFE_PATH -- Definit un PATH d'environment sécurisé à passer aux exécutables CGI.
*
*/
#define SAFE_PATH "/usr/local/bin:/usr/bin:/bin"

Compiler et installer suEXEC :

cd /usr/src/apache_1.3.31/support/
cc /usr/src/apache_1.3.31/support/suexec.c -o /usr/src/apache_1.3.31/support/suexec
cp /usr/src/apache_1.3.31/support/suexec /usr/local/apache/sbin/
chown root /usr/local/apache/sbin/suexec
chmod 4711 /usr/local/apache/sbin/suexec

Pour vous servir de suEXEC, vous pouvez par exemple utiliser les directives USER & GROUP dans chaque Virtual Host défini à l'intérieur de votre fichier /usr/local/apache/conf/httpd.conf, les CGI de ce Virtual Host seront éxécutés sous ce couple user/group. Un exemple :


<VirtualHost www.site.com>
ServerAdmin postmaster@site.com
User test
Group test
DocumentRoot /usr/local/apache/www.site.com/www
ScriptAlias /cgi-bin /usr/local/apache/www.site.com/cgi-bin/
ServerName www.site.com
ErrorLog logs/www.site.com-error_log
CustomLog logs/www.site.com-access_log combined
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</VirtualHost>
 

Apache se sert d'un programme appelé setuid pour "lier" la requête vers le script CGI ou SSI appelé via les users & groups définis du Virtual Host, à chaque appel setuid, plus d'une vingtaine de vérification d'intégrité des arguments est effectuée.

Vu le caractère sensible de la fonctionnalité suEXEC, elle ne sera intégrée dans aucun des scripts automatisés de ce tutorial et à nouveau nous vous conseillons de l'utiliser uniquement dans le cas ou vous savez ce que vous faites !

Si vous voulez plus d'informations sur suEXEC, cliquez içi.

----------------------------------------------------------------------------

Compilez et installez apache_1.3.31 avec les modules standarts, mod_ssl & la prise en charge de DSO.

DSO ("Dynamic Shared Object") ou bibliothèque d'objets partagée est chargée uniquement lors de l'exécution du programme. Cela vous permet de ne pas la charger si vous le souhaitez et de compiler puis installer des modules supplémentaires pour Apache sans avoir à le recompiler grâce la commande /usr/local/apache/bin/apxs :

rm -fr /usr/local/apache
cd /usr/src/apache_1.3.31

./configure --prefix=/usr/local/apache --enable-module=ssl --enable-module=so --enable-module=status --enable-module=rewrite --enable-module=cgi --enable-module=include --enable-module=auth --enable-module=dir --enable-module=env --enable-module=setenvif --enable-module=userdir --enable-module=imap --enable-module=negotiation --enable-module=log_config --enable-module=asis --enable-module=autoindex --enable-module=mime --enable-module=access --enable-module=rewrite --enable-shared=max

make
make certificate
make install


Pour le make certificate, changer en fonction de vos configurations et $passwd par la passphrase que vous souhaitez utiliser :

The generated X.509 CA certificate can contain either
RSA or DSA based ingredients. Select the one you want to use.
Signature Algorithm ((R)SA or (D)SA) [R]: R
---------------------------------------------------------------------
1. Country Name (2 letter code) [XY]:FR
2. State or Province Name (full name) [Snake Desert]:France
3. Locality Name (eg, city) [Snake Town]:Paris
4. Organization Name (eg, company) [Snake Oil, Ltd]: Infratech
5. Organizational Unit Name (eg, section) [Webserver Team]:TechTeam
6. Common Name (eg, FQDN) [www.snakeoil.dom]: www.secuobs.com
7. Email Address (eg, name@FQDN) [www@snakeoil.dom]:xavier.poli@infratech.fr
8. Certificate Validity (days) [365]:
---------------------------------------------------------------------
: STEP 3: Generating X.509 certificate signed by Snake Oil CA [server.crt]
Certificate Version (1 or 3) [3]:
---------------------------------------------------------------------
STEP 4: Enrypting RSA private key with a pass phrase for security [server.key]
The contents of the server.key file (the generated private key) has to be
kept secret. So we strongly recommend you to encrypt the server.key file
with a Triple-DES cipher and a Pass Phrase.
Encrypt the private key now? [Y/n]: Y
writing RSA key
Enter PEM pass phrase: $passwd
Verifying - Enter PEM pass phrase: $passwd


Vous pouvez alors démarrer votre serveur apache pour tester, entrez au prompt votre passphrase :

/usr/local/apache/bin/apachectl startssl
Apache/1.3.31 mod_ssl/2.8.16 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server votre_serveur:443 (RSA)
Enter pass phrase:

Ok: Pass Phrase Dialog successful.
/usr/local/apache/bin/apachectl startssl: httpd started


Vous pouvez également décidé d'installer apache pour qu'il fonctionne sous un uid différent de nobody et un gid différent de nogroup qui sont les paramétres par défaut de l'installation d'apache.

Par défaut, à l'exception du process principal sous root, le reste des processus tourne sous l'uid nobody et le gid nogroup. En cas de corruption du serveur web, une personne mal intentionnée peut alors avoir les droits d'accès à l'ensemble des processus qui tourne sous le même couple uid/gid.

Vous pouvez configurer Apache pour tourner sous le couple apache/apache ; pour se faire, la compilation et les permissions associées seront alors les suivantes :

rm -fr /usr/local/apache/
groupadd apache
useradd apache -d /dev/null -g apache -s /sbin/nologin

cd /usr/src/apache_1.3.31

./configure --prefix=/usr/local/apache --enable-module=ssl --enable-module=so --server-uid=apache --server-gid=apache --enable-module=status --enable-module=rewrite --enable-module=cgi --enable-module=include --enable-module=auth --enable-module=dir --enable-module=env --enable-module=setenvif --enable-module=userdir --enable-module=imap --enable-module=negotiation --enable-module=log_config --enable-module=asis --enable-module=autoindex --enable-module=mime --enable-module=access --enable-module=rewrite --enable-shared=max

make
make certificate
make install


Vous pouvez installer ce qui a trait à apache + modssl + le patch hard server limit (fichier httpd.h à patcher) d'un seul coup avec le fichier suivant. Nommez le apache.sh, passez un chmod +x apache.sh, placer le dans /usr/src/ puis éxécuté le avec la commande ./apache.sh en vous plaçant au préalable dans /usr/src/, vous serez invité au prompt à rentrer les informations relatives au certificat ainsi que le nom du fichier à patcher (httpd.h), le fichier :

#!/bin/sh

cd /usr/src
tar -zxvf apache_1.3.31.tar.gz
rm -fr /usr/src/apache_1.3.31/src/include/apache-patch_HARD_SERVER_LIMIT.txt
cp apache-patch_HARD_SERVER_LIMIT.txt /usr/src/apache_1.3.31/src/include/
cd /usr/src/apache_1.3.31/src/include/
patch -p0 < ./apache-patch_HARD_SERVER_LIMIT.txt

cd /usr/src
tar -zxvf mod_ssl-2.8.17-1.3.31.tar.gz
cd /usr/src/mod_ssl-2.8.17-1.3.31
./configure --with-apache=/usr/src/apache_1.3.31
rm -fr /usr/local/apache
cd /usr/src/apache_1.3.31

./configure --prefix=/usr/local/apache --enable-module=ssl --enable-module=so --server-uid=apache --server-gid=apache --enable-module=status --enable-module=rewrite --enable-module=cgi --enable-module=include --enable-module=auth --enable-module=dir --enable-module=env --enable-module=setenvif --enable-module=userdir --enable-module=imap --enable-module=negotiation --enable-module=log_config --enable-module=asis --enable-module=autoindex --enable-module=mime --enable-module=access --enable-module=rewrite --enable-shared=max

make
make certificate
make install
/usr/local/apache/bin/apachectl startssl


Ajoutez les lignes suivantes dans la section DSO pour charger les modules, en choisissant en fonction de ce dont vous avez besoin :

LoadModule env_module libexec/mod_env.so
LoadModule config_log_module libexec/mod_log_config.so
LoadModule mime_module libexec/mod_mime.so
LoadModule negotiation_module libexec/mod_negotiation.so
LoadModule status_module libexec/mod_status.so
LoadModule includes_module libexec/mod_include.so
LoadModule autoindex_module libexec/mod_autoindex.so
LoadModule dir_module libexec/mod_dir.so
LoadModule cgi_module libexec/mod_cgi.so
LoadModule asis_module libexec/mod_asis.so
LoadModule imap_module libexec/mod_imap.so
LoadModule action_module libexec/mod_actions.so
LoadModule userdir_module libexec/mod_userdir.so
LoadModule alias_module libexec/mod_alias.so
LoadModule access_module libexec/mod_access.so
LoadModule auth_module libexec/mod_auth.so
LoadModule setenvif_module libexec/mod_setenvif.so
LoadModule rewrite_module libexec/mod_rewrite.so
<IfDefine SSL>
LoadModule ssl_module libexec/libssl.so
</IfDefine>

ClearModuleList
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_userdir.c
AddModule mod_alias.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_so.c
AddModule mod_setenvif.c
AddModule mod_rewrite.c
<IfDefine SSL>
AddModule mod_ssl.c
</IfDefine>


Vérifier la présence des lignes suivantes dans leur section respective du fichier de configuration d'apache /usr/local/apache/conf/httpd.conf, sinon ajouter ou modifier les :

User apache
Group apache


Vous avez aussi la possibilité de désactiver tous les modules à la compilation d'Apache puis les réactiver un par un si vous avez une connaissance suffisante au bon fonctionnement de votre serveur web :

--disable-module=all
--enable-module=nom_du_module

Déni de Service ("DoS"), attaque complexe dont le but est de rendre inatteignable une machine en envoyant une quantité de donnée importante afin qu'elle ne puisse pas la gérer, les conséquences : - crash des services et/ou reboot sauvage ! Ce genre d'attaque peut provenir d'une seule voir de plusieurs machines, dans ce cas, on appele plus communément cette attaque, un Déni de Service Distribué ou DDoS.

Afin d'éviter les possibilité de DoS ou de DDoS, ajuster les options suivantes du fichier de configuration d'apache /usr/local/apache/conf/httpd.conf
en fonction des capacités de votre serveur :

MaxClients 150
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Timeout 300


Les sections Directory permettent de définir les permissions des répertoires où sont stockées les contenus accessibles via les sites web du serveur correspondant. La configuration de ces sections est vitale pour la sécurité de votre machine. Il est conseillé de mettre par défaut en deny puis d'autoriser uniquement ce que vous voulez bien alloué à la manière d'un firewall :

<Directory />
Order deny,allow
Deny from all
</Directory>


Puis :

<Directory "/usr/local/apache/www.site.com/www">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>


Vous pouvez également permettre à des utilisateurs particuliers d'accéder à certains répertoires, vous devez pour cela mettre des sections du type :

<Directory "/usr/local/apache/www.site.com/www/secure">
AllowOverride AuthConfig
Options none
Order allow,deny
Allow from all
</Directory>

Différentes options sont disponibles, parmi elles Indexes FollowSymLinks Includes ExecCGi, nous vous conseillons de ne les activer qu'au cas ou vous en auriez réellement besoin.

CGI ("Common Gateway Interface") permet à un client d'exécuter des programmes spécifiques sur un serveur. Nous vous conseillons d'externaliser vos scripts CGI puis d'ajouter la ligne suivante dans les Virtual Host concernés

ScriptAlias /nom_du_directory_accedé_pour_vos_scripts_en_ligne
/chemin/vers/vos/scripts/cgi/

Et définir le directory des cgi-bin :

<Directory "/usr/local/apache/www.site.com/www/cgi-bin">
AllowOverride none
Options ExecCGI
Order allow,deny
Allow from all
</Directory>


Ces directory doivent être créés au préalable afin d'héberger les pages que vous souhaitez diffuser, récupérer également notre page html de test et placer la dans le répertoire racine www/.

mkdir -p /usr/local/apache/www.site.com/www
mkdir /usr/local/apache/www.site.com/cgi-bin
mkdir /usr/local/apache/www.site.com/secure
wget http://www.secuobs.com/tuto/index.html
mv index.html /usr/local/apache/www.site.com/www/



Navigation
Pages : 1 - 2 - 3 - 4 - 5 - 6 - 7
----------------------------------------

 







Revue de presse francophone :
- Audience en novembre
- Symantec Backup Exec pour Windows Servers : Vulnérabilités Diverses
- HP OpenView Network Node Manager : Vulnérabilités Cross-Site Scripting
- Produits W3matter Multiple f[password] : Vulnérabilité d'Injection SQL
- SIP : la fin de l'IPBX dans les centres de contacts
- Communications unifiées : l'intéropérabilité entre Microsoft et Cisco en images
- Fibre optique : le retard français en question aux journées internationales de l'IDATE
- Pre ASP Job Board Username et Password : Injection SQL
- Management de la qualité des organisations : la nouvelle version de la norme ISO 9001 vient d'être publiée par l'AFNOR
- Vigil@nce : Opera, buffer overflow de file
- Cyberoam améliore la sécurité basée sur l'identité
- Mathieu Tarnus, GotoSoftware - Vade-Retro : Bienvenu dans la vie sans spam !
- Beemo Technologie annonce son déploiement en Europe pour 2009
- Vigil@nce : IP Filter, ISA, vulnérabilité DNS avec NAT
- Vigil@nce : Windows AD, détection d'utilisateurs via LDAP

Mini-Tagwall
Revue de presse : security, microsoft, windows, vulnérabilité, network, google, vulnerability, hacker, attack, inject, remote, mobile, server

+ de mots clés pour la revue de presse

Annuaires des videos : virus, spyware, vmware, firmware, biometric, lockpicking, wimax, password, kernel, malware, spammer, windows, iphone

+ de mots clés pour les videos

Dernier articles de SecuObs :
- Une vulnérabilité dans la pile TCP/IP des systèmes d'exploitation Microsoft Windows Vista
- Un système d’exploitation certifié EAL 6 commercialisé pour le secteur privé
- BotHunter une solution pour la détection des flux malveillants
- Netwitness Investigator, un outil de monitoring sous stéroïdes
- RepRap un projet Opensource de constructeur universel et de système de prototypage
- Des vulnérabilités découvertes dans plusieurs applications de gestion des flux VoIP
- IKAT un outil d'audit pour les terminaux des kiosques Internet
- Vxclass ou la classification de codes malveillants par isomorphisme graphique
- Des publicités Google Adsense pour le malware Antivirus XP 2008
- Des probabilités de visualisation des données en clair lors des connexions SSH

Top des articles de SecuObs
- WPA TKIP aurait été partiellement cassé
- Collecte d’informations et social engineering via les réseaux sociaux
- [Sécuriser un réseau sans fil - Partie 1] Introduction à la sécurité du WI-FI
- Rustock.C, un rootkit robuste
- Une nouvelle faille RPC dans les systèmes Windows

Top de la revue de presse
- 15 minutes pour casser une clé WPA TKIP
- Un logiciel pour dupliquer des clés à  distance
- Avis du CERTA : Bulletin d'actualité numéro 045 de l'année 2008
- scapy vs hping3 : spectrographe de distribution ISN
- VIPeers, un combiné Rapidshare et Bittorrent

Top de l'annuaire des videos
- Fallout 3 Lockpicking tutorial
- metasploit 3 autopwn
- HACK WINDOWS XP PASSWORD
- SSH into your iPod Touch/iPhone via USB on Windows!
- How to Remove Antivirus 2009 | Antivirus2009 Removal Guide

Revue de presse internationale :
- Pictures and Video Clips of Global Security Challenge - Security Technology Summit in London
- Moving The Firefox Disk Cache To Another Drive
- XBMC Media Center Final
- German, Finnish and Swedish
- Monty Python Youtube Channel
- ike-scan - IPsec VPN Scanning, Fingerprinting and Testing Tool
- 2009 (0×7D9) - The Year of Debugging!
- Apple Insider: Apple's new MacBooks have built-in copy protection measures
- The Register: Employees sue for unpaid Windows Vista overtime
- SC Magazine: Hot or not - Software update vulnerabilities

Dernières brèves de SecuObs :
- Licence Checkpoint Zone Alarm Pro gratuite pour un an le 18 novembre 2008
- Version 3.0 du CD de secours F-Secure
- Appel de la dernière chance pour Gary McKinnon
- 20% de remise sur les certificats SSL VeriSign jusqu'au 31 mai 2008
- Vol de données à Harvard

Annuaire des videos
-
- Antispyware Adware Remover
- Demo 07: Ceelox, Inc. Scram
- Kirlian Camera Kaczynski Code / edit by Hipnosis Italy
- PS3 Firmware Update Video

Commentaires sur SecuObs :
- An Ad for DDoS Services - Network, Phone, Competition http://www
- How-to: The Bus Pirate, universal serial interface http://www.se
- FREE 1 Year BitDefender Antivirus 2009 Genuine License for EVERY
- Metasploit Framework 3.2 Released https://www.secuobs.com/secuma
- GPCode Ransom Trojan Decoder http://www.securescience.net/home/