Listes IP douteuses

Note 15 juin 2021 : mises à jour :

  • Liste "IP_DOUTEUSES" actualisée plusieurs fois par jour 
    Suite à une erreur de manip la liste n'a pas été mise à jour sur le site du 13 avril au 15 juin 2021 !!! 
    C'est réparé ...
  • Liste "Speciale Web" (origine modsecurity) actualisée une à deux fois par jour
  • Liste "Spéciale Windows" actualisée une fois par jour 
    Une erreur de manip a bloqué la mise à jour sur le site du 13 avril au 15 juin 2021 !!! 
    C'est là aussi réparé et la liste sera mise à jour automatiquement chaque jour.

Note 23 Septembre 2019 : une fantaisie de "modsecurity" (liée au passage en Debian Buster ?) a gêné l'accès à la liste principale, c'est en principe réparé ...

Je tiens à jour pour mes besoins propres deux listes d'adresses IP "douteuses" ou franchement "hostiles", ces adresses sont repérées à partir des logs du système (via OSSEC par exemple), des données de Suricata, de Modsec, de NtopNG (scans lents) ou encore de l'analyse directe des logs de serveurs Web ou mail. 
J'ai utilisé pendant longtemps cette liste première liste "brute" pour remplir un "set" (ipset) permettant d'exécuter un drop pur et simple de tout ce qui provient d'une de ces adresses utilisées par d'infâmes personnages. Cette lisre s'ajoute à celles obtenus des listes déja citées et aux réseau de pays "bannis".
Cette liste, mise à jour souvent (au minimum deux fois par jour), peut être utilisée avec un set "ipset" dans un firewall "iptables" :

# pour ne pas permettre la sortie vers ces adresses 
iptables -t mangle -A PREROUTING  -o "internet" -m set --match-set BLOCK_TMP dst -j MARK --set-mark 99 
iptables -t mangle -A PREROUTING  -o "internet" -m mark --mark 99 -m limit --limit 30/h --limit-burst 10      -j LOG --log-tcp-options --log-prefix 'MSG=Le_message_desiré ' 
iptables -t mangle -A PREROUTING -A PRE_EXT -m mark --mark 99                -j DROP 
# pour ne pas permettre l'entrée depuis ces adresses 
iptables -t mangle -A PREROUTING  -i "internet" -m set --match-set BLOCK_TMP src -j MARK --set-mark 98 
iptables -t mangle -A PREROUTING  -i "internet" -m mark --mark 98 -m limit --limit 30/h --limit-burst 10      -j LOG --log-tcp-options --log-prefix 'MSG=Le_message_desiré ' 
iptables -t mangle -A PREROUTING -A PRE_EXT -m mark --mark 98                -j DROP

ou un set nommé dans un firewall "nftables." :

ip saddr @BLOCK_TMP log prefix " MSG=Le_message_désiré " drop

Pour chaque adresse un commentaire est fourni indiquant le principal problème lié à l'adresse, certains rangs récupérés de l'ancien fichier n'ont pas de commentaire indicatif. 
Certaines adresses sont munies d'un suffixe autre que /32 lorsque plusieurs adresses d'un même sous-réseau ont été repérées, ce sous  réseau est alors réputé "plein de pirates" ... ou faisant partie du réseau d'un FAI un peu trop "permissif". 
A l'occasion j'ai "modernisé" la méthode de gestion de ce "set" (à l'origine simple fichier) pour passer à une table dans une base de données (MariaDB) qui me permet "d'oublier" les adresses n'ayant pas donné signe de vie (dans les tables de NtopNG) depuis une date spécifiée en ne sélectionnant que les #180 jours précédents. Mes tables NtopNG étant actives depuis mi 2016 j'utilise actuellement ( juin 2020) la date de 2020/01/01 comme butée. La gestion est assurée par trois scripts :

  • Un script SQL pur à faire tourner "de temps en temps", au moins une fois par semaine qui permet de tenir à jour la date de dernière "visite" de ces adresses à partir des enregistrements de NtopNg. 
    La sélection est donc moins de 180 jours depuis la dernière visite.
  • Un script Bash + SQL qui permet d'extraire et mettre en forme les données.
  • Un script de chargement du set (ipset actuellement) qui fonctionne par chargement d'un set intermédiaire suivi d'un "swap" avec le set permanent et d'un drop de l'ancien set permanent.

Cette liste (#42000 adresses au 29/02/2024) rafraîchie plusieurs fois par jour est disponible ici.

Note : 
Afin de mieux protéger le réseau de l'extérieur quelques adresses ont été rajoutées "en dur" dans la table :

  • Adresses non routables telles : 10.0.0.0/8, 172.16.0.0/12 ...
  • Plages "réservées pour usage futur" : 240.0.0.0/4 ...


Autre liste "spéciale Windows" (#5600 adresses au 15/02/2022) disponible ici et rafraîchie au moins une fois par jour. 
Cette liste de #5600 adresses comporte toutes les adresses ayant tenté un accès sur un des ports suivants : 
22,135,137,138,139,445,1433,3389 au cours des 60 jours précédents, je viens d'y ajouter le port 23 (telnet) à cette liste qui cible aujourd'hui les objets connectés. 
Note : certaines de ces adresses peuvent déjà figurer dans les "grandes" listes d'IP à éviter.

Nouvelle liste "spéciale web" établie à partir des logs de Modsec, elle aussi rafraichie plusieurs fois par jour. 
Cette liste ne comporte, pour le moment, que peu d'adresses (#1000 au 29/02/2024) car mon installation de Modsec est relativement récente et que Suricata stoppe pas mal de cochonneries sur le port 80, mais elle devrait s'enrichir rapidement, surtout pour les adresses utilisant le port 443. Elle est constituée d'adresses ayant, au moins une fois, tenté un accès douteux (/wp-login.php, xmlrpc.php, /phpmyadmin ...) ,ou plusieurs fois un accès par l'adresse IP seulement (Scanner bète et méchant). Je n'aime pas non plus les "visiteurs" qui n'ont pas de header, par souci de discrétion probablement. Cela concerne surtout des "attaques"  en HTTPS car la plupart de celles sur le port 80 sont bloquées par Suricata). Par ailleurs les attaques sur le port 80 ont tendance à diminuer car ce site ne réponds pllus sur le port 80.  
Le format de ce fichier est particulier : 
211.20.101.36    #1# 2018/12/26 12:55:36  Bad Bot (no header)                      
211.36.156.120   #2# 2018/09/30 19:16:17  Pirate, possible ?  / Host header is a numeric IP address

  1. Adresse IP
  2. #N# si N = 1 c'est une adresse ne présentant pas de danger "a priori" (script kiddy ?), mais cela peut aussi être de la reconnaissance. Ce type d'adresse n'apparaît que si au moins deux accès ont été constatés dans la période. Si N = 2 c'est une adresse ayant tenté des accès frauduleux du type /admin/login.php ou /phpmyadmin/setup.php .... /wp-login ... un seul accès suffit alors pour passer dans la liste.
  3. Commentaire décrivant le type d'accès détecté.

Les adresses sont éliminées au bout de 120 jours, si leurs utilisateurs n'ont pas récidivé ! Une seule récidive entraîne la remise a zéro de la période de 120 jours?
Le site AbuseIPDB à connaître pour vérifier (ou rapporter) la "malfaisance" d'une adresse IP :

AbuseIPDB Contributor Badge