feat: dockerfile web

This commit is contained in:
2024-11-26 11:11:24 -05:00
parent 52a7581fc4
commit f6e694256b
9 changed files with 50 additions and 61 deletions

View File

@ -4,8 +4,12 @@ import time
from datetime import datetime
data_transfer = defaultdict(lambda: {"current": 0, "daily": 0, "last_reset": time.time()})
reset_time = 24 * 3600 # 24 heures en secondes
seuil_session = 0.5 * 1024 * 1024 * 1024 # 500 Mo en octets
seuil_journalier = 50 * 1024 * 1024 * 1024 # 50 Go en octets
def rule(packet, _, db):
def rule(packet, objets):
"""
Règle pour détecter une exfiltration de données importantes.
Actuellement, ne fonctionne pas pour un débit supérieur à 4Mo
@ -19,7 +23,7 @@ def rule(packet, _, db):
# Mettre à jour le volume de données transférées
current_time = time.time()
if current_time - data_transfer[src_ip]["last_reset"] > rule.reset_time:
if current_time - data_transfer[src_ip]["last_reset"] > reset_time:
data_transfer[src_ip]["daily"] = 0
data_transfer[src_ip]["last_reset"] = current_time
@ -27,37 +31,12 @@ def rule(packet, _, db):
data_transfer[src_ip]["daily"] += payload_size
# Exfiltration de données instantané
if data_transfer[src_ip]["current"] > rule.seuil_session:
db.send_alert(
datetime.now(),
5,
None,
"Exfiltration de données détectée (instantané)",
src_ip,
dst_ip,
proto = "TCP",
reason="Exfiltration de données détectée (instantané)",
act="Alerte"
)
if data_transfer[src_ip]["current"] > seuil_session:
objets["database"].send_alert(datetime.now(), 5, None, "Exfiltration de données détectée (instantané)", src_ip, dst_ip, proto = "TCP", reason="Exfiltration de données détectée (instantané)", act="Alerte")
data_transfer[src_ip]["current"] = 0 # Réinitialiser pour les prochaines sessions
print(f"Alerte, data transfer, transfert instantané important")
print("Alerte, data transfer, transfert instantané important")
# Exfiltration de données journalière
if data_transfer[src_ip]["daily"] > rule.seuil_journalier:
db.send_alert(
datetime.now(),
5,
None,
"Exfiltration de données détectée (journalière)",
src_ip,
dst_ip,
proto = "TCP",
reason="Exfiltration de données détectée (journalière)",
act="Alerte"
)
print(f"Alerte, data transfer, transfert journalier important")
rule.reset_time = 24 * 3600 # 24 heures en secondes
rule.seuil_session = 0.5 * 1024 * 1024 * 1024 # 500 Mo en octets
rule.seuil_journalier = 50 * 1024 * 1024 * 1024 # 50 Go en octets
if data_transfer[src_ip]["daily"] > seuil_journalier:
objets["database"].send_alert(datetime.now(), 5, None, "Exfiltration de données détectée (journalière)", src_ip, dst_ip, proto = "TCP", reason="Exfiltration de données détectée (journalière)", act="Alerte")
print("Alerte, data transfer, transfert journalier important")