22déc.2008
Sécuriser apache
Voici quelques astuces, explications et quelques liens qui vous permettrons de sécuriser votre serveur web apache2.
Pour un serveur moins bavard lors d’erreur ou autre telnet ip 80 :
ServerTokens Prod ServerSignature Off
Modification des messages d’erreur afin qu'il ne soit pas trop bavard:
trouvez le repertoire contenant les erreurs d'apache pour moi : (compiler à la main)
/opt/httpd/error
Contre le DOS (deny of service) :
4 options httpd.conf ou apache2.conf à configurer :
MaxConnPerIP 15 MaxClients 100 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5
Logs:
/var/log/httpd/access et error
Jouez sur les options de configuration des logs dans httpd.conf ou apache2.conf pour avoir le plus de détail dans vos logs, option : combined.
Logicel de remonté de log via interface web :
AWStats, Webalizer ou W3Perl.
Pour résoudre les adresses ip en nom dans les logs (toujours dans httpd.conf ou apache2.conf) :
HostnameLookups On
Personnellement je ne l'utilise pas, et plusieurs debianeux m'ont informé sur le faites que cette commande ralenti fortement apache, de plus elle n'apporte pas forcement un grand changement pour la sécurité, donc à voir.
Autorisations sur les dossiers publiés :
Tout interdire et donner l’acces par dossier après.
<Directory /web/www> Order deny,allow Deny from all </Directory>
ou /web/www est votre "document root" équivalent de /var/www/ ou /opt/httpd/htdocs.
Modules :
Le serveur Apache s'articule sur un ensemble de modules qu'il convient de restreindre au strict nécessaire. Commentez les includes de modules que vous n'utilisez pas dans httpd.conf ou apache2.conf.
Lister les modules chargés :
/opt/httpd/bin/apachectl -t -D DUMP_MODULES (si vous l'avez compilé vous même)
ou
apache2ctl -t -D DUMP_MODULES (pour debian et ubuntu)
Sécuriser PHP :
Modification dans votre fichier php.ini, utilisez updatedb et locate pour le trouver.
safe_mode = On expose_php = Off max_execution_time = 30 ; Maximum execution time of each script, in seconds memory_limit = 8M magic_quotes_gpc = On display_errors = Off
Base SQL :
Toujours dans le php.ini
[SQL] sql.safe_mode = On
patch de sécurité pour php
User/group :
Bien penser à utilisé User nobody Group nobody
ou autre compte n'ayant que très peu de droit, plus votre installation sera personnalisée plus elle sera sécure !
Chrooter :
mod_chroot : http://core.segfault.pl/~hobbit/mod_chroot/
ou création de chroot complet :
http://gentoo-wiki.com/Apache_chroot:_the_mod_security_way
Modsecurity :
Utilisation de modsecurity-console :
pour avoir des remontés centralisées sur une interface web Charmante, mais payante si plus de trois serveur httpd…
Utilisation des regles de snort dans modsecurity :
http://www.modsecurity.org/documentation/converted-snort-rules.html
Mod_evasive :
Contre le brut force et le DOS :
http://www.zdziarski.com/projects/mod_evasive/
DSO :
A faire à la compilation de apache.
http://www.toqp.com/manual/fr/dso.html
à la compilation de apache :
--enable-so et option shared pour les modules.
Server Side Includes : mod_include :
Il s'agit d'un vestige de l'époque où les Perl et PHP n'avaient pas encore fait leurs apparitions. Il est fortement conseillé de le supprimé ou de ne l'activer qu'avec prudence Options +IncludesNOEXEC ou Options +Includes dans vos vhosts.
Les scripts CGI :
Il faut limiter leur présence à des répertoires bien déterminés, ils sont alors autorisés par un Options +ExecCGI sur la base d'un répertoire particulier.
Dernier petit conseil si vous utilisez des cms ou autres interface php comme phpmyadmin ou phpsysinfo n'oubliez pas de les mettre à jour régulièrement.
La solidité et la sécurité d'un site internet passe tout d'abord par son code mais la je peux pas vous aider je suis pas développeur !
Voila c'était un petit tour d'horizon pour sécuriser votre serveur web.
Commentaires
dimanche, janvier 25 2009 | 16:37
Bonjour,
Existe-t-il un moyen pour modifier le champ server dans le header renvoyé par apache ? (Par exemple remplacer apache dans le champ server par autre chose )
Merci .
dimanche, janvier 25 2009 | 18:47
Je vois pas de quoi tu parle, nom de fichier ? option ?
dimanche, mars 1 2009 | 23:35
Je pense qu'il parlait du champ "Server: ..." dans l'entête de la trame HTTP.
En effet ce champ contient Apache + numéro de version.
En mettant "ServerTokens Prod" dans la conf, le champ Apache seulement apparaît.
lundi, mai 11 2009 | 11:16
Pour sécuriser Apache j'ajoute le module mod-defensible et fail2ban.