85 lines
2 KiB
Markdown
85 lines
2 KiB
Markdown
|
|
# ERPLibre – Secure Reference Deployment
|
|||
|
|
|
|||
|
|
## Sécurité numérique responsable
|
|||
|
|
|
|||
|
|
Ce dépôt constitue un **modèle de référence** applicable à toute instance ERPLibre (Odoo) **conteneurisée**, exposée publiquement via **Nginx sur l’hôte**, avec **PostgreSQL conteneurisé**.
|
|||
|
|
|
|||
|
|
Exemple d’implémentation (illustratif) : **https://www.rencontres-linux.quebec**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Architecture cible
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Internet
|
|||
|
|
↓
|
|||
|
|
nftables (policy DROP + mitigation ASN TTL légère)
|
|||
|
|
↓
|
|||
|
|
Nginx (hôte)
|
|||
|
|
↓
|
|||
|
|
Réseau Docker dédié (erplibre_net)
|
|||
|
|
↓
|
|||
|
|
Odoo (conteneur, pas de port publié)
|
|||
|
|
↓
|
|||
|
|
PostgreSQL (conteneur, pas de port publié)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Principes
|
|||
|
|
|
|||
|
|
- **Surface minimale** : seuls ports **80/443** exposés.
|
|||
|
|
- **Segmentation Docker** : réseau dédié par stack.
|
|||
|
|
- **Pare-feu moderne** : nftables (DROP par défaut), règles explicites.
|
|||
|
|
- **Mitigation proportionnée** : Fail2ban (24h) + ASN TTL (7 jours).
|
|||
|
|
- **WAF léger** : ModSecurity + OWASP CRS (niveau 1), approche prudente.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Démarrage rapide
|
|||
|
|
|
|||
|
|
1. Créer le réseau Docker dédié :
|
|||
|
|
```bash
|
|||
|
|
docker network create erplibre_net
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Déployer la stack (exemple) :
|
|||
|
|
```bash
|
|||
|
|
cd docker
|
|||
|
|
docker compose up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Installer / activer Nginx + config du vhost :
|
|||
|
|
- `nginx/erplibre.conf` (exemple)
|
|||
|
|
- Certificat TLS via Certbot (hors du périmètre de ce dépôt)
|
|||
|
|
|
|||
|
|
4. Activer le pare-feu nftables :
|
|||
|
|
- `nftables/edge.nft`
|
|||
|
|
|
|||
|
|
5. Installer Fail2ban :
|
|||
|
|
- `fail2ban/jail.local` (+ filtres au besoin)
|
|||
|
|
|
|||
|
|
6. Activer la mitigation ASN TTL :
|
|||
|
|
- `asn-mitigation/*` (script + systemd timer)
|
|||
|
|
|
|||
|
|
Voir : `docs/DEPLOYMENT-STEPS.md`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Contenu du dépôt
|
|||
|
|
|
|||
|
|
- `docker/` : stack Docker (Odoo + PostgreSQL) sur réseau dédié
|
|||
|
|
- `nginx/` : vhost Nginx durci (exemple)
|
|||
|
|
- `nftables/` : pare-feu minimal (DROP + ASN TTL)
|
|||
|
|
- `fail2ban/` : jails de base
|
|||
|
|
- `asn-mitigation/` : script + unit/timer systemd
|
|||
|
|
- `logrotate/` : rotation des logs Nginx
|
|||
|
|
- `ansible/` : playbook minimal (mode A) pour appliquer ces artefacts
|
|||
|
|
- `diagram/` : schéma (SVG)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Licence
|
|||
|
|
|
|||
|
|
MIT (voir `LICENSE`).
|