System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

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

http://www.hardened-php.net/

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.

Par GanGan | le lundi, décembre 22 2008 10:50

Commentaires

1. otto

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 .

2. gangan

dimanche, janvier 25 2009 | 18:47

Je vois pas de quoi tu parle, nom de fichier ? option ?

3. Kévin Hinault

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.

4. Nico

lundi, mai 11 2009 | 11:16

Pour sécuriser Apache j'ajoute le module mod-defensible et fail2ban.