{% extends "xeolux_securitykit/base.html" %} {% block title %}Documentation{% endblock %} {% block content %}
Référence complète des conditions, actions, configuration et mise en place.
pip install xeolux-securitykit
"xeolux_securitykit" dans settings.py
"xeolux_securitykit.middleware.SecurityKitMiddleware" en premier dans MIDDLEWARE
path("", include("xeolux_securitykit.urls")) dans urls.py
python manage.py migrate puis python manage.py setup_securitykit
Dans Django Admin → Utilisateur → Permissions : ajouter xeolux_securitykit | Configuration SecurityKit | Peut accéder à l'interface SecurityKit
XEOLUX_SECURITYKIT = {
"ENABLED": True, # Active/désactive le package entier
"DEFAULT_RESPONSE": "fake_404", # fake_404 | 403 | ghost | json | redirect
"SELF_PROTECTION_ENABLED": True, # Protège /securitykit/ lui-même
"LOCKOUT_SAFETY_ENABLED": True, # Empêche l'admin de se verrouiller
"STRICT_MODE_ENABLED": True,
"ANTI_DDOS_ENABLED": True,
"AUTO_STRICT_THRESHOLD": 80, # Score → mode strict automatique
"AUTO_LOCKDOWN_THRESHOLD": 95, # Score → lockdown automatique
"TEMP_BAN_DURATION": 3600, # Durée bannissement (secondes)
"RATE_LIMIT_WINDOW": 60, # Fenêtre rate limit (secondes)
"RATE_LIMIT_MAX_REQUESTS": 120, # Max requêtes/IP dans la fenêtre
"EXEMPT_PATHS": ["/static/", "/media/"],
"EMAIL_SUPER_ADMINS": True, # Alertes email aux superadmins
"UNLOCK_CODE_TTL": 3600, # Durée code déverrouillage strict
}
Une route est un chemin ou pattern d'URL. Chaque route peut avoir plusieurs règles. Les règles sont évaluées par priorité décroissante. La première règle dont toutes les conditions sont remplies détermine l'action.
exactprefixregexaccess_securitykit ne sont jamais bloqués par les règles de route, quel que soit le contenu des conditions.
Les conditions sont stockées en JSON dans le champ conditions d'une règle.
Toutes les conditions doivent être vraies pour que la règle s'applique (logique ET).
Action déclenchée quand les conditions de la règle sont remplies et que l'accès doit être refusé.
Chaque IP accumule un score de menace basé sur son comportement. Le score global influence l'activation automatique du mode strict et du lockdown.
| Événement | Points |
|---|---|
| Chemin suspect (suspicious_path) | +5 |
| Accès fichier sensible (file_access) | +5 |
| User-Agent bloqué | +3 |
| Flood détecté | +15 |
| Tentative bruteforce | +10 |
Les modules sont des protections indépendantes activables/désactivables depuis Modules.
| Paramètre | Valeur active | Description |
|---|---|---|
AUTO_STRICT_THRESHOLD | {{ conf_auto_strict }} | Score menace → mode strict |
AUTO_LOCKDOWN_THRESHOLD | {{ conf_auto_lockdown }} | Score menace → lockdown automatique |
TEMP_BAN_DURATION | {{ conf_temp_ban }}s | Durée d'un bannissement temporaire |
RATE_LIMIT_WINDOW | {{ conf_rate_limit_window }}s | Fenêtre glissante rate limit |
RATE_LIMIT_MAX_REQUESTS | {{ conf_rate_limit_max }} | Max requêtes/IP par fenêtre |
# Initialise les données de test (users, routes, clés) python manage.py setup_securitykit # Active le mode strict manuellement python manage.py securitykit_strict_on --reason "Maintenance" # Désactive le mode strict python manage.py securitykit_strict_off # Vide tous les scores de menace en cache python manage.py securitykit_reset_threats # Export / import de la configuration complète python manage.py securitykit_export > config.json python manage.py securitykit_import config.json