Dplacement
darcs-hash:20050831233129-6d78a-2ef5f572a45e3e6178edeca255fbd1159444b780.gz
This commit is contained in:
parent
f3d04aa223
commit
db137d4ca3
5 changed files with 897 additions and 0 deletions
107
surveillance/filtrage_netacct.py
Executable file
107
surveillance/filtrage_netacct.py
Executable file
|
@ -0,0 +1,107 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- encoding: iso-8859-15 -*-
|
||||
|
||||
|
||||
###########################
|
||||
# Import des commmandes : #
|
||||
###########################
|
||||
|
||||
import commands
|
||||
import os
|
||||
#import pg # Import des commandes de postgres
|
||||
import sys
|
||||
sys.path.append('/usr/scripts/gestion')
|
||||
import iptools
|
||||
from pyPgSQL import PgSQL
|
||||
from time import gmtime,strftime
|
||||
sys.path.append('/home/bernat')
|
||||
import strptime
|
||||
|
||||
# Définition de constantes :
|
||||
############################
|
||||
|
||||
reseau = ["138.231.136.0/21", "138.231.148.0/22"]
|
||||
|
||||
# Ouverture de la base de données :
|
||||
###################################
|
||||
pgsql = PgSQL.connect(host='/var/run/postgresql', database='filtrage', user='crans')
|
||||
pgsql.autocommit = True
|
||||
|
||||
#################################################################
|
||||
# Parser ler log de net-acct : /var/log/net-acct/net-acct.log : #
|
||||
#################################################################
|
||||
|
||||
#On récupère en continu les log de net-account
|
||||
# Les logs sont sous la forme : date | id(protocole) | ip_src | port_src | ip_dest | port_dest | octet transf
|
||||
|
||||
#netacct = os.popen("sh -c 'tail -F /var/log/ulog-acctd/account.log 2> /dev/null'")
|
||||
netacct = os.popen("sh -c 'tail -F /var/log/net-acct/net-acct.log 2> /dev/null'")
|
||||
|
||||
# Sélectionner le couple de ligne qui va bien (port_src_i=port_dest_i+1 et ip_src_i=ip_dest_i+1
|
||||
# Création d'un dictionnaire pour matcher les conversations
|
||||
|
||||
precedent = {"ip_src":"0","ip_dest":"0","port_src":"0","port_dest":"0","donnees":0}
|
||||
|
||||
for log in netacct :
|
||||
# Découpage du log
|
||||
date,proto,ip_src,port_src,ip_dest,port_dest,donnees = log.split("\t")[0:-2]
|
||||
# ip_src,ip_dest,port_src,port_dest
|
||||
proto = int(proto)
|
||||
# Création d'un dictionnaire pour matcher les conversations
|
||||
actuel = {}
|
||||
actuel["ip_src"]=ip_src
|
||||
actuel["port_src"]=port_src
|
||||
actuel["ip_dest"]=ip_dest
|
||||
actuel["port_dest"]=port_dest
|
||||
actuel["donnees"]=donnees
|
||||
# Test
|
||||
if actuel["ip_src"]==precedent["ip_dest"] \
|
||||
and actuel["ip_dest"]==precedent["ip_src"] \
|
||||
and actuel["port_src"]==precedent["port_dest"] \
|
||||
and actuel["port_dest"]==precedent["port_src"] :
|
||||
|
||||
|
||||
# Remplissage de la base de données :
|
||||
####################################
|
||||
|
||||
# Vérification de l'IP:
|
||||
verif = iptools.AddrInNets (actuel["ip_src"],reseau)
|
||||
if verif:
|
||||
crans = "src"
|
||||
ext = "dest"
|
||||
upload = int(actuel["donnees"])
|
||||
download = int(precedent["donnees"])
|
||||
port_src=int(actuel['port_src'])
|
||||
port_dest=int(actuel['port_dest'])
|
||||
else :
|
||||
crans = "dest"
|
||||
ext = "src"
|
||||
upload = int(precedent["donnees"])
|
||||
download = int(actuel["donnees"])
|
||||
port_src=int(actuel['port_dest'])
|
||||
port_dest=int(actuel['port_src'])
|
||||
|
||||
ip_crans = actuel["ip_%s" % crans]
|
||||
ip_ext = actuel["ip_%s" % ext]
|
||||
port_crans = int(actuel["port_%s" % crans])
|
||||
port_ext = int(actuel["port_%s" % ext])
|
||||
#print actuel["ip_%s" % crans]
|
||||
#print ip_crans, ip_ext,port_crans, port_ext
|
||||
|
||||
# Traitement dans la base SQL ### Modifier le traitement de l'heure !
|
||||
date = strptime.syslog2pgsql(strftime("%b %d %H:%M:%S",gmtime(int(date))))
|
||||
curseur = pgsql.cursor()
|
||||
requete = "INSERT INTO upload (ip_crans,ip_ext,port_crans,port_ext,download,upload,date,id) VALUES ('%s','%s',%d,%d,%d,%d,'%s',%d)" % (ip_crans,
|
||||
ip_ext,
|
||||
port_crans,
|
||||
port_ext,
|
||||
download,
|
||||
upload,
|
||||
date,
|
||||
proto)
|
||||
curseur.execute(requete)
|
||||
|
||||
|
||||
precedent=actuel
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue