From a29343a4d4d0bf86852321f20fb2f9ebfacd3857 Mon Sep 17 00:00:00 2001 From: Michel Blockelet Date: Fri, 20 Nov 2009 17:57:32 +0100 Subject: [PATCH] [surveillance/{filtrage_netacct,statistiques}.py] Traitement protocoles inconnus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Si le protocole est inconnu, on utilise -1 (par contrainte dans la base Pgsql, l'id doit correspondre à un protocole inscrit dans la table protocole). Statistiques.py envoie un resume des IPs ayant envoye des paquets avec des protocoles Ethernet inconnus. darcs-hash:20091120165732-ddb99-21e096790eb19b1ca581bc14b487241ffde5d721.gz --- surveillance/filtrage_netacct.py | 15 +++++++++++++++ surveillance/statistiques.py | 27 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/surveillance/filtrage_netacct.py b/surveillance/filtrage_netacct.py index c268750b..68c44e9e 100644 --- a/surveillance/filtrage_netacct.py +++ b/surveillance/filtrage_netacct.py @@ -30,6 +30,18 @@ reseau = config.NETs['all'] pgsql = PgSQL.connect(host='pgsql.adm.crans.org', database='filtrage', user='crans') pgsql.autocommit = True +# Récupération de la table de protocoles : +########################################## +requete = "SELECT id from protocole" +curseur = pgsql.cursor() +curseur.execute(requete) +curseur.fetchall +tableau = curseur.fetchall() +protocole = [] +for cellule in tableau: + protocole.append(cellule[0]) + + # Fonction de commit : ###################### def commit(act, prec={'donnees':0}): @@ -59,6 +71,9 @@ def commit(act, prec={'donnees':0}): port_crans = int(act["port_%s" % crans]) port_ext = int(act["port_%s" % ext]) + if proto not in protocole: + proto = -1 + # Traitement dans la base SQL date = strptime.syslog2pgsql(strftime("%b %d %H:%M:%S",localtime(int(act["date"])))) curseur = pgsql.cursor() diff --git a/surveillance/statistiques.py b/surveillance/statistiques.py index be7d7bdd..ed39d12a 100644 --- a/surveillance/statistiques.py +++ b/surveillance/statistiques.py @@ -136,6 +136,28 @@ gros_uploads_des_serveurs = stats(ip_crans=serveurs_ips, # Statistiques virus/p2p : # ############################ +# IPs envoyant des paquets de protocole Ethernet inconnu : +######################################################### +requete = """SELECT COUNT(*), ip_ext +FROM upload +WHERE + id=-1 +GROUP BY ip_ext""" +curseur.execute(requete) + +liste_etherunk = tableau(data = [[l[0], gethostname(str(l[1]))] + for l in curseur.fetchall()], + titre = ['nombre','ip'], + largeur = [10, 30], + alignement = ['d','c']).encode('iso-8859-15') + + +# statistiques des gros uploads depuis les serveurs +################################################### +gros_uploads_des_serveurs = stats(ip_crans=serveurs_ips, + show=['ip_crans', 'ip_ext'], upload_mini=50, + show_limit=100).encode('iso-8859-15') + # Machines actuellement déconnectées : ###################################### requete = "SELECT DISTINCT ip_crans FROM avertis_virus" @@ -242,6 +264,10 @@ Content-Type: text/plain; charset="iso-8859-15" %(liste_serveurs)s +*IPs envoyant des paquets de protocole Ethernet inconnu* + +%(liste_etherunk)s + *Machines actuellement déconnectées pour virus* %(liste_virus)s @@ -276,6 +302,7 @@ corps = message % { 'From': expediteur, 'To': destinataire, 'uuid': uuid, 'gros_uploads_des_serveurs': gros_uploads_des_serveurs, + 'liste_etherunk': liste_etherunk, 'liste_serveurs': liste_serveurs, 'liste_upload': liste_upload, 'liste_p2p': liste_p2p,