Catégories
Start-up et applications

Comment les API peuvent bloquer les visiteurs Web suspects en fonction de l'adresse IP

Nous ne voulons pas autoriser les inscriptions à partir de VPN ou de proxys. Les visiteurs peuvent utiliser un VPN pour masquer leur emplacement réel et contourner les restrictions d'emplacement. Un visiteur utilisant TOR, qui cache son emplacement et son identité réels, pourrait essayer d'effectuer une activité malveillante sur votre site. Alors, comment pouvons-nous bloquer ces utilisateurs?

La plupart des services de recherche IP ont une sorte de base de données sur les menaces. Ces services nous permettent de vérifier si une IP est anonyme (en utilisant un TOR, un VPN ou un proxy), ou une menace, comme un spammeur ou un pirate informatique connu. Nous pouvons utiliser l'un de ces services pour détecter les utilisateurs malveillants et les empêcher de s'inscrire.

Chez ipdata, nous avons une base de données de 600 millions d'adresses IP malveillantes qui est mise à jour toutes les 15 minutes. Maxmind fournit une base de données IP anonyme GeoIP2 qui peut détecter les adresses IP anonymes, mais il ne détecte pas actuellement les adresses IP malveillantes. AWS WAF possède des listes de réputation IP qui peuvent être utilisées pour bloquer les utilisateurs anonymes et les adresses IP qui ont été signalés par les renseignements sur les menaces internes d'Amazon.

Détecter les menaces avec ipdata

L'API de menace ipdata peut être utilisée en effectuant une simple requête GET avec l'adresse IP de l'utilisateur, telle que https://api.ipdata.co/1.43.247.217/threat?api-key=test. Il répond avec un objet contenant toutes les informations dont nous avons besoin pour prendre une décision concernant l'utilisateur. Est-ce un agresseur ou un agresseur connu? Ils sont une menace! Utilisent-ils TOR ou un proxy? Ils sont anonymes.

{
  "is_tor": true,
  "is_proxy": false,
  "is_anonymous": true,
  "is_known_attacker": false,
  "is_known_abuser": false,
  "is_threat": false,
  "is_bogon": false
}

Il y a un autre champ là aussi – is_bogon. Cela indique que l'adresse IP n'a pas été allouée ou déléguée par l'IANA ou tout RIR, et provient presque certainement d'un attaquant. Les adresses IP Bogon incluent également des adresses privées réservées, telles que 192.168.0.0/16.

Bloquer les inscriptions

Maintenant que nous savons comment détecter les VPN, les proxys et les menaces, empêchons ces IP de s'inscrire à l'aide d'une petite application Node.js qui implique Express.js. et les frameworks Axios (tous deux faciles à installer via NPM).

Voici un formulaire d'inscription simplifié en HTML, qui doit être enregistré dans votre installation Web (ou dans un autre répertoire source HTML) en tant que signup.html.

Maintenant, nous pouvons créer notre application Node pour servir le formulaire d'inscription et gérer les nouvelles inscriptions.

const express = require("express");
const app = express();
const axios = require("axios");

// Get an ipdata API Key from here: https://ipdata.co/sign-up.html
const IPDATA_API_KEY = "test";
const getIpData = async (ip) => {
  const response = await axios.get(
    `https://api.ipdata.co/${ip}/threat?api-key=${IPDATA_API_KEY}`
  );
  return response.data;
};

// Serve the signup page
app.get("/signup", (req, res) =>
  res.sendFile("./signup.html", { root: __dirname })
);

// Handle a signup request
app.post("/signup", async (req, res) => {
  const ip = req.connection.remoteAddress;
  const ipdata = await getIpData(ip);
  const { is_threat, is_anonymous } = ipdata;
  if (is_threat) {
    res.status(403).send("Blocked IP");
    return;
  }
  if (is_anonymous) {
    res.status(403).send("VPNs are not allowed");
    return;
  }

  // Success! create the user...

  res.status(200).send("Welcome!");
});

app.listen(8000);

Lorsqu'une demande POST est reçue par notre serveur, nous appelons l'API ipdata pour obtenir des métadonnées supplémentaires pour l'IP de l'utilisateur. En utilisant cela, nous bloquons toutes les adresses IP qui sont considérées comme une menace, ainsi que les adresses IP anonymes.

Lorsque vous testez tout cela ensemble, cela fonctionne comme ceci:

Comment les API peuvent bloquer les visiteurs Web suspects en fonction de l'adresse IP - tout tester ensemble

En avez-vous vraiment besoin?

Le blocage du trafic anonyme vers votre site risque de surprendre certains utilisateurs authentiques. Il existe de nombreuses raisons valables d'utiliser un VPN – certains utilisateurs peuvent avoir des problèmes de confidentialité, ou ils peuvent avoir un accès Internet limité en raison de leur gouvernement, de leur FAI ou de leur travail. Le blocage du trafic anonyme devrait être un dernier recours et n'est généralement nécessaire que s'il existe des restrictions légales, telles que les droits de diffusion multimédia ou la publicité. Pour ces raisons, le blocage anonyme sera souvent combiné avec le blocage des utilisateurs de certains pays.

Le blocage des menaces, cependant, est un moyen clair et facile de réduire les activités frauduleuses sur votre site Web. Ne vous contentez pas d'empêcher les adresses IP malveillantes de s'inscrire – empêchez-les d'accéder à votre site tous ensemble. Vos vrais utilisateurs ne devraient pas le remarquer du tout, mais la sécurité de leurs comptes sera renforcée.

Conclusions

Empêcher les utilisateurs de s'inscrire à l'aide d'un VPN ou d'un proxy est facile et il existe de nombreuses options. Si vous souhaitez arrêter tout le trafic provenant de n'importe quel VPN, envisagez de bloquer les demandes à l'aide d'un pare-feu, comme AWS WAF. Bien que le blocage des menaces soit un gain rapide pour votre sécurité, le blocage du trafic anonyme peut avoir un impact sur les utilisateurs légitimes – entraînant potentiellement des commandes perdues ou des utilisateurs frustrés – alors utilisez-le avec prudence et uniquement lorsque cela est nécessaire.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *