Voici quelques commandes utiles. Sauf indication contraire, c’est du Linux 😉 mais ça marche quasiment de la même façon sous Windows.
openSSL est un outil open source très répandu qui offre un très grand nombre de fonctions utiles pour la mise en oeuvre de SSL. Voici quelques exemples d’utilisation.
Pour récupérer le certificat présenté par un site :
ElasticSearch est un moteur de recherche et d’analyse RESTful distribué, d’après son site web (elastic.co). Très utilisé et même proposé sous forme de service par AWS, ce produit permet de gérer des recherches sur de grandes quantités de données.
C’est bien.
Mais cela devient moins amusant quand on le configure mal, les informaticiens pouvant être peu consciencieux ou débordés. Le résultat est alors sans appel : des moteurs de recherche internet (comme Shodan) indexent (trop) facilement les contenus mal protégés, et l’énorme quantité des données gérées par ElasticSearch deviennent purement et simplement disponibles et accessibles à la moindre requête anonyme.
D’après Shodan1, en 2018, 900 To de données ElasticSearch sont disponibles sans protection, et plus de 5 Po de données pour de clusters Hadoop.
Fuites de données
Exactis
Il s’agit du premier cas que j’ai repéré (ça qui ne signifie pas qu’il s’agisse du premier). La volumétrie fait peur : 2 To de données de 340 millions d’utilisateurs2. Pas de cartes bancaires, mais tout un tas de données de profilage, relevant de la vie privée, mais pouvant aussi servir à répondre aux questions de sécurité pour récupérer (frauduleusement) un accès à un quelconque service de messagerie, de réseautage social, etc.
Durée de vie
Ne pas faire attention et laisser les paramètres par défaut peut rapidement conduire à de gros ennuis : une étude de 2020 indique qu’une base non sécurisée est repérée par les méchants en huit heures3. Ils sont à l’affût !
Tellement courant
Les fuites de données dues à une mauvaise mise en oeuvre d’ElasticSearch sont si courantes que la CNIL a publié un guide de bonnes pratiques.
Principe d’Elasticsearch
Elasicsearch est un outil de recherche, open source, très populaire. Son fonctionnement repose sur les index inversés, ou inverted indexes, qui recensent des caractéristiques associées à ces documents, comme par exemple des mots clés, mais il peut y avoir bien d’autres usages, comme le traitement d’un grand nombre de logs, sujet très pertinent en sécurité informatique.
Index inversé
Un index inversé est créé après examen de chacun des documents (« crawling »), et création des caractéristiques associées, que l’on définit selon ses besoins. A la suite de cela, on crée un index partant de ces caractéristiques et pointant vers les documents correspondant le mieux aux caractéristiques recherchées.
Dans des moteurs de recherche web (Yahoo, Google, Bing…) on tape une liste de mots clés, et l’index inversé nous renvoie les pages web les plus pertinentes qu’il a recensé auparavant.
Apache Lucene est un outil open source permettant l’indexation de documents, sur lequel est basé Elasticsearch, qui est une société commerciale mais qui propose des versions gratuites de son produit (qui reste open source).
Cluster
Conçu pour des requêtes complexes, et un nombre de documents très important, Elasticsearch se structure en clusters, dont chacun peut contenir de un à plusieurs milliers de nœuds, chaque nœud étant une machine de traitement.
Sharding
On comprend qu’une requête peut être complexe et avoir besoin de beaucoup de ressources, et donc utiliser plusieurs nœuds. De même, il peut arriver que l’indexation produise des tables si grandes qu’elles ne tiennent pas sur un seul nœud. Pour cela, on peut scinder un index sur plusieurs nœuds ; cela s’appelle le sharding.
Réplication
Comme toute bonne architecture distribuée digne de ce nom, toute donnée doit être dupliquée (ou répliquée) afin de pallier aux accidents mais aussi pour paralléliser les traitements, et Elasticsearch le permet.
Manipulons
ElasticSearch (que je vais abréger en ES) se manipule via des API Rest. Ce gros mot signifie qu’on appelle des requêtes HTTP avec une logique définie. Autant je trouve ça super pour développer une appli web, autant c’est pénible pour mes petits doigts quand il faut taper les commandes avec curl. Heureusement Kibana est une interface web qui permet de réaliser la plupart des opérations sur ES.
Les arguments sont le nom de l’index, le type du document, et son identifiant (facultatif). Pour un fichier JSON, depuis la version 6, il faut rajouter le type dans le header. Chouette.
Pour afficher les champs id et version du document #1.
Il faut utiliser POST sur un document existant, et seuls les champs modifiés ont besoin d’être présents dans le fichier, lequel peut également « scripter » le résultat.
Sans surprise, pour supprimer un document, voici la commande :
$curl -XGET 'localhost:9200/_cat/indices/?v&pretty' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .kibana ppRzSXt0Q8G8OXZg8o7_tQ 1 0 2 0 103.4kb 103.4kb yellow open logs 8YYRLl5_SauA2sglf9YRfA 5 1 36886 0 32.2mb 32.2mb
Recherches et analyses
Les recherches sont similaires à ce qu’on imagine pour un moteur de recherche, tels que Google ou Yahoo. Un langage permet de créer la requête qui vous conviendra et qui vous rendra riche et célèbre, appelé DSL. Rien de mystérieux dans ce langage calqué sur du JSON, il est très souple et très puissant et permet de scripter des requêtes plus ou moins évoluées. Tout comme SQL, on arrivera facilement à faire des requêtes simples, alors que les requêtes complexes demanderont beaucoup de grattage de tête. Point important : les requêtes sont stateful, ce qui signifie qu’il n’y a pas de mécanisme genre curseur comme en SQL.
En gros, on peut demander quels sont les meilleurs documents selon nos critères, auquel cas un score est calculé (et peut être expliqué dans la réponse) et les meilleurs résultats sont affichés ; sinon on peut filtrer et demander si un enregistrement satisfait à nos critères ou pas (la réponse est alors binaire).
La puissance de l’algorithme
TF/IDF de son petit nom, l’algo qui sert de base pour le calcul du score des documents. Il doit être recalculé à chaque ajout de document, mais il ne dépend que de la base de documents indexés, et de rien d’autre. Il est au cœur du fonctionnement d’ES, mais je n’ai pas trouvé de présentation récente de son fonctionnement sur le site ES ; on peut trouver l’info ici (compose.com) ou ici (sur le site de Lucene, le moteur d’ES).
TF : Term frequency, calculé comme étant la racine carré du nombre d’occurrences d’un terme dans un document ; cela permet de savoir à quelle fréquence un terme apparaît dans un champ. Plus un terme apparaît dans un document, plus le document est pertinent ;
IDF : Inverse Document Frequency (à expliciter). Il permet de savoir à quelle fréquence un terme apparaît dans un index. Plus un terme est fréquent dans un index, moins il est différenciant.
La longueur d’un champ intervient aussi (plus la longueur du champ est court, plus l’apparition d’un terme à l’intérieur de celui-ci a de la pertinence). Ainsi, un terme trouvé dans le titre d’un livre induira un score plus élevé que s’il est trouvé dans le corps du texte du livre.
Quand une requête est lancée, les informations demandées dans la requêtes sont combinées avec les résultats de l’algo TF/IDF, et un score est associé à chaque document. Le tour est joué.
Analyse de données
ES permet aussi de réaliser des agrégations de données, ouvrant ainsi la possibilité à l’analyse de données (« analytics »). Il existe quatre types d’agrégation dans ES (je chercherai s’il existe une traduction) :
« Metric » qui permet de faire des calculs sur l’ensemble des données (ou sur un groupe logique, cf ci-dessous). Cela se rapproche des AVG(), SUM() du SQL ;
« Bucketing » réalise des groupes logiques de données à partir d’une requête de recherche, similaire au GROUP BY en SQL ;
« Matrix » est une fonction expérimentale portant sur plusieurs champs en même temps (à développer) ;
« Pipeline » permet d’enchaîner les agréations.
Champs textes
Les champs texte, de format assez libres, ne sont pas par défaut inclus dans les champs pouvant être requêtés (sic), car cela consomme beaucoup de ressources à indexer (et donc de mémoire). Si on souhaite pouvoir filter et requêter sur ces champs, il faut explicitement demander qu’ils soient intégrés dans le fielddata, qui est l’espace mémoire servant justement à ce type de requêtes.
La confiance n’exclut pas le contrôle, dit-on souvent. Il existe d’excellents outils pour évaluer la sécurité et la robustesse d’un serveur proposant une communication SSL.
Pour ma part, je recommande SSLScan, dont il existe plusieurs variantes. En fouillant un peu, celle qui me semble la plus pertinente est celle de rbsec, car elle est à peu près à jour (elle intègre les versions 1.1 et 1.2 de TLS), et ne mixe pas les technologies puisqu’il s’agit uniquement d’un programme en langage C. Ca permet d’éviter de trop nombreuses dépendances, et ça évite de cumuler les vulnérabilités de multiples technologies (bien que cet aspect puisse être débattu).
L’utilisation d’un gestionnaire de mot de passe est une très bonne pratique, à condition de choisir un bon outil. Je ne dirai pas le bon outil, car selon ses exigences, ses usages, différents outils peuvent convenir.
Les critères de choix
Il faut souvent faire des compromis sur les points suivants :
L‘ergonomie question de goût et de facilité d’utilisation, sans incidence sur la sécurité (sauf si cela vous incite à faire de fausses manip’) ;
La sécurité intrinsèque, qui peut être bonne ou mauvaise, en utilisant de bons algorithmes ou de mauvais, ou en les employant mal, etc.
L‘intégration avec le système d’exploitation, les navigateurs web, etc. Autant cela facilite l’usage, autant cela nuit à la sécurité puisque cela multiplie la surface d’attaques.
Le type de stockage en local ou en ligne. La différence est énorme : en ligne, vous avez plus de fonctionnalités et de facilité à l’utiliser, mais vous augmentez considérablement le risque de vol de vos mots de passe.
Le mode de licence ouvert ou non. En sécurité, on considère qu’un code accessible (à défaut d’être open source) a l’avantage de pouvoir être examiné, amélioré et audité. Avec un code propriétaire, il faut faire confiance à l’éditeur.
Après, tout dépend de si vous êtes paranoïaque ou pas. Sur le site Pixel1 (du journal Le Monde), cinq outils ont été regardés, en se basant sur un article de NextInpact2. Étonnamment, le meilleur en termes de sécurité est le moins bon en termes d’ergonomie, et réciproquement. En pratique, la facilité d’usage et l’ergonomie sont souvent inversement proportionnels au niveau de sécurité.
Le niveau de sécurité maximal n’est pas non plus
automatiquement la solution la plus adaptée : une ergonomie simple et efficace
peut faciliter l’adoption d’un outil et, même si son niveau de sécurité intrinsèque
est insuffisant, cela peut permettre de lutter contre de mauvaises pratiques et
réduire malgré tout le risque résiduel. Cela peut également convenir si
l’impact d’une compromission reste faible et limité.
Il faut donc bien définir ses priorités lors du choix d’un outil, et donc savoir quel est le ou les risques que l’on souhaite couvrir.
Quelques éléments
DashLane et LastPass font partie de la catégorie des outils en ligne. Un spécialiste de sécurité a dézingué3 la qualité de leurs codes (au niveau sécurité), ce qui n’est guère rassurant, alors que KeePass ne présentait pas de faille apparente, et a même eu droit à plusieurs inspections (un audit de code encadré par la commission européenne4 et une certification de premier niveau par l’ANSSI, sur une version ancienne).
Du point de vue d’un attaquant, un gestionnaire de mots de passe en ligne est une cible de choix ! LastPass en a fait les frais en 20155 puis en 20176, en plusieurs temps78, au travers des extensions pour navigateurs web. Plus anecdotique, une nouvelle faille assez gênante a été vue (et corrigée) en 20199.
Keeper met l’accent sur une solution dite « sans connaissance », mais des chercheurs en sécurité10 remettent en cause ces affirmations. Keeper aussi a eu les mêmes ennuis que LastPass dans son extension pour navigateur en 201611 ainsi qu’en 201712, en même temps que LastPass. Il est également connu pour ne pas être enclin à aider les chercheurs en sécurité, en les poursuivants en justice pour diffamation13, ce qui n’est pas pour entretenir un climat serein pour les échanges avec la communauté SSI.
Forrester « Meilleures pratiques : Sélection, déploiement et gestion des gestionnaires de mots de passe d’entreprise », 2018-01-08, Merritt Maxim et Andras Cser
rkhunter est un programme anti-rootkit, fonctionnant sur Linux. Il permet de vérifier l’intégrité des principaux fichiers système (dont les commandes principales) et de s’assurer qu’aucun des principaux rootkits n’est pas installé sur le système concerné.
Installation
Sur Ubuntu, le paquet est inclus dans la distribution de base. Il suffit donc de taper :
sudo apt install rkhunter
Pour lancer une analyse, c’est aussi assez simple :
sudo rkhunter -c
Quelques remarques
Il faut tout d’abord s’assurer de la mise-à-jour de l’outil, car les techniques d’attaque évoluent.
sudo rkhunter --update
Ensuite, il faut garder à l’esprit qu’un rootkit va chercher à se dissimuler, et que certains vont chercher à corrompre rkhunter pour qu’il affiche que tout va bien ! Idéalement, l’intégrité de l’outil lui-même doit être vérifiée (ainsi que de sa base de référence), manuellement, par exemple. On peut aussi réinstaller l’outil à chaque lancement, à partir du site de référence. C’est très fastidieux, mais très utile.
Au 11 avril 2018, la signature de la version 1.4.6 était :
OSSEC est un HIDS de niveau système, qui s’installe sur quasiment n’importe quelle distribution Linux du moment qu’un administrateur dispose d’un compilateur C sur la machine adéquate. Cet HIDS peut s’installer seul (il ne vérifie que ce qui se passe sur la machine) ou en tant que serveur/agent (c’est-à-dire qu’on l’installe sur une machine centrale ou serveur, qui contrôle tout un réseau de machines sur lesquelles on installe des agents ossec). Je décrirai ici l’installation dite « locale », à savoir qu’on ne surveille que son propre serveur.
Pré-requis
Il est possible que certains éléments ne soient pas installés sur le système de base. Pour Ubuntu 16 (LTS), il faut :
apt install libpcre2-dev (à compléter)
Procédure
D’abord en téléchargeant la dernière version, par exemple dans votre répertoire /home (ou tout répertoire sur lequel vous avez un droit root, car il est impértif d’installer cet utilitaire en tant qu’administrateur du système).
$ git clone https://github.com/ossec/ossec-hids $ cd ossec-hids $ ./install.sh
Vérifiez qu’il s’agit bien de la dernière version. Et sinon c’est tout ce qu’il y a à faire, à la réserve près de répondre aux questions de l’installateur. Cela suffira pour un serveur web isolé. Il est possible d’avoir aussi un serveur surveillant plusieurs autres (appelés agents)
Installation locale
Choisir le type d’installation et la langue
1- Choisir le type d'installation (local) ... ** Za instalaciju na srpskom, izaberi [sr]. ** Türkçe kurulum için seçin [tr]. (en/br/cn/de/el/es/fr/it/jp/pl/ru/sr/tr) [en]: fr 1- Quel type d'installation voulez-vous (serveur, agent, local ou aide) ? local - Installation en local choisie.
Définition de l’environnement d’installation
2- Définition de l'environnement d'installation. - Choisissez votre répertoire d'installation de OSSEC HIDS [/var/ossec]: (garder la valeur par défaut comme indiqué) - L'installation sera faite sur /var/ossec .
Configuration de OSSEC HIDS
3- Configuration de OSSEC HIDS. 3.1- Voulez-vous une alerte par email ? (o/n) [o]: n --- Alerte par email désactivée. 3.2- Voulez-vous démarrer le démon de vérification d'intégrité ? (o/n) [o]: o - Lancement de syscheck (démon de vérification d'intégrité). 3.3- Voulez-vous démarrer le moteur de détection de rootkit ? (o/n) [o]: o - Lancement de rootcheck (détection de rootkit). 3.4- La réponse active vous permet d’exécuter des commandes spécifiques en fonction d'évènement. Par exemple, vous pouvez bloquer une adresse IP ou interdire l'accès à un utilisateur spécifique. Plus d'information sur : http://www.ossec.net/en/manual.html#active-response - voulez-vous démarrer la réponse active ? (o/n) [o]: o - Réponse active activée. - Par défaut, nous pouvons activer le contrôle d'hôte et le pare-feu (firewall-drop). Le premier ajoute un hôte dans /etc/hosts.deny et le second bloquera l'hôte dans iptables (sous linux) ou dans ipfilter (sous Solaris, FreeBSD ou NetSBD). - Ils peuvent aussi être utilisés pour arrêter les scans en force brute de SSHD, les scans de ports ou d'autres formes d'attaques. Vous pouvez aussi les bloquer par rapport à des évènements snort, par exemple. - Voulez-vous activer la réponse pare-feu (firewall-drop) ? (o/n) [o]: o - pare-feu (firewall-drop) activé (local) pour les levels >= 6 - liste blanche (white list) par défaut pour la réponse active : - 212.27.54.252 - 212.27.53.252 - Voulez-vous d'autres adresses IP dans votre liste (white list) ? (o/n)? [n]: o - IPs (séparées par des espaces) : votre-ip
Puis lancez ossec via la commande indiquée en résultat /var/ossec/bin/ossec-control start, le programme sera également lancé à chaque redémarrage du serveur.
Une précaution importante à prendre
Okay, ossec est simple à installer, mais si vous voules qu’il serve à quelque chose, il faut impérativement :
Autoriser la réponse active lors de l’installation (ou du paramétrage) : ossec bloquera (temporairement) les adresses IP causant des problèmes.
Mettre les bons répertoires de logs dans le fichier de configuration.
Cet outil se base sur les logs pour trouver des anomalies : il faut donc inclure a minima les logs du systèmes et les logs de vos serveurs web !
Shorewall est un excellent pare-feu simple à configurer. Pour être plus précis, cet outil permet de configurer facilement des règles iptables.
Installation
Linux général
Télécharger le source, et lancer une installation classique :
$ wget http://www.shorewall.net/pub/shorewall/4.4/shorewall-4.4.8/shorewall-4.4.8.2.tgz $ tar –xvf shore* $ ./install.sh
Fedora, Red Hat et CentOS
Encore une fois, des distributions récentes peuvent proposer shorewall. L’avantage est que la mise-à-jour est automatique, l’inconvénient est que vous n’avez pas toujours la dernière vesion. Dans ce cas, l’installation est cependant beaucoup plus simple :
yum install shorewall
Il ne reste plus qu’à configurer Shorewall, en comprenant un peu ce que l’on fait…
Ubuntu et Debian
C’est à peu près aussi simple que sur Red Hat like :
apt-get install shorewall
Par contre attention, pour que Shorewall démarre automatiquement, n’oubliez pas de mettre de modifier le fichier /etc/default/shorewall et de mettre startup=1.
Protections Linux
Il faut aussi penser à autoriser shorewall avec AppArmor, SELinux, etc. Pour AppArmor : http://doc.ubuntu-fr.org/apparmor.
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4 dmz ipv4
Définissez le fichier policy
A noter : on peut abaisser le niveau de log.
#SOURCE DEST POLICY LOG LIMIT: CONNLIMIT: # LEVEL BURST MASK # # à revoir
Définissez le fichier rules
Pour commencer, on met les règles de base pour permettre la connexion, ici dans le cadre d’une machine Proxmox.
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME # PORT PORT(S) DEST LIMIT GROUP #SECTION ESTABLISHED #SECTION RELATED SECTION NEW #
Pour Plesk, ajouter :
ACCEPT net dmz:IP1,IP2,IP3... udp 8443 ACCEPT net dmz:IP1,IP2,IP3... tcp 8443,8447
Pour CPanel, ajouter :
ACCEPT net dmz:IP1,IP2,IP3... tcp 2077,2078,2082,2083,2086,2087,2089,2095,2096 ACCEPT net dmz:IP1,IP2,IP3... udp 2077,2078
Si vous utilisez un collecteur de logs (par exemple Ossec) :
ACCEPT net dmz:votre_ip udp 514,1514
Quelques bugs et anomalies
Le bug Ubuntu 15.04 et suivants
Sur Ubuntu 15, shorewall semble ne pas démarrer. On peut considérer cela comme très gênant. Peu d’informations sont disponibles sur le web, à part un bug ouvert1 chez Debian. Une solution semble être l’installation d’un package supplémentaire, shorewall-init. Dans mon cas, ça a marché.
Problème de redémarrage
Il m’est arrivé d’installer shorewall, de le lancer, mais qu’après un reboot, rien ne démarre. J’avais trouvé la solution au fin fond d’un forum (launchpad), mais cela venait d’un problème dans la gestion du démarrage des services. Pour le résoudre :
mod_security est filtre (pare-feu) applicatif se présentant sous le forme d(un module que l’on peut ajouter à son serveur web Apache. Son rôle est de filtrer les requêtes bizarroïdes. Certaines distributions récentes (comme Fedora) l’intègrent et ce module peut donc être installé très facilement.
L’installation automatique convient parfaitement, mais si vous voulez avoir la toute dernière version ou si votre distribution ne la contient pas, j’ai aussi décrit la procédure manuelle.
Installation automatique
Sous Fedora 8, il suffit de taper, en mode root :
yum install mod_security
Et le toujours est joué… une fois que le serveur web aura redémarré (cf ci-dessous) :
apachectl restart
En général, les règles par défaut sont assez fines et évoluées, il n’y a pas à y toucher, sauf si cela bloque des fonctionnalités de votre site.
Si une règle vous bloque
C’est pas de chance, car il faudra alors désactiver une règle, ce qui potentiellement vous expose à une faille de sécurité. Bon, mais en pratique, il est rare qu’une règle soit cruciale à elle seule, et les autres vous permettront de conserver un niveau de sécurité acceptable. Si toutefois vous devez en désactiver plusieurs, il faudra alors se poser de sérieuses questions sur votre site, qui doit employer des techniques intrusives ou qui est conceptuellement mal sécurisé.
Comment le savoir ?
Faites un tour dans le répertoire /var/log/httpd et regardez le contenu des fichiers de logs de mod_security.
[root@host httpd]# tail -20 modsec_audit.log
GET / HTTP/1.1
Host: xx.xxx.xxx.xxx
--54705f53-F--
HTTP/1.1 400 Bad Request
Content-Length: 305
Connection: close
Content-Type: text/html; charset=iso-8859-1
--54705f53-H--
Message: Warning. Match of "rx ^OPTIONS$" against "REQUEST_METHOD" required. [id "960015"] [msg "Request Missing an Accept Header"] [severity "CRITICAL"]
Message: Warning. Operator EQ match: 0. [id "960009"] [msg "Request Missing a User Agent Header"] [severity "WARNING"]
Message: Access denied with code 400 (phase 2). Pattern match "^[\d\.]+$" at REQUEST_HEADERS:Host. [id "960017"] [msg "Host header is a numeric IP address"] [severity "CRITICAL"]
Action: Intercepted (phase 2)
Stopwatch: 1211041326569321 1012 (293 703 -)
Producer: ModSecurity v2.1.7 (Apache 2.x)
Server: Apache/2.2.8 (Fedora)
--54705f53-Z--
On peut aussi avoir des infos dans /var/log/httpd/modsec_debug.log :
[root@ikobox httpd]# tail -6 modsec_debug.log
[17/May/2008:18:22:06 +0200] [91.121.138.106/sid#802cace0][rid#8064f0f8][/][2] Warning. Match of "rx ^OPTIONS$" against "REQUEST_METHOD" required. [id "960015"] [msg "Request Missing an Accept Header"] [severity "CRITICAL"]
[17/May/2008:18:22:06 +0200] [91.121.138.106/sid#802cace0][rid#8064f0f8][/][2] Warning. Operator EQ match: 0. [id "960009"] [msg "Request Missing a User Agent Header"] [severity "WARNING"]
[17/May/2008:18:22:06 +0200] [91.121.138.106/sid#802cace0][rid#8064f0f8][/][1] Access denied with code 400 (phase 2). Pattern match "^[\d\.]+$" at REQUEST_HEADERS:Host. [id "960017"] [msg "Host header is a numeric IP address"] [severity "CRITICAL"]
[17/May/2008:18:27:08 +0200] [91.121.138.106/sid#802cace0][rid#806440d0][/][2] Warning. Match of "rx ^OPTIONS$" against "REQUEST_METHOD" required. [id "960015"] [msg "Request Missing an Accept Header"] [severity "CRITICAL"]
[17/May/2008:18:27:08 +0200] [91.121.138.106/sid#802cace0][rid#806440d0][/][2] Warning. Operator EQ match: 0. [id "960009"] [msg "Request Missing a User Agent Header"] [severity "WARNING"]
[17/May/2008:18:27:08 +0200] [91.121.138.106/sid#802cace0][rid#806440d0][/][1] Access denied with code 400 (phase 2). Pattern match "^[\d\.]+$" at REQUEST_HEADERS:Host. [id "960017"] [msg "Host header is a numeric IP address"] [severity "CRITICAL"]
On voit que la règle 960017 est remplie, ce qui correspond à une type d’attaque. Après, à vous de voir s’il faut la désactiver.
Comment le corriger ?
Les règles sont dans /etc/httpd/modsecurity.d dans l’installation sous Fedora 8.
[root@ikobox conf.d]# cd /etc/httpd/modsecurity.d
[root@ikobox modsecurity.d]# grep '960017' *
modsecurity_crs_21_protocol_anomalies.conf:SecRule REQUEST_HEADERS:Host "^[d.]+$" "deny,log,auditlog,status:400,msg:'Host header is a numeric IP address', severity:'2',id:'960017'"
La Threat Intelligence est la connaissance et les données qu’une entreprise collecte et analyse dans le but de comprendre dans quelle mesure une menaces peut impacter (ou avoir impacté) l’organisation concernée (définition de domaintools.com).