Pour ceux d’entre vous qui travaillent dans le secteur de l’hébergement, ou si vous hébergez vos propres serveurs et les exposez à Internet, la protection de vos systèmes contre les attaquants doit être une priorité absolue.

mod_security (moteur de détection et de prévention d’intrusions open-source pour les applications Web qui s’intègre parfaitement au serveur Web) et mod_evasive sont deux outils très importants qui peuvent être utilisés pour protéger un serveur Web contre la force brute ou les attaques (D) DoS.

mod_evasive, comme son nom l’indique, fournit des capacités évasives en cas d’attaque, agissant comme un parapluie qui protège les serveurs Web de ces menaces.

Installez Mod_Security Mod_Evasive Dans Centos
Installez Mod_Security Et Mod_Evasive Pour Protéger Apache

Dans cet article, nous verrons comment les installer, les configurer et les mettre en jeu avec Apache sur RHEL/CentOS 8 et 7 aussi bien que Feutre. De plus, nous simulerons des attaques afin de vérifier que le serveur réagit en conséquence.

Cela suppose que vous avez un serveur LAMP installé sur votre système. Sinon, veuillez consulter cet article avant de continuer.

Publicité

Vous devrez également configurer iptables comme front-end du pare-feu par défaut au lieu de pare-feu si tu cours RHEL / CentOS 8/7 ou Feutre. Nous faisons cela afin d’utiliser le même outil dans les deux RHEL/CentOS 8/7 et Feutre.

Étape 1: Installation du pare-feu Iptables sur RHEL / CentOS 8/7 et Fedora

Pour commencer, arrêter et désactiver pare-feu:

# systemctl stop firewalld
# systemctl disable firewalld
Désactiver Le Service Firewalld Dans Centos 7
Désactiver Le Service Firewalld

Puis installez le services iptables package avant l’activation iptables:

# yum update && yum install iptables-services
# systemctl enable iptables
# systemctl start iptables
# systemctl status iptables
Installer Le Pare-Feu Iptables Dans Centos 7
Installer Le Pare-Feu Iptables

Étape 2: Installation de Mod_Security et Mod_evasive

En plus d’avoir une configuration LAMP déjà en place, vous devrez également activer le référentiel EPEL dans RHEL/CentOS 8/7 afin d’installer les deux packages. Les utilisateurs de Fedora n’ont pas besoin d’activer de dépôt, car epel fait déjà partie du projet Fedora.

# yum update && yum install mod_security mod_evasive

--------------- CentOS/RHEL 8 --------------- 
# dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm
# dnf --enablerepo=raven-extras install mod_evasive

Une fois l’installation terminée, vous trouverez les fichiers de configuration des deux outils dans /etc/httpd/conf.d.

# ls -l /etc/httpd/conf.d
Configurations Mod_Security + Mod_Evasive
Configurations Mod_Security + Mod_Evasive

Maintenant, pour intégrer ces deux modules avec Apache et demandez-lui de les charger au démarrage, assurez-vous que les lignes suivantes apparaissent dans la section de niveau supérieur de mod_evasive.conf et mod_security.conf, respectivement:

LoadModule evasive20_module modules/mod_evasive24.so
LoadModule security2_module modules/mod_security2.so

Notez que modules / mod_security2.so et modules / mod_evasive24.so sont les chemins relatifs, du / etc / httpd répertoire vers le fichier source du module. Vous pouvez le vérifier (et le modifier, si nécessaire) en listant le contenu du / etc / httpd / modules annuaire:

# cd /etc/httpd/modules
# pwd
# ls -l | grep -Ei '(evasive|security)'
Vérifiez Les Modules Mod_Security + Mod_Evasive
Vérifiez Les Modules Mod_Security + Mod_Evasive

Ensuite, redémarrez Apache et vérifiez qu’il se charge mod_evasive et mod_security:

# systemctl restart httpd 	

Vider une liste des modules statiques et partagés chargés.

# httpd -M | grep -Ei '(evasive|security)'				
Vérifiez Les Modules Mod_Security + Mod_Evasive Chargés
Vérifiez Les Modules Mod_Security + Mod_Evasive Chargés

Étape 3: Installation d’un jeu de règles de base et configuration de Mod_Security

En quelques mots, un Ensemble de règles de base (alias CRS) fournit au serveur Web des instructions sur la manière de se comporter sous certaines conditions. La société de développement de mod_security fournit un gratuit CRS appelé OWASP (Ouvrir le projet de sécurité des applications Web) ModSecurity CRS qui peut être téléchargé et installé comme suit.

1. Téléchargez le OWASP CRS dans un répertoire créé à cet effet.

# mkdir /etc/httpd/crs-tecmint
# cd /etc/httpd/crs-tecmint
# wget -c https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.2.0.tar.gz -O master
Télécharger Les Règles De Base De Mod_Security
Télécharger Les Règles De Base De Mod_Security

2. Décompressez le CRS fichier et changez le nom du répertoire pour une de notre commodité.

# tar xzf master
# mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs

3. Il est maintenant temps de configurer mod_security. Copiez le fichier d’exemple avec les règles (owasp-modsecurity-crs / modsecurity_crs_10_setup.conf.example) dans un autre fichier sans le .exemple extension:

# cd owasp-modsecurity-crs/
# cp crs-setup.conf.example crs-setup.conf

et de dire Apache pour utiliser ce fichier avec le module en insérant les lignes suivantes dans le fichier de configuration principal du serveur Web /etc/httpd/conf/httpd.conf fichier. Si vous choisissez de décompresser l’archive tar dans un autre répertoire, vous devrez modifier les chemins en suivant les directives Inclure:

<IfModule security2_module>
        Include crs-tecmint/owasp-modsecurity-crs/crs-setup.conf
        Include crs-tecmint/owasp-modsecurity-crs/rules/*.conf
</IfModule>

Enfin, il est recommandé de créer notre propre fichier de configuration dans le /etc/httpd/modsecurity.d répertoire où nous placerons nos directives personnalisées (nous le nommerons tecmint.conf dans l’exemple suivant) au lieu de modifier le CRS fichiers directement. Cela facilitera la mise à niveau des CRS à mesure que de nouvelles versions seront publiées.

<IfModule mod_security2.c>
	SecRuleEngine On
	SecRequestBodyAccess On
	SecResponseBodyAccess On 
	SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream 
	SecDataDir /tmp
</IfModule>

Vous pouvez vous référer au ModSecurity GitHub de SpiderLabs référentiel pour un guide explicatif complet de mod_security directives de configuration.

Étape 4: Configuration de Mod_Evasive

mod_evasive est configuré à l’aide de directives dans /etc/httpd/conf.d/mod_evasive.conf. Puisqu’il n’y a pas de règles à mettre à jour lors d’une mise à niveau de package, nous n’avons pas besoin d’un fichier séparé pour ajouter des directives personnalisées, contrairement à mod_security.

Le défaut mod_evasive.conf fichier a les directives suivantes activées (notez que ce fichier est fortement commenté, nous avons donc supprimé les commentaires pour mettre en évidence les directives de configuration ci-dessous):

<IfModule mod_evasive24.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

Explication des directives:

  • DOSHashTableSize: Cette directive spécifie la taille de la table de hachage utilisée pour suivre l’activité sur une base par adresse IP. L’augmentation de ce nombre fournira une recherche plus rapide des sites que le client a visités dans le passé, mais peut avoir un impact sur les performances globales s’il est défini trop haut.
  • DOSPageCount: Nombre légitime de requêtes identiques adressées à un URI spécifique (par exemple, tout fichier servi par Apache) pouvant être effectuées par un visiteur pendant l’intervalle DOSPageInterval.
  • DOSSiteCount: Similaire à DOSPageCount, mais fait référence au nombre de requêtes globales pouvant être adressées à l’ensemble du site sur l’intervalle DOSSiteInterval.
  • DOSBlockingPeriod: Si un visiteur dépasse les limites fixées par DOSSPageCount ou DOSSiteCount, son adresse IP source sera mise sur liste noire pendant la durée DOSBlockingPeriod. Pendant DOSBlockingPeriod, toute demande provenant de cette adresse IP rencontrera une erreur 403 Forbidden.

N’hésitez pas à tester ces valeurs afin que votre serveur Web puisse gérer la quantité et le type de trafic requis.

Seulement une petite mise en garde: si ces valeurs ne sont pas définies correctement, vous courez le risque de finir par bloquer les visiteurs légitimes.

Vous pouvez également envisager d’autres directives utiles:

DOSEmailNotify

Si vous disposez d’un serveur de messagerie opérationnel, vous pouvez envoyer des messages d’avertissement via Apache. Notez que vous devrez accorder à l’utilisateur apache la permission SELinux d’envoyer des e-mails si SELinux est défini sur enforcing. Vous pouvez le faire en exécutant

# setsebool -P httpd_can_sendmail 1

Ensuite, ajoutez cette directive dans le mod_evasive.conf fichier avec le reste des autres directives:

DOSEmailNotify [email protected]

Si cette valeur est définie et que votre serveur de messagerie fonctionne correctement, un e-mail sera envoyé à l’adresse spécifiée chaque fois qu’une adresse IP devient sur liste noire.

DOSSystemCommand

Cela nécessite une commande système valide comme argument,

DOSSystemCommand </command>

Cette directive spécifie une commande à exécuter chaque fois qu’une adresse IP devient sur liste noire. Il est souvent utilisé en conjonction avec un script shell qui ajoute une règle de pare-feu pour bloquer les connexions supplémentaires provenant de cette adresse IP.

Ecrire un script shell qui gère la liste noire IP au niveau du pare-feu

Lorsqu’une adresse IP devient sur liste noire, nous devons bloquer les futures connexions en provenance de celle-ci. Nous utiliserons le script shell suivant qui effectue ce travail. Créez un répertoire nommé scripts-tecmint (ou quel que soit le nom de votre choix) dans / usr / local / bin et un fichier appelé ban_ip.sh dans ce répertoire.

#!/bin/sh
# IP that will be blocked, as detected by mod_evasive
IP=$1
# Full path to iptables
IPTABLES="/sbin/iptables"
# mod_evasive lock directory
MOD_EVASIVE_LOGDIR=/var/log/mod_evasive
# Add the following firewall rule (block all traffic coming from $IP)
$IPTABLES -I INPUT -s $IP -j DROP
# Remove lock file for future checks
rm -f "$MOD_EVASIVE_LOGDIR"/dos-"$IP"

Notre DOSSystemCommand directive doit se lire comme suit:

DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s"

Dans la ligne ci-dessus, % s représente l’adresse IP incriminée détectée par mod_evasive.

Ajouter l’utilisateur apache au fichier sudoers

Notez que tout cela ne fonctionnera que si vous accordez des autorisations à l’utilisateur apache pour exécuter notre script (et ce script uniquement!) sans terminal ni mot de passe. Comme d’habitude, vous pouvez simplement taper visudo en tant que root pour accéder au / etc / sudoers puis ajoutez les 2 lignes suivantes comme indiqué dans l’image ci-dessous:

apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh
Defaults:apache !requiretty
Ajouter Un Utilisateur Apache Aux Sudoers
Ajouter Un Utilisateur Apache Aux Sudoers

IMPORTANT: En tant que politique de sécurité par défaut, vous ne pouvez exécuter sudo dans un terminal. Puisque dans ce cas, nous devons utiliser sudo sans un tty, nous devons commenter la ligne qui est mise en évidence dans l’image suivante:

#Defaults requiretty
Désactiver Tty Pour Sudo
Désactiver Tty Pour Sudo

Enfin, redémarrez le serveur Web:

# systemctl restart httpd

Étape 4: Simuler une attaque DDoS sur Apache

Il existe plusieurs outils que vous pouvez utiliser pour simuler une attaque externe sur votre serveur. Vous pouvez simplement rechercher sur Google « outils de simulation d’attaques ddos»Pour en trouver plusieurs.

Notez que vous, et vous seul, serez tenu responsable des résultats de votre simulation. Ne pensez même pas à lancer une attaque simulée sur un serveur que vous n’hébergez pas au sein de votre propre réseau.

Si vous souhaitez faire de même avec un VPS hébergé par quelqu’un d’autre, vous devez avertir de manière appropriée votre fournisseur d’hébergement ou demander l’autorisation pour qu’une telle inondation de trafic passe par leurs réseaux. Tecmint.com n’est en aucun cas responsable de vos actes!

De plus, lancer une attaque DoS simulée à partir d’un seul hôte ne représente pas une attaque réelle. Pour simuler une telle situation, vous devez cibler votre serveur à partir de plusieurs clients en même temps.

Notre environnement de test est composé d’un CentOS 7 serveur [IP 192.168.0.17] et un hôte Windows à partir duquel nous lancerons l’attaque [IP 192.168.0.103]:

Confirmer L'Adresse Ip De L'Hôte
Confirmer L&Rsquo;Adresse Ip De L&Rsquo;Hôte

Veuillez lire la vidéo ci-dessous et suivre les étapes décrites dans l’ordre indiqué pour simuler une attaque DoS simple:

YouTube video

Ensuite, l’adresse IP incriminée est bloquée par iptables:

Ip De L'Attaquant Bloqué
Ip De L&Rsquo;Attaquant Bloqué

Conclusion

Avec mod_security et mod_evasive activée, l’attaque simulée provoque le CPU et RAM pour expérimenter un pic d’utilisation temporaire pendant seulement quelques secondes avant que les adresses IP source ne soient mises sur liste noire et bloquées par le pare-feu. Sans ces outils, la simulation renversera sûrement le serveur très rapidement et le rendra inutilisable pendant la durée de l’attaque.

Nous aimerions savoir si vous prévoyez d’utiliser (ou avez déjà utilisé) ces outils. Nous sommes toujours impatients de vous entendre, alors n’hésitez pas à laisser vos commentaires et questions, le cas échéant, en utilisant le formulaire ci-dessous.

Liens de référence

https://www.modsecurity.org/

.

Rate this post
Publicité
Article précédentCritique du jeu vidéo: ‘Sword Art Online’ met les joueurs dans le monde de l’anime – Divertissement et vie – telegram.com
Article suivantSe concentrer sur le monopole de Facebook et de Google passe à côté
Avatar De Violette Laurent
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici