[pfSense] Filtrer les adresses IP à risque
29/03/2022
Dans cet article nous présentons une solution afin de filtrer les adresses IP publiques réputées à risques ou hébergeant des malwares ou des contenus malveillants.
Il s'agit d'une solution intéressante et très rapide à mettre en œuvre sur ses firewall.
Nous présenterons deux solutions : une gratuite et une payante.
Une bonne pratique de sécurité informatique est d'empêcher le trafic à destination ou provenant de sources réputées à risque. C'est-à-dire le trafic vers ou à destination de serveurs ou d'adresses IP hébergeant des virus, des malwares, du contenu malveillant ou aux mains de pirates informatiques.
Cela apporte une couche de sécurité pour le trafic internet sortant : en cas de détournement DNS ou d'infection par un vers ou un malware, du trafic est généralement émis ou redirigé vers des serveurs frauduleux. Essayer de détecter ces serveurs et de bloquer le trafic à leur destination est une bonne approche.
De la même manière, lorsqu'une entreprise héberge un service comme un accès OpenVPN ou un serveur web, il n'est généralement appliqué aucun filtrage sur les adresses IP publiques pouvant se connecter. Bloquer a minima le adresses IP connues pour être utilisées par des personnes malintentionnées est donc également une approche intéressante.
Pour être efficace, ces listes d'adresses IP à risque doivent être mises à jour très régulièrement afin de coller au plus près des menaces en cours. Elles doivent éviter de comporter des faux-positifs, c'est-à-dire ne pas répertorier des adresses IP qui sont en réalité parfaitement légitimes.
Si le taux de faux-positifs est trop fort, alors cela devient complètement inutilisable en production pour des TPE/PME.
C'est donc un subtile équilibre qu'il faut trouver pour d'une part être efficace et d'autre part ne pas bloquer du trafic légitime.
Le filtrage des adresses IP publiques réputées à risque fait partie d'une approche de sécurité de défense en profondeur.
Nous présenterons deux solutions :
Les listes DROP et eDROP de SpamHaus. Ce sont des listes gratuites sans risque de faux-positifs.
Les listes proposées par nos soins. Ce sont des listes payantes qui permettent un filtrage beaucoup plus fin et complet que SpamHaus tout en étant très attentif à éviter les faux-positifs.
L'implémentation se fera ensuite en deux étapes : créer un alias se chargeant de récupérer les listes d'adresses IP à bloquer, puis créer les règles de filtrage bloquant le trafic associé à ces alias.
The Spamhaus Project (SpamHaus) est une organisation internationale non gouvernementale dont l'objectif est de fournir une protection en temps-réel contre les pourriels.
SpamHaus fournit un certain nombre d'outils en ce sens, ainsi que plusieurs listes de filtrage d'adresses IP à risque.
Ces listes de filtrage nommées DROP (Don't Route Or Peer) et EDROP (Extended DROP) sont composées de blocs réseau qui sont "détournés" ou loués par des spammeurs professionnels ou utilisés à des fins cybercriminelles (diffusion de logiciels malveillants, téléchargement de chevaux de Troie, botnet, etc.).
Les listes DROP et EDROP n'incluent pas d'adresses IP uniques, mais seulement des blocs d'adresses IP. Ainsi, une adresse IP isolée connue pour être malveillante ne sera jamais bloquée par les listes SpamHaus. Seuls des blocs d'adresses IP attribués à des LIR seront bloqués par la liste DROP. La liste EDROP étend un peu le concept en bloquant des sous-réseaux plus fins.
Ainsi, c'est un filtrage grosse-maille qui est proposé par SpamHaus. Le gros intérêt est que le risque de faux-positif est théoriquement nul. L'inconvénient est que le filtrage manque de précision, ce qui réduit forcément la sécurité apportée par ces listes.
Les listes DROP et EDROP sont donc des solutions gratuites que nous recommandons fortement d'utiliser sur tous les firewall. Même si le filtrage n'est pas parfait, mieux vaut un filtrage grosse maille qu'aucun filtrage.
SpamHaus propose principalement 3 listes :
Nous allons créer trois alias : un pour chaque liste proposée par SpamHaus.
Nous nous rendons dans le menu Firewall > Aliases et cliquons sur le bouton "+ Add" :
Les champs à compléter sont les suivants :
Exemple de résultat obtenu pour la liste DROP :
Nous répétons l'opération pour chacune des trois listes. Ce qui nous donne le résultat suivant :
Si vous êtes utilisateurs d'OPNsense, l'approche est exactement la même. Il faut se rendre dans le menu Pare-feu > Alias et cliquer sur le discret bouton "+" :
Compléter les champs de la manière suivante :
Exemple de résultat obtenu pour la liste DROP :
Nous répétons l'opération pour chacune des trois listes.
Nos alias sont prêts. Il nous reste à configurer nos règles de filtrage pour bloquer le trafic entrant provenant de ces adresses IP, ainsi que le trafic sortant à destination de ces adresses IP.
Note : dans ce chapitre, nous présentons une solution commerciale payante. Si vous n'êtes pas intéressé, vous pouvez passer directement au chapitre suivant : Créer les règles de filtrage associées.
Nous avons décidé de créer notre propre liste de filtrage d'adresses IP malveillantes.
Pour cela, nous nous appuyons sur une trentaine de sources (dont SpamHaus) que nous traitons et que nous recoupons afin de comparer les adresses IP présentes. Cela nous permet de déterminer la fréquence d'apparition d'une adresse IP détectée. Plus une adresse IP est détectée et plus la probabilité que ce soit une adresse IP malveillante est forte. A contrario, plus la probabilité de rencontrer un faux-positif est faible.
Cela permet d'avoir une source unique très complète et efficace avec des sources fiables et recoupées, tout en conservant un risque de faux-positifs extrêmement faible.
Nous proposons trois listes :
L'accès à ces listes est payant sous la forme d'un abonnement mensuel ou annuel.
Si vous êtes intéressé, vous pouvez consulter notre boutique en ligne : Liste IP malveillantes.
Pour découvrir le service, nous proposons une offre de lancement à 1 € H.T. pour le premier mois.
Passons à l'implémentation. Pour cela, nous allons créer un alias en nous rendant dans le menu Firewall > Aliases et cliquons sur le bouton "+ Add" :
Les champs à compléter sont les suivants :
Pour pouvoir télécharger la liste de votre choix, il faudra disposer d'une clef de licence valide. L'URL à saisir sera de la forme suivante : https://provya.fr/download/VERSION.txt?key=VOTRE_CLEF (en remplaçant VERSION par le fichier choisi et VOTRE_CLEF par la clef de licence que vous aurez reçu par e-mail).
Ce qui donne l'une des URLs suivantes à utiliser :
Exemple de résultat obtenu :
Par défaut, pfSense ne propose une mise à jour des alias de type "URL Table" qu'au mieux une fois par jour. Ce qui est trop peu pour pouvoir disposer d'une liste réellement à jour. Nous recommandons de mettre à jour la liste toutes les heures ou toutes les deux heures.
Pour y remédier, nous suggérons d'installer le package "cron" afin d'effectuer des mises à jour plus fréquentes.
Pour cela, nous nous rendons dans le menu System > Package Manager, onglet "Available Packages". Nous faisons une recherche avec le mot-clé "cron" et cliquons sur l'icône d'installation :
Une fois le package "cron" installé, naviguer dans le menu Services > Cron :
Nous repérons la ligne rc.update_urltables et cliquons sur son icône de modification (crayon) :
Nous suggérons d'effectuer la mise à jour toutes les heures ou toutes les deux heures. Il faut modifier le champ "Hour" :
Si vous êtes utilisateurs d'OPNsense, l'approche est exactement la même. Il faut se rendre dans le menu Pare-Feu > Alias et cliquer sur le discret bouton "+" :
Compléter les champs de la manière suivante :
Pour pouvoir télécharger la liste de votre choix, il faudra disposer d'une clef de licence valide. L'URL à saisir sera de la forme suivante : https://provya.fr/download/VERSION.txt?key=VOTRE_CLEF (en remplaçant VERSION par le fichier choisi et VOTRE_CLEF par la clef de licence que vous aurez reçu par e-mail).
Ce qui donne l'une des URLs suivantes à utiliser :
Exemple de résultat obtenu :
Avantage d'OPNsense sur pfSense : il est possible de préciser un taux de rafraîchissement aussi bien en jours qu'en heures (contre uniquement en jours pour pfSense). Toute l'étape liée à la gestion du cron décrite pour pfSense n'est donc pas nécessaire sur OPNsense !
La configuration de notre alias est terminée. Il nous reste à configurer nos règles de filtrage pour bloquer le trafic entrant provenant de ces adresses IP, ainsi que le trafic sortant à destination de ces adresses IP.
Se rendre dans le menu Firewall > Rules et ajouter sur l'interface WAN (ou d'une façon générale sur les interfaces de vos connexions à Internet) une règle en haut de liste en cliquant sur le bouton .
Configurer la règle avec les paramètres suivants :
Il faut bien sûr adapter avec le nom de l'alias utilisé à l'étape précédente.
Si vous utilisez une liste Provya, une seule liste doit être utilisée (strict, main ou soft). Il est également inutile d'utiliser une liste SpamHaus en complément car les adresses IP fournies par SpamHaus sont déjà incluses dans les listes Provya.
Si vous utilisez SpamHaus, il faudra créer une règle pour chaque alias (DROP et EDROP). Si vous utilisez la liste DROPv6, il faudra bien penser à choisir IPv6 pour le champ "Address Family" de votre règle de filtrage.
Enfin, nous créons également une règle sur l'interface LAN (ou d'une façon plus générale sur toutes nos interfaces locales qui disposent d'un accès vers Internet) que nous plaçons en haut de liste en cliquant sur le bouton .
Les paramètres à saisir sont les suivants :
Il faudra bien sûr adapter avec le nom de l'alias utilisé à l'étape précédente.
Si vous utilisez SpamHaus, il faudra encore une fois créer autant de règles que vous avez créé d'alias.
Voilà, le filtrage des adresses IP à risque est en place.
Il s'agit d'un élément de sécurité essentiel et vraiment simple à mettre en œuvre afin d'apporter un niveau de sécurité supplémentaire pour le trafic passant par notre firewall.
Il s'agit d'une solution intéressante et très rapide à mettre en œuvre sur ses firewall.
Nous présenterons deux solutions : une gratuite et une payante.
Filtrer les IP à risque, pourquoi ?
Une bonne pratique de sécurité informatique est d'empêcher le trafic à destination ou provenant de sources réputées à risque. C'est-à-dire le trafic vers ou à destination de serveurs ou d'adresses IP hébergeant des virus, des malwares, du contenu malveillant ou aux mains de pirates informatiques.
Cela apporte une couche de sécurité pour le trafic internet sortant : en cas de détournement DNS ou d'infection par un vers ou un malware, du trafic est généralement émis ou redirigé vers des serveurs frauduleux. Essayer de détecter ces serveurs et de bloquer le trafic à leur destination est une bonne approche.
De la même manière, lorsqu'une entreprise héberge un service comme un accès OpenVPN ou un serveur web, il n'est généralement appliqué aucun filtrage sur les adresses IP publiques pouvant se connecter. Bloquer a minima le adresses IP connues pour être utilisées par des personnes malintentionnées est donc également une approche intéressante.
Pour être efficace, ces listes d'adresses IP à risque doivent être mises à jour très régulièrement afin de coller au plus près des menaces en cours. Elles doivent éviter de comporter des faux-positifs, c'est-à-dire ne pas répertorier des adresses IP qui sont en réalité parfaitement légitimes.
Si le taux de faux-positifs est trop fort, alors cela devient complètement inutilisable en production pour des TPE/PME.
C'est donc un subtile équilibre qu'il faut trouver pour d'une part être efficace et d'autre part ne pas bloquer du trafic légitime.
Le filtrage des adresses IP publiques réputées à risque fait partie d'une approche de sécurité de défense en profondeur.
Nous présenterons deux solutions :
Les listes DROP et eDROP de SpamHaus. Ce sont des listes gratuites sans risque de faux-positifs.
Les listes proposées par nos soins. Ce sont des listes payantes qui permettent un filtrage beaucoup plus fin et complet que SpamHaus tout en étant très attentif à éviter les faux-positifs.
L'implémentation se fera ensuite en deux étapes : créer un alias se chargeant de récupérer les listes d'adresses IP à bloquer, puis créer les règles de filtrage bloquant le trafic associé à ces alias.
SpamHaus - créer un alias contenant la liste des adresses IP à filtrer (gratuit)
The Spamhaus Project (SpamHaus) est une organisation internationale non gouvernementale dont l'objectif est de fournir une protection en temps-réel contre les pourriels.
SpamHaus fournit un certain nombre d'outils en ce sens, ainsi que plusieurs listes de filtrage d'adresses IP à risque.
Ces listes de filtrage nommées DROP (Don't Route Or Peer) et EDROP (Extended DROP) sont composées de blocs réseau qui sont "détournés" ou loués par des spammeurs professionnels ou utilisés à des fins cybercriminelles (diffusion de logiciels malveillants, téléchargement de chevaux de Troie, botnet, etc.).
Les listes DROP et EDROP n'incluent pas d'adresses IP uniques, mais seulement des blocs d'adresses IP. Ainsi, une adresse IP isolée connue pour être malveillante ne sera jamais bloquée par les listes SpamHaus. Seuls des blocs d'adresses IP attribués à des LIR seront bloqués par la liste DROP. La liste EDROP étend un peu le concept en bloquant des sous-réseaux plus fins.
Ainsi, c'est un filtrage grosse-maille qui est proposé par SpamHaus. Le gros intérêt est que le risque de faux-positif est théoriquement nul. L'inconvénient est que le filtrage manque de précision, ce qui réduit forcément la sécurité apportée par ces listes.
Les listes DROP et EDROP sont donc des solutions gratuites que nous recommandons fortement d'utiliser sur tous les firewall. Même si le filtrage n'est pas parfait, mieux vaut un filtrage grosse maille qu'aucun filtrage.
SpamHaus propose principalement 3 listes :
- DROP : https://www.spamhaus.org/drop/drop.txt
- EDROP : https://www.spamhaus.org/drop/edrop.txt (à utiliser en complément de la liste DROP)
- DROPv6 : https://www.spamhaus.org/drop/dropv6.txt (à utiliser uniquement si nous disposons d'un accès Internet en IPv6)
Nous allons créer trois alias : un pour chaque liste proposée par SpamHaus.
Nous nous rendons dans le menu Firewall > Aliases et cliquons sur le bouton "+ Add" :
Les champs à compléter sont les suivants :
- Name : le nom que nous souhaitons donner à notre alias
- Type : choisir "URL Table (IPs)"
- URL Table (IPs) : saisir l'url d'une des listes de SpamHaus. Le nombre après le slash indique la fréquence de mise en jour en nombre de jours. 128 signifie que le contenu du fichier sera téléchargé tous les 128 jours. Nous pouvons, par exemple, choisir "1", les listes de SpamHaus étant mises à jour moins une fois par semaine en moyenne.
Exemple de résultat obtenu pour la liste DROP :
Nous répétons l'opération pour chacune des trois listes. Ce qui nous donne le résultat suivant :
Si vous êtes utilisateurs d'OPNsense, l'approche est exactement la même. Il faut se rendre dans le menu Pare-feu > Alias et cliquer sur le discret bouton "+" :
Compléter les champs de la manière suivante :
- Nom : le nom que nous souhaitons donner à notre alias
- Type : URL Table (IPs)
- Refresh Frequency : la fréquence de rafraîchissement. Une fois par jour est largement suffisant. Les listes de SpamHaus sont mises à jour plus ou moins toutes les semaines.
- Contenu : saisir l'url d'une des listes de SpamHaus
Exemple de résultat obtenu pour la liste DROP :
Nous répétons l'opération pour chacune des trois listes.
Nos alias sont prêts. Il nous reste à configurer nos règles de filtrage pour bloquer le trafic entrant provenant de ces adresses IP, ainsi que le trafic sortant à destination de ces adresses IP.
Provya - créer un alias contenant la liste des adresses IP à filtrer (payant)
Note : dans ce chapitre, nous présentons une solution commerciale payante. Si vous n'êtes pas intéressé, vous pouvez passer directement au chapitre suivant : Créer les règles de filtrage associées.
Nous avons décidé de créer notre propre liste de filtrage d'adresses IP malveillantes.
Pour cela, nous nous appuyons sur une trentaine de sources (dont SpamHaus) que nous traitons et que nous recoupons afin de comparer les adresses IP présentes. Cela nous permet de déterminer la fréquence d'apparition d'une adresse IP détectée. Plus une adresse IP est détectée et plus la probabilité que ce soit une adresse IP malveillante est forte. A contrario, plus la probabilité de rencontrer un faux-positif est faible.
Cela permet d'avoir une source unique très complète et efficace avec des sources fiables et recoupées, tout en conservant un risque de faux-positifs extrêmement faible.
Nous proposons trois listes :
- strict : cette liste contient les adresses IP que nous avons détectées dans au mois deux sources de collectes différentes. La probabilité de rencontrer un faux-positif est faible.
- main : cette liste contient les adresses IP que nous avons détectées dans au mois trois sources de collectes différentes. La probabilité de rencontrer un faux-positif est extrêmement faible. C'est cette liste que nous recommandons d'utiliser.
- soft : cette liste contient les adresses IP que nous avons détectées dans au mois quatre listes de collectes différentes. La probabilité de rencontrer un faux-positif est théoriquement nulle.
L'accès à ces listes est payant sous la forme d'un abonnement mensuel ou annuel.
Si vous êtes intéressé, vous pouvez consulter notre boutique en ligne : Liste IP malveillantes.
Pour découvrir le service, nous proposons une offre de lancement à 1 € H.T. pour le premier mois.
Passons à l'implémentation. Pour cela, nous allons créer un alias en nous rendant dans le menu Firewall > Aliases et cliquons sur le bouton "+ Add" :
Les champs à compléter sont les suivants :
- Name : le nom que nous souhaitons donner à notre alias
- Type : choisir "URL Table (IPs)"
- URL Table (IPs) : saisir l'url de la liste que l'on souhaite télécharger (cf. paragraphe suivant). Le nombre après le slash indique la fréquence de mise en jour en nombre de jours. Nous indiquons "1".
Pour pouvoir télécharger la liste de votre choix, il faudra disposer d'une clef de licence valide. L'URL à saisir sera de la forme suivante : https://provya.fr/download/VERSION.txt?key=VOTRE_CLEF (en remplaçant VERSION par le fichier choisi et VOTRE_CLEF par la clef de licence que vous aurez reçu par e-mail).
Ce qui donne l'une des URLs suivantes à utiliser :
- fichier strict : https://provya.fr/download/strict.txt?key=VOTRE_CLEF
- fichier main (recommandé) : https://provya.fr/download/main.txt?key=VOTRE_CLEF
- fichier soft : https://provya.fr/download/soft.txt?key=VOTRE_CLEF
Exemple de résultat obtenu :
Par défaut, pfSense ne propose une mise à jour des alias de type "URL Table" qu'au mieux une fois par jour. Ce qui est trop peu pour pouvoir disposer d'une liste réellement à jour. Nous recommandons de mettre à jour la liste toutes les heures ou toutes les deux heures.
Pour y remédier, nous suggérons d'installer le package "cron" afin d'effectuer des mises à jour plus fréquentes.
Pour cela, nous nous rendons dans le menu System > Package Manager, onglet "Available Packages". Nous faisons une recherche avec le mot-clé "cron" et cliquons sur l'icône d'installation :
Une fois le package "cron" installé, naviguer dans le menu Services > Cron :
Nous repérons la ligne rc.update_urltables et cliquons sur son icône de modification (crayon) :
Nous suggérons d'effectuer la mise à jour toutes les heures ou toutes les deux heures. Il faut modifier le champ "Hour" :
La mise à jour est ici effectuée toutes les deux heures
Si vous êtes utilisateurs d'OPNsense, l'approche est exactement la même. Il faut se rendre dans le menu Pare-Feu > Alias et cliquer sur le discret bouton "+" :
Compléter les champs de la manière suivante :
- Nom : le nom que nous souhaitons donner à notre alias.
- Type : URL Table (IPs)
- Refresh Frequency : la fréquence de rafraîchissement. Nous recommandons de faire un rafraîchissement une fois par heure ou une fois toutes les deux heures.
- Contenu : saisir l'url de la liste que l'on souhaite télécharger (cf. paragraphe suivant).
Pour pouvoir télécharger la liste de votre choix, il faudra disposer d'une clef de licence valide. L'URL à saisir sera de la forme suivante : https://provya.fr/download/VERSION.txt?key=VOTRE_CLEF (en remplaçant VERSION par le fichier choisi et VOTRE_CLEF par la clef de licence que vous aurez reçu par e-mail).
Ce qui donne l'une des URLs suivantes à utiliser :
- fichier strict : https://provya.fr/download/strict.txt?key=VOTRE_CLEF
- fichier main (recommandé) : https://provya.fr/download/main.txt?key=VOTRE_CLEF
- fichier soft : https://provya.fr/download/soft.txt?key=VOTRE_CLEF
Exemple de résultat obtenu :
Avantage d'OPNsense sur pfSense : il est possible de préciser un taux de rafraîchissement aussi bien en jours qu'en heures (contre uniquement en jours pour pfSense). Toute l'étape liée à la gestion du cron décrite pour pfSense n'est donc pas nécessaire sur OPNsense !
La configuration de notre alias est terminée. Il nous reste à configurer nos règles de filtrage pour bloquer le trafic entrant provenant de ces adresses IP, ainsi que le trafic sortant à destination de ces adresses IP.
Créer les règles de filtrage associées
Se rendre dans le menu Firewall > Rules et ajouter sur l'interface WAN (ou d'une façon générale sur les interfaces de vos connexions à Internet) une règle en haut de liste en cliquant sur le bouton .
Configurer la règle avec les paramètres suivants :
- Action : Block
- Protocol : Any
- Source : "Single host or alias" et saisir le nom de l'alias créé à l'étape précédente
- Destination : any
Il faut bien sûr adapter avec le nom de l'alias utilisé à l'étape précédente.
Si vous utilisez une liste Provya, une seule liste doit être utilisée (strict, main ou soft). Il est également inutile d'utiliser une liste SpamHaus en complément car les adresses IP fournies par SpamHaus sont déjà incluses dans les listes Provya.
Si vous utilisez SpamHaus, il faudra créer une règle pour chaque alias (DROP et EDROP). Si vous utilisez la liste DROPv6, il faudra bien penser à choisir IPv6 pour le champ "Address Family" de votre règle de filtrage.
Enfin, nous créons également une règle sur l'interface LAN (ou d'une façon plus générale sur toutes nos interfaces locales qui disposent d'un accès vers Internet) que nous plaçons en haut de liste en cliquant sur le bouton .
Les paramètres à saisir sont les suivants :
- Action : Block
- Protocol : Any
- Source : LAN net
- Destination : "Single host or alias" et saisir le nom de l'alias créé à l'étape précédente
Il faudra bien sûr adapter avec le nom de l'alias utilisé à l'étape précédente.
Si vous utilisez SpamHaus, il faudra encore une fois créer autant de règles que vous avez créé d'alias.
Voilà, le filtrage des adresses IP à risque est en place.
Il s'agit d'un élément de sécurité essentiel et vraiment simple à mettre en œuvre afin d'apporter un niveau de sécurité supplémentaire pour le trafic passant par notre firewall.
Retrouvez nos services et firewall pour pfSense & OPNsense
Aucun commentaire
Flux RSS des commentaires de cet article