Durcir la sécurité d'un serveur Apache 2 sur Debian
Par Pierre-Yves Landuré
—
Dernière modification
29/10/2017 16: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:
- un serveur HTTP Apache 2 comme décrit par Installer et configurer Apache 2 sur Debian.
Ce guide recommande:
- la mise en place des règles de blocage de DFind décrites par Bloquer le scanner de vulnérabilités DFind.
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
- Merci à Alsacréations (fr) pour Installation d'Apache et PHP (fr).
- Merci à Smashing Magazine (en) pour SVN Server Admin Issue: Fix It ! (en)
- Merci à la Ferme du Web (fr) pour .htaccess - Quelques astuces bien pratiques à connaître (fr).
- Merci à Be-Root.com (fr) pour Protéger Apache de slowloris (fr).