> ## Documentation Index
> Fetch the complete documentation index at: https://infra-docs.kaeyros.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Détection d'intrusion avec fail2ban et auditd

> Configuration fail2ban (jails sshd, nginx, traefik) et auditd sur les serveurs Kaeyros. Les événements auditd sont expédiés vers Wazuh via l'agent local pour corrélation centralisée.

La plateforme Kaeyros combine fail2ban pour le bannissement automatique des adresses IP malveillantes et auditd pour le suivi détaillé des activités système. Les deux outils alimentent le SIEM Wazuh, qui centralise la corrélation des événements de sécurité.

## fail2ban : bannissement automatique

fail2ban surveille les logs de plusieurs services et bannit les adresses IP dépassant le seuil de tentatives échouées.

### Jails actifs

| Jail | Service surveillé | Log analysé | Action |
| - | - | - | - |
| `sshd` | Serveur SSH | `/var/log/auth.log` | Bannissement après 3 échecs |
| `nginx` | Reverse proxy | `/var/log/nginx/access.log` | Bannissement des scans HTTP |
| `traefik` | Ingress controller | `/var/log/traefik/access.log` | Bannissement des requêtes malveillantes |

### Paramètres globaux

```ini jail.local theme={null}
# /etc/fail2ban/jail.local
[DEFAULT]
bantime = 24h
findtime = 10min
maxretry = 3
backend = systemd
banaction = ufw
banaction_allports = ufw

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 24h

[nginx]
enabled = true
port = 80,443
filter = nginx-botsearch
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 1h

[traefik]
enabled = true
port = 80,443
filter = traefik-auth
logpath = /var/log/traefik/access.log
maxretry = 5
bantime = 1h
```

> [!NOTE]
>
> Le bantime de 24 heures pour SSH est volontairement long pour décourager les attaques par force brute. Les jails nginx et traefik utilisent un bantime plus court (1 heure) pour limiter l'impact sur les utilisateurs légitimes qui auraient déclenché un faux positif.

### Gestion des bannissements

```bash theme={null}
# Voir le statut de tous les jails
sudo fail2ban-client status

# Voir les IPs bannies par un jail
sudo fail2ban-client status sshd

# Débannir une IP manuellement
sudo fail2ban-client set sshd unbanip 192.0.2.42

# Redémarrer fail2ban après modification
sudo systemctl restart fail2ban
```

## auditd : audit système détaillé

auditd enregistre les événements système critiques : modifications de fichiers sensibles, exécutions de binaires, connexions réseau et changements d'identité.

### Règles de surveillance

```bash audit.rules theme={null}
# /etc/audit/rules.d/audit.rules

# Surveillance des modifications sur /etc
-w /etc/ -p wa -k etc_changes
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers

# Surveillance des binaires système
-w /usr/bin/ -p x -k binaries
-w /usr/sbin/ -p x -k binaries
-w /usr/local/bin/ -p x -k binaries

# Surveillance des connexions réseau
-a always,exit -F arch=b64 -S connect -k network_connect
-a always,exit -F arch=b32 -S connect -k network_connect

# Surveillance des changements d'identité
-a always,exit -F arch=b64 -S setuid -S setgid -S setreuid -S setregid -k privilege_escalation

# Surveillance des montages
-a always,exit -F arch=b64 -S mount -S umount2 -k mounts
```

### Expédition vers Wazuh

L'agent Wazuh local lit les logs d'auditd en temps réel via le fichier `/var/log/audit/audit.log`. La configuration de l'agent Wazuh inclut :

```xml ossec.conf theme={null}
<localfile>
  <log_format>audit</log_format>
  <location>/var/log/audit/audit.log</location>
</localfile>
```

Les événements auditd sont ainsi normalisés et corrélationnés dans le tableau de bord Wazuh avec les alertes fail2ban, psad et les logs applicatifs.

### Requêtage des logs auditd

```bash theme={null}
# Rechercher les modifications sur /etc
sudo ausearch -k etc_changes -ts today

# Rechercher les exécutions suspectes
sudo ausearch -k binaries -ts today | aureport -x --summary

# Générer un rapport hebdomadaire
sudo aureport --login --summary -i

# Lister les règles actives
sudo auditctl -l
```

> [!WARNING]
>
> Les règles auditd consomment des ressources CPU et I/O. Ne modifiez pas les règles de production sans les tester sur un serveur de staging. Contactez `devops@kaeyros-analytics.com` avant d'ajouter des règles de surveillance à large spectre.

## Corrélation dans Wazuh

Le tableau de bord Wazuh agrège les événements des trois sources :

> **fail2ban**
>
> Alertes de bannissement IP avec géolocalisation et historique des tentatives

> **auditd**
>
> Traces d'exécution et modifications système avec horodatage précis

> **psad**
>
> Scans de ports détectés et tendances d'attaque

> [!TIP]
>
> Lors de l'astreinte quotidienne à 5h30, vérifiez dans Wazuh le nombre d'alertes fail2ban et auditd générées au cours des dernières 24 heures. Une augmentation brutale des événements `privilege_escalation` ou `etc_changes` mérite une investigation immédiate.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.