mirror of
https://github.com/Oxbian/SIDPS.git
synced 2025-07-08 04:43:47 +02:00
feat: protection system for the idps
This commit is contained in:
49
idps/protection.py
Normal file
49
idps/protection.py
Normal file
@ -0,0 +1,49 @@
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
|
||||
class Protection:
|
||||
"""Classe pour activer la protection du système avec iptables"""
|
||||
|
||||
def __init__(self, activate = 0):
|
||||
"""Initialisation de la protection avec une liste pour stockées les règles créer"""
|
||||
self.rules = []
|
||||
self.activate = int(activate)
|
||||
|
||||
def add_rule(self, rule, duration):
|
||||
"""Ajouter une règle dans iptables
|
||||
@param rule: Règle à ajouter
|
||||
@param duration: Durée d'execution de la règle"""
|
||||
|
||||
print(f"Rule: {rule}, {duration}, {self.activate}")
|
||||
if self.activate == 0:
|
||||
return
|
||||
|
||||
print("Rule run")
|
||||
try:
|
||||
subprocess.run(rule.split(' '), check=True)
|
||||
print(f"[iptables] Règle ajouter {rule}")
|
||||
self.rules.append([rule, time.time(), duration])
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"[iptables] Erreur suppression de la règle {rule}: {e}")
|
||||
|
||||
def del_rules(self):
|
||||
"""Supprimer les règles obsolètes de l'iptables"""
|
||||
|
||||
if self.activate is False:
|
||||
return
|
||||
|
||||
curr = time.time()
|
||||
for i, elt in enumerate(self.rules, 0):
|
||||
if elt[1] + elt[2] <= curr:
|
||||
self.del_rule(self, elt[0].replace("-I", "-D"), i)
|
||||
|
||||
def del_rule(self, rule, i):
|
||||
"""Supprimer une règle dans iptables"""
|
||||
|
||||
try:
|
||||
subprocess.run(rule.split(' '), check=True)
|
||||
print("[iptables] Règle supprimer {rule}")
|
||||
self.rules.pop(i)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"[iptables] Erreur suppression de la règle {rule}: {e}")
|
Reference in New Issue
Block a user