oublis de fichiers divers et symlinks for testlibs
This commit is contained in:
parent
e2611a770a
commit
b004906464
12 changed files with 1165 additions and 135 deletions
1
surveillance/comptes_inactifs/comptes_inactifs.3.txt
Symbolic link
1
surveillance/comptes_inactifs/comptes_inactifs.3.txt
Symbolic link
|
@ -0,0 +1 @@
|
|||
comptes_inactifs.2.txt
|
1
surveillance/comptes_inactifs/comptes_inactifs.7.txt
Symbolic link
1
surveillance/comptes_inactifs/comptes_inactifs.7.txt
Symbolic link
|
@ -0,0 +1 @@
|
|||
comptes_inactifs.6.txt
|
|
@ -1,135 +0,0 @@
|
|||
#! /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
|
||||
import psycopg2
|
||||
from time import strftime, localtime
|
||||
sys.path.append('/usr/scripts/surveillance')
|
||||
import strptime, config
|
||||
|
||||
# définition des tables
|
||||
#######################
|
||||
from socket import gethostname
|
||||
hostname = gethostname().split(".")[0]
|
||||
|
||||
# Définition de constantes :
|
||||
############################
|
||||
reseau = config.NETs['all']
|
||||
|
||||
# Ouverture de la base de données :
|
||||
###################################
|
||||
pgsql = PgSQL.connect(host='pgsql.adm.crans.org', database='filtrage', user='crans')
|
||||
# Il faudra remplacer la ligne ci-dessous par pgsql.set_session(autocommit=True) sous wheezy
|
||||
pgsql.set_isolation_level(0)
|
||||
|
||||
# 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}):
|
||||
# act = communication actuelle
|
||||
# prec = communication précédente si elle existe
|
||||
|
||||
# Vérification de l'IP :
|
||||
verif = iptools.AddrInNets(act["ip_src"],reseau)
|
||||
if verif:
|
||||
crans = "src"
|
||||
ext = "dest"
|
||||
upload = int(act["donnees"])
|
||||
download = int(prec["donnees"])
|
||||
port_src=int(act['port_src'])
|
||||
port_dest=int(act['port_dest'])
|
||||
else :
|
||||
crans = "dest"
|
||||
ext = "src"
|
||||
upload = int(prec["donnees"])
|
||||
download = int(act["donnees"])
|
||||
port_src=int(act['port_dest'])
|
||||
port_dest=int(act['port_src'])
|
||||
|
||||
proto = int(act["proto"])
|
||||
ip_crans = act["ip_%s" % crans]
|
||||
ip_ext = act["ip_%s" % ext]
|
||||
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()
|
||||
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)
|
||||
|
||||
|
||||
##################################################################
|
||||
# Parser les logs de net-acct : /var/log/net-acct/net-acct.log : #
|
||||
##################################################################
|
||||
|
||||
# On récupère en continu les log de net-account
|
||||
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","date":"0"}
|
||||
|
||||
# Marqueur pour ne pas enregistrer deux fois la même conversation
|
||||
precedent_commite = True
|
||||
|
||||
for log in netacct :
|
||||
|
||||
# Découpage du log
|
||||
date,proto,ip_src,port_src,ip_dest,port_dest,donnees = log.split("\t")[0:-2]
|
||||
|
||||
# Si on change de date, on analyse le dump et on commite
|
||||
if precedent["date"] != date:
|
||||
print 'dump (%s=>%s)'%(precedent["date"],date)
|
||||
#os.system('/usr/scripts/surveillance/filtrage_dump.py')
|
||||
print 'done'
|
||||
|
||||
# Création d'un dictionnaire pour matcher les conversations
|
||||
actuel = {}
|
||||
actuel["date"] = date
|
||||
actuel["proto"] = proto
|
||||
actuel["ip_src"]=ip_src
|
||||
actuel["port_src"]=port_src
|
||||
actuel["ip_dest"]=ip_dest
|
||||
actuel["port_dest"]=port_dest
|
||||
actuel["donnees"]=donnees
|
||||
actuel["date"]=date
|
||||
|
||||
# On regarde si c'est le retour de la connexion du dessus
|
||||
print actuel
|
||||
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"]):
|
||||
commit(actuel, precedent)
|
||||
precedent_commite = True
|
||||
elif not precedent_commite:
|
||||
# On commite le précédent avant de l'écraser
|
||||
commit(precedent)
|
||||
else:
|
||||
precedent_commite = False
|
||||
|
||||
precedent=actuel
|
50
surveillance/outils/virus.py
Normal file
50
surveillance/outils/virus.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- coding: iso-8859-15 -*-
|
||||
|
||||
###########################
|
||||
# Import des commmandes : #
|
||||
###########################
|
||||
|
||||
import commands
|
||||
import sys
|
||||
import psycopg2
|
||||
sys.path.append('/usr/scripts/gestion')
|
||||
from config import upload, virus, p2p
|
||||
import smtplib
|
||||
from ldap_crans import crans_ldap
|
||||
from time import *
|
||||
|
||||
|
||||
|
||||
# Connections :
|
||||
###############
|
||||
pgsql = psycopg2.connect(database='filtrage', user='crans')
|
||||
# Il faudra remplacer la ligne ci-dessous par pgsql.set_session(autocommit=True)
|
||||
pgsql.set_isolation_level(0)
|
||||
mail = smtplib.SMTP('localhost')
|
||||
ldap = crans_ldap()
|
||||
curseur=pgsql.cursor()
|
||||
|
||||
|
||||
requete="SELECT ip_crans FROM avertis_virus"
|
||||
curseur.execute(requete)
|
||||
virus=curseur.fetchall()
|
||||
for i in range(0,len(virus)) :
|
||||
IP=virus[i][0]
|
||||
print IP
|
||||
requete="SELECT COUNT(ip_src) from virus where ip_src='%s' and date > timestamp 'now' - interval '1 hour'"%IP
|
||||
curseur.execute(requete)
|
||||
resultv=curseur.fetchall()
|
||||
requete="SELECT COUNT(ip_src) from flood where ip_src='%s' and date > timestamp 'now' - interval '1 hour'"%IP
|
||||
curseur.execute(requete)
|
||||
resultf=curseur.fetchall()
|
||||
machine = ldap.search('ipHostNumber=%s' % IP,'w' )['machine'][0]
|
||||
hostname=machine.nom()
|
||||
proprio=machine.proprietaire()
|
||||
bl=proprio.blacklist()
|
||||
for ligne in bl:
|
||||
if '-,virus,' in ligne:
|
||||
print hostname,resultv[0][0],resultf[0][0],ligne
|
||||
break
|
||||
#else :
|
||||
# print hostname,resultv[0][0],resultf[0][0],'PAS DE BL'
|
52
surveillance/ra.py
Executable file
52
surveillance/ra.py
Executable file
|
@ -0,0 +1,52 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Script pour placer les gens qui font du routeur advertisement sur le vlan
|
||||
isolement
|
||||
© Olivier Huber
|
||||
License : GPLv2
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
sys.stdout = open('/tmp/badboys', 'a')
|
||||
sys.stderr = open('/tmp/badboys', 'a')
|
||||
import time
|
||||
sys.path.append('/usr/scripts/gestion')
|
||||
from ldap_crans import crans_ldap, is_actif
|
||||
sys.path.append('/usr/scripts/utils')
|
||||
from chambre_on_off import chambre_on_off
|
||||
from time import sleep
|
||||
if __name__ == '__main__':
|
||||
Mac_ra = os.getenv('SOURCE_MAC')
|
||||
print Mac_ra
|
||||
with open('/tmp/badboys', 'a') as f:
|
||||
print >>f, Mac_ra
|
||||
Ldap = crans_ldap()
|
||||
try:
|
||||
Machine = Ldap.search('mac=%s' % Mac_ra, 'w' )['machine'][0]
|
||||
except IndexError:
|
||||
print u"La machine avec la mac %s n'est pas declarée !" % Mac_ra
|
||||
sys.exit(1)
|
||||
|
||||
Host = Machine.nom()
|
||||
Prop = Machine.proprietaire()
|
||||
Bl = Prop.blacklist()
|
||||
Bl_ipv6 = [ x for x in Bl if 'ipv6_ra' in x ]
|
||||
for bl in Bl_ipv6:
|
||||
if is_actif(bl):
|
||||
# L'adhérent est déjà blacklisté
|
||||
print "déjà blacklisté !!!!"
|
||||
sys.exit(1)
|
||||
else:
|
||||
# L'adhérent n'est pas encore blacklisté
|
||||
Prop.blacklist(['now', '-', 'ipv6_ra', Host])
|
||||
print "ur a bad guy"
|
||||
Prop.save()
|
||||
Chbre = Machine.proprietaire().chbre()
|
||||
chambre_on_off(Chbre, 'off')
|
||||
time.sleep(5)
|
||||
chambre_on_off(Chbre, 'on')
|
||||
print str(Host), str(Prop), Machine.proprietaire().chbre()
|
||||
sys.exit(0)
|
27
surveillance/strptime.py
Normal file
27
surveillance/strptime.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
#! /usr/bin/env python
|
||||
|
||||
months = { 'Jan': 1,
|
||||
'Feb': 2,
|
||||
'Mar': 3,
|
||||
'Apr': 4,
|
||||
'May': 5,
|
||||
'Jun': 6,
|
||||
'Jul': 7,
|
||||
'Aug': 8,
|
||||
'Sep': 9,
|
||||
'Oct': 10,
|
||||
'Nov': 11,
|
||||
'Dec': 12 }
|
||||
|
||||
import time
|
||||
|
||||
def syslog2pgsql(date):
|
||||
"""Convertit une date du type `Jul 15 19:32:23' en une date du type `15-07-2005 19:32:23'"""
|
||||
mois = months[date[0:3]]
|
||||
jour = int(date[4:6])
|
||||
heure = date[7:]
|
||||
annee = time.gmtime()[0]
|
||||
return "%02d-%02d-%04d %s" % (jour, mois, annee, heure)
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue