Comment configurer ModSecurity avec Apache sur Debian/Ubuntu
Le serveur Web Apache est hautement personnalisable et peut être configuré de plusieurs manières pour répondre à vos besoins. Il existe de nombreux modules tiers que vous pouvez utiliser pour configurer Apache selon vos préférences.
ModSecurity est un WAF (Web Application Firewall) open source natif du serveur Web Apache. Il s'agissait initialement d'un module Apache uniquement, mais il s'est développé au fil de l'année pour devenir un pare-feu d'application Web à part entière. Il est désormais pris en charge par Nginx et même IIS.
ModSecurity inspecte les requêtes entrantes adressées au serveur Web par rapport à un ensemble de règles prédéfinies. Généralement, il fournit un ensemble de règles appelées CRS (Core Rule Set) qui protègent un site Web contre un éventail d'attaques d'applications Web telles que l'injection SQL, XSS et les attaques de session. détournement entre autres exploits.
Le pare-feu applicatif ModSecurity fait partie intégrante de la conformité PCI DSS pour protéger les sites contre les attaques externes. Lorsque le module est activé, il déclenche une « erreur interdite 403 » qui implique simplement que vous disposez des autorisations insuffisantes pour accéder à la ressource sur le serveur Web.
Dans ce guide, nous allons vous montrer comment installer et configurer ModSecurity pour fonctionner avec Apache sur Debian et Ubuntu . Linux.
Étape 1 : Installer ModSecurity sur Ubuntu
La première étape consiste à installer ModSecurity. Nous commencerons par actualiser les listes de packages comme suit :
sudo apt update
Ensuite, installez le package ModSecurity avec d'autres dépendances et bibliothèques.
sudo apt install libapache2-mod-security2
Ensuite, activez le module.
sudo a2enmod security2
Redémarrez ensuite le serveur Web Apache pour appliquer les modifications.
sudo systemctl restart apache2
À ce stade, ModSecurity est installé avec succès. Configurons-le maintenant.
Étape 2 : configurer ModSecurity dans Ubuntu
Par défaut, ModSecurity est uniquement configuré pour détecter et enregistrer les activités suspectes. Nous devons franchir une étape supplémentaire et le configurer non seulement pour détecter mais également bloquer les activités suspectes.
Copiez le fichier de configuration ModSecurity par défaut – modsecurity.conf-recommended – dans un nouveau fichier comme indiqué dans la commande ci-dessous.
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
À l'aide de votre éditeur de texte préféré, ouvrez le fichier
sudo nano /etc/modsecurity/modsecurity.conf
Localisez la ligne :
SecRuleEngine DetectionOnly
Réglez-le sur :
SecRuleEngine On
Enregistrez les modifications et quittez le fichier.
Pour appliquer les modifications dans Apache, redémarrez le serveur Web.
sudo systemctl restart apache2
Étape 3 : Téléchargez l'ensemble de règles de base OWASP ModSecurity
L'étape suivante consiste à télécharger le dernier ensemble de règles de base (CRS) OWASP ModSecurity à partir de la page GitHub.
Clonez le référentiel git OWASP comme indiqué.
git clone https://github.com/coreruleset/coreruleset.git
Accédez au répertoire.
cd coreruleset/
Assurez-vous de déplacer le fichier crs-setup.conf.example vers le répertoire modsecurity et de le renommer crs-setup.conf.
sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf
De plus, déplacez également le répertoire rules vers le répertoire modsecurity.
sudo mv rules/ /etc/modsecurity/
Ensuite, modifiez le fichier security2.conf.
sudo nano /etc/apache2/mods-enabled/security2.conf
Assurez-vous qu'il contient les lignes suivantes.
IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
Redémarrez ensuite Apache pour que les modifications soient conservées.
sudo systemctl restart apache2
Testons maintenant notre configuration ModSecurity.
Étape 4 : tester la configuration ModSecurity sur Ubuntu
Enfin, nous devons tester que ModSecurity peut détecter et bloquer le trafic HTTP suspect. Pour y parvenir, nous devons modifier le fichier d'hôte virtuel par défaut.
sudo nano /etc/apache2/sites-available/000-default.conf
Ensuite, nous allons créer une règle de blocage qui bloquera l'accès à une certaine URL lors de l'accès par un navigateur Web.
Ajoutez ces lignes à la fin avant la balise de fermeture « Virtualhost ».
SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"
N'hésitez pas à définir les balises « id » et « msg » sur les valeurs souhaitées.
Redémarrez ensuite le serveur Web Apache pour appliquer les modifications apportées au fichier de configuration de l'hôte virtuel.
sudo systemctl restart apache2
Sur votre navigateur Web, essayez de visiter l'URL affichée avec ?testparam=test
à la fin.
http://server-ip/?testparam=test
Vous obtenez une « Erreur 403 Forbidden » indiquant que vous n’avez pas accès à la ressource.
Vous pouvez en outre confirmer que le client a été bloqué en vérifiant les journaux d'erreurs comme suit.
cat /var/log/apache2/error.log | grep “Test Successful”
Ceci est la confirmation que nous avons configuré avec succès ModSecurity pour détecter et bloquer le trafic indésirable. Dans ce guide, nous vous avons guidé tout au long du processus de configuration de ModSecurity avec Apache sur les systèmes Debian/Ubuntu.