Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / Apache 2 / Durcir la sécurité d'un serveur Apache 2 sur Debian

Durcir la sécurité d'un serveur Apache 2 sur Debian

Par Pierre-Yves Landuré Dernière modification 29/10/2017 17:03

Apache 2 est un serveur robuste proposant de nombreuses fonctionnalités. Ce guide durcit la sécurité d'un serveur Apache 2 en appliquant des réglages basiques.

Ce guide est testé sur:

  • Debian 6.0 Squeeze
  • Debian 7.0 Wheezy
  • Ubuntu 17.10 Artful Aardvark

Prérequis

Ce guide nécessite:

Ce guide recommande:

Configuration

Détectez le proxy de commande (command ou sudo):

cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'

Durcir la configuration du serveur HTTP Apache 2

Appliquez quelque règles durcissant la sécurité du serveur:

if [[ -d '/etc/apache2/conf-available' ]]; then
${cmdProxy} wget 'https://raw.github.com/biapy/howto.biapy.com/master/apache2/security-hardened.conf' \
--quiet --no-check-certificate --output-document='/etc/apache2/conf-available/security-hardened.conf'
${cmdProxy} a2enconf 'security-hardened'
else
test -d '/etc/apache2/conf.d' \
&& ${cmdProxy} wget 'https://raw.github.com/biapy/howto.biapy.com/master/apache2/security-hardened.conf' \
--quiet --no-check-certificate --output-document='/etc/apache2/conf.d/security-hardened'
fi

Rechargez la configuration du serveur:

${cmdProxy} service apache2 reload

Bloquer les attaques avec fail2ban

Installez fail2ban :

${cmdProxy} apt-get install fail2ban

Activez les protections spécifiques à Apache :

[[ ! -e '/etc/fail2ban/jail.local' ]] && ${cmdProxy} touch '/etc/fail2ban/jail.local'
while read jailRule; do
if [[ -n "${jailRule}" \
&& -z "$(command grep "\[${jailRule}\]" '/etc/fail2ban/jail.local')" \
&& -n "$(command grep "\[${jailRule}\]" '/etc/fail2ban/jail.conf')" ]]; then
${cmdProxy} tee -a '/etc/fail2ban/jail.local' <<< "[${jailRule}]
enabled = true"
fi
done <<< "apache
apache-auth
apache-badbots
apache-noscript
apache-overflows
apache-nohome
apache-botsearch
apache-fakegooglebot"

Rechargez la configuration :

${cmdProxy} service fail2ban restart

Désactiver le dossier cgi-bin

Le dossier cgi-bin est de moins en moins utilisé et peut éventuellement présenter un risque. Désactivez-le :

while read configFile; do
test -e "${configFile}" && ${cmdProxy} sed -i \
-e 's|^.*ScriptAlias.*/cgi-bin/.*$|#\0|' \
-e '/Directory.*cgi-bin/,/\/Directory/s/^.*/#\0/' \
"${configFile}"
done <<< "/etc/apache2/sites-available/default
/etc/apache2/sites-available/default-ssl
/etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/default-ssl.conf"

Rechargez la configuration :

${cmdProxy} service apache2 force-reload

Remerciements

Benoit a écrit :
10/12/2012 22:41
Merci pour ces informations intéressantes.
la génération du jail.local provoque une erreur au restart de fail2ban sur le parse de la section [apache-overflow], apparement il attend autre chose pour la valeur port (option : action / key: port / rawval : ",protocol%(protocol)s] Quel est donc la bonne valeur a mettre dans cette section ?
Pierre-Yves Landuré a écrit :
11/12/2012 07:54
Bonjour,

je ne sais pas quel système d'exploitation (ou version de Debian ?) vous utilisé. Dans ma configuration, j'ai ces lignes pour apache-overflows:

[apache-overflows]

enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/apache*/*error.log
maxretry = 2

Sincèrement,
Pierre-Yves Landuré
gregory a écrit :
26/03/2014 18:00
Bonjour, j'ai mis e place fail2ban avec quelques blocages supplémentaire mais celui-ci consomme 3g de memoire, est-ce normal?
 
Pierre-Yves Landuré a écrit :
26/03/2014 18:12
Bonjour,

non, aucunement. Fail2ban est un outil normalement très léger. Quels blocages supplémentaires avez-vous mis en place ?
Ajouter un commentaire

Vous pouvez ajouter un commentaire en complétant le formulaire ci-dessous. Le format doit être plain text. Les url et les courriels sont transformés en liens cliquables. Les commentaires sont modérés.