Aller au menu du forum Aller au contenu du forum Aller à la recherche dans le forum
Logo Khaganat
Menu principal

Bloquer les Bots

deed

Bonjour, je voudrais qu'on travail à un tuto pour le blocage des Bots !

On peut partir de ce tuto :
https://wiki.blablalinux.be/fr/securisation-npm-fail2ban-geoip2

Alors par contre , c'est Nginx simple à la place de NPM et sans Docker si possible.

Voila, pour commencer, vous en pensez quoi ? C'est trop ou pas assez ?

Merci

Zatalyz

Ha oui, en effet, c'est intéressant.

La logique s'adapte assez facilement avec d'autres techno, docker n'a rien de vital.
Je ne suis pas forcément fan de geoip, mais quand j'avais fait les stats sur mes ip bloquées, on avait clairement quelques zones qui se détachait. Là par exemple, il ne bloque pas les USA, alors qu'ils sont aussi pénibles que la Russie, la Chine et le Brésil. Et par ailleurs tous les serveurs de ces pays ne sont pas à bloquer. Il bloque l'Irlande, sans doute pour AWS, mais du coup sur un serveur qui reçoit des mails des commandes d'Amazon, ça risque d'être un souci. Ok, c'est une façon d'empêcher ses utilisatrices d'utiliser Amazon :D
Idéalement, il faudrait en réalité repérer les plages d'adresses problématiques (généralement toutes d'un même datacenter), ça c'est plus utile à bloquer, et il y a moins de risque de bloquer un utilisateur légitime. Dans le cas du mail, je sais que j'ajoute en liste autorisé les ip des fournisseurs mails (dont amazon, aliexpress, etc, quand quelqu'un me dit que le mail n'arrive pas).

Mon idée (pas mise en place) était d'avoir un domaine "honeypot" : si une ip le visite (au delà du robots.txt qui dira "allez au diable), vu qu'il ne fournit pas de contenu, n'est pas référencé, etc, l'ip est ajouté à une liste de ban. Un petit cron une fois par jour pour analyser toutes ses ip, en sortir la plage quand ça semble utile, puis l'info est relayée aux autres serveuers : "bloquez la plage d'ip X.X.*  pour un bon mois, c'est des fermes de bots !".

Note que le tuto utilise iptables et fail2ban, de mon côté je passe plutôt à nftables et reaction dans ce genre d'usage, la syntaxe est plus simple à gérer (pour reaction) et nftables est puissant.

deed

Context, il est auto-hébergé en vdsl avec des ordis de récup et en Belgique.

je suis pour nftables d'ailleurs il faut que je regarde si Proxmox à changer

Zatalyz

Entre ton message, et le fait qu'un bot (un très con, heureusement pour moi) a fait tomber Hexagora dernièrement, je me replonge dans les nouveautés de Reaction.

Il y a eu pas mal d'avancée ces derniers temps, et entre autre la prise en compte des masques des ip :
https://reaction.ppom.me/reference/pattern/#ipv4mask-and-ipv6mask, ce qui semble au top pour les bots qui changent les ip à chaque tentative. Je suis un peu incertaine des valeurs, mais je me dis : même si on ban des datacenters genre AWS, on s'en fout non ? Pas comme si on avait besoin que les gafams accèdent à nos serveurs.

Actuellement je suis partie sur des patterns de ce genre :

  patterns: {
    ip: {
    // IPv4 et IPv6, et masque des ipv6.
      type: 'ip',
      ipv6mask: 64,
      ignore: [
        '127.0.0.1',
        '::1',
      ],
    },
    ipmask: {
      // Uniquement utilisé pour les filtres les plus aggressifs, risque de trop ban sinon !
      type: 'ip',
      // ipv4 : 24 = tout le dernier bit, soit toute ip du type a.b.c.* (tout est dans le joker).
      ipv4mask: 24,
      // ipv6 : 48 = ban des datacenters. 56 est un peu moins excessif. 64 est une norme de particulier.
      ipv6mask: 56,
      ignore: [
        '127.0.0.1',
        '::1',
      ],
    },
  },

"ip" sera utilisée sur les filtres "softs" (du genre : un humain pourrait faire l'erreur, tant qu'il ne s'acharne pas), et "ipmask" sera utilisée pour les trucs qu'on a repéré comme étant de l'attaque pure et simple. Par exemple, dans mes regex apache qui déclenchent des bombes (ban d'un mois, et bientôt : de datacenter entiers !), j'ai ce genre de ligne :

@'^<ip> ☆ .*☆ .* ☆ 404 ☆ .* ☆ "(GET|POST) .*(wp-login|typo3|drupal|joomla|authDS_Store|cpanel|roundcube).*"', => là c'est forcément de l'attaque, puisque nous n'avons pas wordpress, typo3, drupal, etc. (ne vous focalisez pas sur les étoiles ; je reformate mes logs apaches pour faciliter les regex).

Il y a un risque que cela bannisse des gens qui utilisent un VPN ou un truc du genre dans le voisinage de méchants bots. Ou, comme moi qui suis chez OVH telecom => potentiellement collatérale de vrais serveurs ? Ou encore : si des téléphones sont infectés, ça va ban des antennes relais et donc pas mal de gens. Mais en réalité je ne sais pas à quel point ce risque est réel ; par ailleurs vu que jabberfr applique des politiques différentes, au "pire", suffit de dire sur xmpp "c'est normal que le site soit down ?" (nan, c'est qu'on t'a bannit, muhahahaha). Blague à part, il s'agit de voir le risque réel de dommages collatéraux, que j'estime très bas, mais je peux me planter, et on peut viser des plages plus réduites.

deed

dans mes 10 minutes où j'ai essayé de bannir des ip manuellement , c'est etat unis, chine, russie et allemangne (herzer)
A part le dernier, pour l'instant , ça me derange pas.

FrancoisA

Je te comprends Deed, car à priori les États-Unis, la Chine et la Russie ne sont pas des internautes francophones, donc pas la cible de Khaganat.
Ex Ingénieur système ayant travaillé plus de 20 ans pour une ESN (Entreprise de Service Numérique) nouvel acronyme pour désigner une SSII.
Système d'exploitation : Zorin OS 18.1 Core

Licences Mentions légales Accueil du site Contact Inclusion