> For the complete documentation index, see [llms.txt](https://academy.cegedim.cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.cegedim.cloud/francais/securite/bot-defense/bot-defense-architecture.md).

# Bot Defense - Architecture

## Description <a href="#botdefensearchitecture-description" id="botdefensearchitecture-description"></a>

Bot Defense est un produit en libre service disponible sur votre instance pour protéger votre site web contre les attaques DDoS et les attaques Bot.

## Caractéristiques <a href="#botdefensearchitecture-caracteristiques" id="botdefensearchitecture-caracteristiques"></a>

Cette section énumère les actions disponibles pour le client, ainsi que la manière de les demander ou de les exécuter :

<table data-header-hidden><thead><tr><th width="180"></th><th></th></tr></thead><tbody><tr><td><strong>Libre service</strong></td><td>Le client peut effectuer une action de manière autonome.</td></tr><tr><td><strong>Sur demande</strong></td><td>Le client peut demander à l'équipe de support de cegedim.cloud de prendre les mesures nécessaires.</td></tr></tbody></table>

<table data-full-width="false"><thead><tr><th width="291">Caractéristiques</th><th width="137.5" data-type="checkbox">Libre service</th><th width="135" data-type="checkbox">Sur demande</th><th>Commentaires</th></tr></thead><tbody><tr><td>Activer/Désactiver</td><td>true</td><td>false</td><td>Le client peut activer ou désactiver le Bot Defense.</td></tr><tr><td>Ajouter / Supprimer une adresse IP sur la whitelist</td><td>true</td><td>false</td><td>Le client peut ajouter ou supprimer une adresse IP dans la whitelist.</td></tr><tr><td>Choisir son type de profil</td><td>true</td><td>false</td><td>Le client opte pour un profil strict ou standard.</td></tr><tr><td>Choisir son mode</td><td>true</td><td>false</td><td>Le client peut activer son Bot Defense en mode transparent ou boquant.</td></tr><tr><td>Modifier la configuration</td><td>false</td><td>true</td><td>Sur demande via un ticket.</td></tr></tbody></table>

## Protection contre le DDoS <a href="#botdefensearchitecture-protectioncontreledos" id="botdefensearchitecture-protectioncontreledos"></a>

La protection DDoS est basée sur un calcul de taux de transaction côté client **(basé sur les TPS**) ou sur la latence côté serveur **("Stress based detection"**).

### Détection basée sur les TPS

La détection basée sur le **"TPS" ( transactions par seconde)** se situe côté "client". Suivant le seuil de requêtes par seconde, le DDoS protection va venir bloquer les tentatives DDoS.

```mermaid
graph LR
    client["🤖 Client"]
    botdef["🛡️ Bot Defense"]
    server[("🗄️ Serveur")]

    client -->|Bonjour serveur, puis-je obtenir la page web ?| botdef
    botdef <-->|trafic autorisé| server
    botdef -.->|Non, vous envoyez trop de requêtes.<br/>Répondez au Captcha / Soyez limité en débit / bloqué| client

    style client fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style botdef fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style server fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
```

### **Détection basée sur le stress**

Le "**Stress-based** **detection**" permet de détecter le ralentissement du serveur. Cela offre une couche de protection plus précise grâce aux seuils de latence et de requêtes par seconde.

```mermaid
graph LR
    subgraph scenario1["Scénario 1 — Autorisé"]
        direction LR
        c1["👤 Client"]
        b1["🛡️ Bot Defense"]
        s1[("🗄️ Serveur")]
        msg1["Laissez-moi vérifier.<br/>Le serveur peut accepter des requêtes<br/>entrantes supplémentaires — vous êtes autorisé."]
        c1 -->|requête| b1
        b1 <--> s1
        b1 -.-> msg1
        msg1 -.-> c1
    end

    subgraph scenario2["Scénario 2 — Rejeté"]
        direction LR
        c2["🤖 Client"]
        b2["🛡️ Bot Defense"]
        msg2["Non, la latence de mon backend est désormais trop élevée<br/>et vous envoyez trop de requêtes.<br/>Vous devrez :<br/>Répondre au CAPTCHA / Être limité en débit"]
        c2 -->|requête| b2
        b2 -.-> msg2
        msg2 -.-> c2
    end

    style scenario1 fill:#eef2fb,stroke:#000,stroke-width:2px,color:#000
    style scenario2 fill:#eef2fb,stroke:#000,stroke-width:2px,color:#000
    style c1 fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style b1 fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style s1 fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style c2 fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style b2 fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style msg1 fill:#fde2e2,stroke:#c0392b,stroke-width:2px,color:#000
    style msg2 fill:#fde2e2,stroke:#c0392b,stroke-width:2px,color:#000
```

Le produit offre deux types de protection contre les attaques DDoS ou bot :

* Le **profil standard**, comprenant une phase d'apprentissage. Les seuils de détection sont calculés automatiquement.

<table><thead><tr><th width="280">Seuil TPS</th><th>Mitigation</th></tr></thead><tbody><tr><td>Seuil calculé automatiquement</td><td>La première mesure d'atténuation est un captcha. Si le captcha n'est pas résolu, toutes les tentatives seront bloquées.</td></tr></tbody></table>

* Le **profil strict**, ne nécessitant pas de phase d'apprentissage, avec des seuils plus restrictifs, bloquera un grand nombre de tentatives. Il limitera également un grand nombre de tentatives en provenance de pays sensibles.

<table><thead><tr><th width="241">Seuil TPS</th><th>Mitigation</th></tr></thead><tbody><tr><td>200 TPS atteints</td><td>Blocage des demandes avec limitation du débit</td></tr></tbody></table>

## Bot Defense <a href="#botdefensearchitecture-botdefense" id="botdefensearchitecture-botdefense"></a>

Les bots peuvent être classés de plusieurs façons : les bots simples ou les bots malveillants.

### Simple bot

```mermaid
graph LR
    bot["🤖 Bot simple"]
    botdef["🛡️ Bot Defense"]
    server[("🗄️ Serveur")]
    note["Un bot simple peut être n'importe quel outil en ligne de commande<br/>tel que : curl, wget, ab"]
    msg["Bot Defense : j'ai votre signature,<br/>vous êtes bloqué"]

    bot -->|requête| botdef
    botdef <--> server
    botdef -.-> msg
    msg -.-> bot

    note -.- bot

    style bot fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style botdef fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style server fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style note fill:#e8e8e8,stroke:#000,stroke-width:1px,color:#000
    style msg fill:#fde2e2,stroke:#c0392b,stroke-width:2px,color:#000
```

### Good bot

```mermaid
graph LR
    bot["🤖 Google Bot"]
    botdef["🛡️ Bot Defense"]
    dns[("🗄️ Serveur DNS")]
    server[("🗄️ Serveur")]
    msg["Bot Defense :<br/>2. Je fais une résolution DNS inverse<br/>4. C'est bon, veuillez continuer"]

    bot -->|1. requête| botdef
    botdef <-->|3. résolution DNS inverse| dns
    botdef -->|4. continuer| server
    botdef -.- msg

    style bot fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style botdef fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style dns fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style server fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style msg fill:#fde2e2,stroke:#c0392b,stroke-width:2px,color:#000
```

### Impersonating bot

```mermaid
graph LR
    bot["🤖 Golloge (faux bot)"]
    botdef["🛡️ Bot Defense"]
    dns[("🗄️ Serveur DNS")]
    server[("🗄️ Serveur")]
    msg["Bot Defense : je fais une résolution DNS inverse. Qui est-ce ?<br/>DNS : personne<br/>Bot Defense : vous n'êtes pas Google bot, vous êtes bloqué"]

    bot -->|requête| botdef
    botdef <-->|résolution DNS inverse| dns
    botdef -.->|bloqué| bot
    botdef -.- server
    botdef -.- msg

    style bot fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style botdef fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style dns fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style server fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style msg fill:#fde2e2,stroke:#c0392b,stroke-width:2px,color:#000
```

### Acting as a full browser bot

```mermaid
graph LR
    bot["🤖 Bot qui<br/>simule un navigateur"]
    botdef["🛡️ Bot Defense"]
    dns[("🗄️ Serveur DNS")]
    server[("🗄️ Serveur")]
    msg["Bot Defense : quelles sont vos capacités ? Si vous ne répondez pas<br/>correctement, vous devrez répondre à un CAPTCHA<br/>Bot malveillant : Capacité ? CAPTCHA ?<br/>Bot Defense : vous n'êtes pas humain, vous êtes bloqué"]

    bot -->|requête| botdef
    botdef <-->|résolution DNS inverse| dns
    botdef -.->|bloqué| bot
    botdef -.- server
    botdef -.- msg

    style bot fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style botdef fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style dns fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style server fill:#1abc9c,stroke:#0e6655,stroke-width:2px,color:#000
    style msg fill:#fde2e2,stroke:#c0392b,stroke-width:2px,color:#000
```

Bot Defense offre deux types de protection contre les attaques DDoS ou bot :

* Le **profil standard,** basé sur un profil générique adapté à la majorité des sites web, avec le moins d'impact possible sur le site concerné. Les seuils de détection des attaques DDoS, par exemple, sont calculés automatiquement. Déconseillé si des attaques DDoS sont en cours.
* Le **profil strict,** basé sur un profil plus restrictif, qui peut être déployé rapidement lors d'une attaque. Ses paramètres plus fins sont conçus pour bloquer un plus grand nombre de requêtes. La protection contre les attaques DoS intègre un mécanisme de géolocalisation qui, en cas d'attaque, bloque les requêtes malveillantes en fonction du pays d'origine. Ce profil peut entraîner l'apparition de faux positifs et nécessite donc une surveillance accrue lorsqu'il est mis en œuvre.

Par ailleurs, en fonction du type de bot lors d'une attaque DDoS, il atténuera :

| Type de Bot        | Mitigation |
| ------------------ | ---------- |
| Bot non fiable     | Bloqué     |
| Navigateur suspect | Bloqué     |
| Bot malveillant    | Bloqué     |

## Sécurité <a href="#botdefensearchitecture-securite" id="botdefensearchitecture-securite"></a>

Les logs sont sécurisés dans Splunk et gérés dans ITCare.

### Gestion des logs <a href="#botdefensearchitecture-gestiondeslogs" id="botdefensearchitecture-gestiondeslogs"></a>

Dans l'onglet "Bot Defense" sur ITCare, il existe un tableau de bord spécifique pour avoir une visibilité sur votre trafic.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://academy.cegedim.cloud/francais/securite/bot-defense/bot-defense-architecture.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
