[surveillance/{filtrage_netacct,statistiques}.py] Traitement protocoles inconnus

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
This commit is contained in:
Michel Blockelet 2009-11-20 17:57:32 +01:00
parent d0a6e18cf5
commit a29343a4d4
2 changed files with 42 additions and 0 deletions

View file

@ -30,6 +30,18 @@ reseau = config.NETs['all']
pgsql = PgSQL.connect(host='pgsql.adm.crans.org', database='filtrage', user='crans') pgsql = PgSQL.connect(host='pgsql.adm.crans.org', database='filtrage', user='crans')
pgsql.autocommit = True 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 : # Fonction de commit :
###################### ######################
def commit(act, prec={'donnees':0}): def commit(act, prec={'donnees':0}):
@ -59,6 +71,9 @@ def commit(act, prec={'donnees':0}):
port_crans = int(act["port_%s" % crans]) port_crans = int(act["port_%s" % crans])
port_ext = int(act["port_%s" % ext]) port_ext = int(act["port_%s" % ext])
if proto not in protocole:
proto = -1
# Traitement dans la base SQL # Traitement dans la base SQL
date = strptime.syslog2pgsql(strftime("%b %d %H:%M:%S",localtime(int(act["date"])))) date = strptime.syslog2pgsql(strftime("%b %d %H:%M:%S",localtime(int(act["date"]))))
curseur = pgsql.cursor() curseur = pgsql.cursor()

View file

@ -136,6 +136,28 @@ gros_uploads_des_serveurs = stats(ip_crans=serveurs_ips,
# Statistiques virus/p2p : # # 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 : # Machines actuellement déconnectées :
###################################### ######################################
requete = "SELECT DISTINCT ip_crans FROM avertis_virus" requete = "SELECT DISTINCT ip_crans FROM avertis_virus"
@ -242,6 +264,10 @@ Content-Type: text/plain; charset="iso-8859-15"
%(liste_serveurs)s %(liste_serveurs)s
*IPs envoyant des paquets de protocole Ethernet inconnu*
%(liste_etherunk)s
*Machines actuellement déconnectées pour virus* *Machines actuellement déconnectées pour virus*
%(liste_virus)s %(liste_virus)s
@ -276,6 +302,7 @@ corps = message % { 'From': expediteur,
'To': destinataire, 'To': destinataire,
'uuid': uuid, 'uuid': uuid,
'gros_uploads_des_serveurs': gros_uploads_des_serveurs, 'gros_uploads_des_serveurs': gros_uploads_des_serveurs,
'liste_etherunk': liste_etherunk,
'liste_serveurs': liste_serveurs, 'liste_serveurs': liste_serveurs,
'liste_upload': liste_upload, 'liste_upload': liste_upload,
'liste_p2p': liste_p2p, 'liste_p2p': liste_p2p,