Commit bb5d4bd0 authored by Daniel Le Berre's avatar Daniel Le Berre
Browse files

ajout iocaine et fail2ban

parent d4c1c59e
Loading
Loading
Loading
Loading
Loading
+62 −0
Original line number Diff line number Diff line
@@ -9,3 +9,65 @@ Il est possible de définir des limites sur le nombre de connexions authentifié

Ces limites sont désactivées par défaut. Il est conseillé de les activer.
{{% /alert %}}

### Config iocaine pour gitlab

Contribué par Mathrice.

[Tutoriel complet](https://codimd.math.cnrs.fr/s/vKc8OOhkG).

### Config fail2ban

Contribuée par Remy Dernat

Fichier `/etc/fail2ban/filter.d/gitlab-llm-bots.conf`:

```
[Definition]
failregex = <HOST> -.* "GET .*" 403.* ".*(AmazonBuyForMe|Amzn-SearchBot|Amzn-User|Anomura|ApifyBot|ApifyWebsiteContentCrawler|Aranet-SearchBot|AzureAI-SearchBot|Bravebot|BuddyBot|Channel3Bot|ChatGLM-Spider|Cloudflare-AutoRAG|Crawl4AI|DeepSeekBot|ExaBot|Google-Agent|Google-Firebase|Google-NotebookLM|IbouBot|KlaviyoAIBot|KunatoCrawler|LAIONDownloader|LCC|LingueeBot|LinkupBot|Manus-User|NotebookLM|Poggio-Citations|ShapBot|Spider|TavilyBot|TerraCotta|TwinAgent|WRTNBot|ZanistaBot|amazon-kendra|atlassian-bot|iAskBot|imageSpider|laion-huggingface-processor|meta-webindexer|webzio-extended|Grok|DeepSeekBot|OAI-AdsBot|Microsoft-Copilot|Googlebot-Genie|Databricks-Agent|GPTBot|ChatGPT-User|AppleBot-Extended|ClaudeBot|Claude-SearchBot|PerplexityBot|Perplexity-User|Google-Extended|OAI-SearchBot|AmazonBot|Meta-ExternalAgent|Bytespider|cohere-ai|DuckAssistBot|FacebookBot|Gemini-User|MistralAI-User|YouBot|CCBot).*"
            
            # Alternative si le code statut n'est pas toujours présent ou si vous voulez juste capturer l'user-agent quel que soit le code
            # Note: On utilise <HOST> au début pour capturer l'IP, et on cherche la chaîne dans le User-Agent (généralement après le code HTTP ou à la fin)
            
            # Regex optimisée pour le format standard Nginx (Host - UserAgent [Date] "Request" Status "Referrer")
            ^<HOST> .+ ".*" .* ".*".*(AmazonBuyForMe|Amzn-SearchBot|Amzn-User|Anomura|ApifyBot|ApifyWebsiteContentCrawler|Aranet-SearchBot|AzureAI-SearchBot|Bravebot|BuddyBot|Channel3Bot|ChatGLM-Spider|Cloudflare-AutoRAG|Crawl4AI|DeepSeekBot|ExaBot|Google-Agent|Google-Firebase|Google-NotebookLM|IbouBot|KlaviyoAIBot|KunatoCrawler|LAIONDownloader|LCC|LingueeBot|LinkupBot|Manus-User|NotebookLM|Poggio-Citations|ShapBot|Spider|TavilyBot|TerraCotta|TwinAgent|WRTNBot|ZanistaBot|amazon-kendra|atlassian-bot|iAskBot|imageSpider|laion-huggingface-processor|meta-webindexer|webzio-extended|Grok|DeepSeekBot|OAI-AdsBot|Microsoft-Copilot|Googlebot-Genie|Databricks-Agent|GPTBot|ChatGPT-User|AppleBot-Extended|ClaudeBot|Claude-SearchBot|PerplexityBot|Perplexity-User|Google-Extended|OAI-SearchBot|AmazonBot|Meta-ExternalAgent|Bytespider|cohere-ai|DuckAssistBot|FacebookBot|Gemini-User|MistralAI-User|YouBot|CCBot).*$

ignoreregex =

```

Dans `paths-common.conf`  rajouter :

```
gitlab_nginx_error_log = /var/log/gitlab/nginx/*error.log
gitlab_nginx_access_log = /var/log/gitlab/nginx/*access.log
```

Fichier `/etc/fail2ban/jail.d/gitlab-llm-bots.conf` :

```
[gitlab-llm-bots]
enabled = true
filter = gitlab-llm-bots
#logpath = /var/log/gitlab/nginx/gitlab_access.log
logpath = %(gitlab_nginx_access_log)s
maxretry = 1
findtime = 600
bantime = 86400
```

On teste avec

```
fail2ban-regex /var/log/gitlab/nginx/gitlab_access.log gitlab-llm-bots
```

puis

```
systemctl restart fail2ban.service

fail2ban-client status gitlab-llm-bots

tail -f /var/log/fail2ban.log | grep gitlab-llm-bots
```
 No newline at end of file