> ## 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.

# ClamAV, RKHunter et Lynis : antivirus et audits

> Scan antivirus ClamAV quotidien, détection de rootkits RKHunter hebdomadaire et audit de conformité Lynis mensuel. Les résultats sont agrégés dans Wazuh. Gestion des faux positifs.

La plateforme Kaeyros exécute trois outils de sécurité complémentaires sur chaque serveur dédié : ClamAV pour la détection de malwares, RKHunter pour la recherche de rootkits et Lynis pour l'audit de conformité. Les rapports sont centralisés dans Wazuh pour suivi et traçabilité.

## ClamAV : scan antivirus quotidien

ClamAV analyse l'intégralité du système de fichiers tous les jours à 3h du matin via une tâche cron orchestrée par Ansible.

### Configuration

```bash clamav-scan.sh theme={null}
#!/bin/bash
# /usr/local/bin/clamav-daily.sh

LOG_FILE="/var/log/clamav/daily-$(date +%Y%m%d).log"
ALERT_FILE="/var/log/clamav/alerts.log"

# Mise à jour des signatures
freshclam --quiet

# Scan complet (exclusion des montages réseau et des logs)
clamscan -r --infected \
  --exclude-dir="^/proc" \
  --exclude-dir="^/sys" \
  --exclude-dir="^/dev" \
  --exclude-dir="^/run" \
  --exclude-dir="^/var/log" \
  --exclude-dir="^/mnt" \
  --exclude-dir="^/media" \
  --exclude-dir="^/tmp" \
  --log="$LOG_FILE" \
  /

# Si infection détectée, alerter Wazuh
if grep -q "Infected files: [1-9]" "$LOG_FILE"; then
  echo "[ALERT] ClamAV a détecté des fichiers infectés sur $(hostname)" >> "$ALERT_FILE"
  logger -t wazuh-clamav "ClamAV infection detected on $(hostname)"
fi
```

```cron crontab theme={null}
# /etc/cron.d/clamav-scan
0 3 * * * root /usr/local/bin/clamav-daily.sh
```

### Faux positifs fréquents

ClamAV génère régulièrement des faux positifs, notamment sur :

* Fichiers de cache applicatifs (Node.js, Python)
* Binaires compilés dans les conteneurs Docker
* Fichiers de test du pipeline CI/CD
* Archives ZIP contenant des signatures de virus (tests EICAR)

> [!WARNING]
>
> Ne supprimez jamais un fichier signalé sans investigation. Ajoutez-le à la whitelist ClamAV (`/etc/clamav/whitelist.ign2`) uniquement après confirmation par un second membre de l'équipe. Documentez chaque whitelisting dans le ticket Jira de suivi sécurité.

## RKHunter : scan de rootkits hebdomadaire

RKHunter vérifie la présence de rootkits connus, de backdoors et de modifications suspectes des binaires système.

### Configuration et exécution

```bash rkhunter.sh theme={null}
#!/bin/bash
# /usr/local/bin/rkhunter-weekly.sh

LOG_FILE="/var/log/rkhunter/rkhunter-$(date +%Y%m%d).log"

# Mise à jour des signatures
rkhunter --update --quiet

# Scan avec rapport
rkhunter --check --sk --rwo --logfile "$LOG_FILE"

# Expédition vers Wazuh
if grep -q "Warning" "$LOG_FILE"; then
  logger -t wazuh-rkhunter "RKHunter warnings detected on $(hostname)"
fi
```

```cron crontab theme={null}
# /etc/cron.d/rkhunter-scan
0 4 * * 0 root /usr/local/bin/rkhunter-weekly.sh
```

### Faux positifs courants

RKHunter signale fréquemment :

* Binaires modifiés par les mises à jour de sécurité automatiques (unattended-upgrades)
* Fichiers de configuration personnalisés (`sshd_config` modifié par Ansible)
* Modules du noyau chargés par les outils de monitoring (Datadog, Wazuh agent)
* Scripts d'initialisation modifiés par les rôles Ansible

> [!TIP]
>
> Après le provisionnement initial d'un serveur, exécutez `rkhunter --propupd` pour établir la baseline de référence. Sans cette étape, tous les binaires existants seront signalés comme suspects au premier scan.

## Lynis : audit de conformité mensuel

Lynis effectue un audit approfondi de la configuration système et produit un score de conformité avec des recommandations.

### Exécution et rapport

```bash lynis.sh theme={null}
#!/bin/bash
# /usr/local/bin/lynis-monthly.sh

REPORT_DIR="/var/log/lynis"
mkdir -p "$REPORT_DIR"

lynis audit system \
  --quiet \
  --no-colors \
  --report-file "$REPORT_DIR/lynis-$(date +%Y%m).report" \
  --log-file "$REPORT_DIR/lynis-$(date +%Y%m).log"

# Extraction du score pour Wazuh
SCORE=$(grep "hardening_index" "$REPORT_DIR/lynis-$(date +%Y%m).report" | cut -d= -f2)
logger -t wazuh-lynis "Lynis hardening index for $(hostname): $SCORE"
```

```cron crontab theme={null}
# /etc/cron.d/lynis-audit
0 2 1 * * root /usr/local/bin/lynis-monthly.sh
```

### Interprétation du score

| Score | Interprétation | Action |
| - | - | - |
| 80-100 | Excellent | Maintenir la configuration |
| 60-79 | Correct | Appliquer les recommandations prioritaires |
| 40-59 | Insuffisant | Planifier une session de durcissement |
| 0-39 | Critique | Investigation immédiate requise |

## Agrégation dans Wazuh

Les trois outils alimentent le SIEM Wazuh via le mécanisme de logging système :

> **ClamAV**
>
> Logs dans `/var/log/clamav/`. Alertes remontées via `logger` avec le tag `wazuh-clamav`.

> **RKHunter**
>
> Logs dans `/var/log/rkhunter/`. Warnings déclenchent une alerte Wazuh de niveau 7.

> **Lynis**
>
> Rapports mensuels dans `/var/log/lynis/`. Le score de durcissement est tracké dans le tableau de bord Grafana.

### Commandes de vérification rapide

```bash theme={null}
# Vérifier le dernier scan ClamAV
sudo tail -20 /var/log/clamav/daily-$(date +%Y%m%d).log

# Vérifier le dernier scan RKHunter
sudo grep -E "Warning|OK" /var/log/rkhunter/rkhunter-$(date +%Y%m%d).log | tail -20

# Voir le score Lynis du mois en cours
sudo grep "hardening_index" /var/log/lynis/lynis-$(date +%Y%m).report

# Forcer un scan ClamAV immédiat
sudo freshclam && sudo clamscan -r --infected /
```

> [!NOTE]
>
> Lors de l'astreinte quotidienne à 5h30, consultez le tableau de bord Wazuh pour vérifier que les scans de la nuit se sont bien déroulés. Un scan manquant ou un score Lynis en baisse doit être signalé dans le canal d'alerte sécurité.

## Contact et escalade

Pour toute question sur la configuration ou l'interprétation des résultats, contactez l'équipe DevOps à `devops@kaeyros-analytics.com`. En cas de détection confirmée d'un malware ou d'un rootkit, suivez immédiatement la procédure d'incident de sécurité et isolez le serveur concerné du réseau.


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