[config, firewall4, ipt, deconnexion] Bridage pour les décos pour upload
This commit is contained in:
parent
c03e0187b3
commit
90764dba42
6 changed files with 50 additions and 19 deletions
|
@ -278,11 +278,12 @@ file_pickle = { 4 : '/tmp/ipt_pickle',
|
|||
6 : '/tmp/ip6t_pickle'
|
||||
}
|
||||
|
||||
blacklist_sanctions = ['upload', 'warez', 'p2p', 'autodisc_p2p','autodisc_virus','virus','autodisc_upload', 'bloq']
|
||||
blacklist_sanctions = ['upload', 'warez', 'p2p', 'autodisc_p2p','autodisc_virus','virus', 'bloq']
|
||||
if bl_carte_et_definitif:
|
||||
blacklist_sanctions.append('carte_etudiant')
|
||||
blacklist_sanctions_soft = ['autodisc_virus','ipv6_ra','mail_invalide','virus',
|
||||
'upload', 'warez', 'p2p', 'autodisc_p2p', 'autodisc_upload', 'bloq','carte_etudiant','chambre_invalide']
|
||||
'upload', 'warez', 'p2p', 'autodisc_p2p', 'bloq','carte_etudiant','chambre_invalide']
|
||||
blacklist_bridage_upload = ['autodisc_upload']
|
||||
|
||||
adm_users = [ 'root', 'identd', 'daemon', 'postfix', 'freerad', 'amavis',
|
||||
'nut', 'respbats', 'list', 'sqlgrey', 'ntpd', 'lp' ]
|
||||
|
|
|
@ -24,8 +24,8 @@ logiciels envoyant une très grande quantité de petites données
|
|||
(vidéo-conférence par exemple). Il peut y avoir d'autres raisons.
|
||||
|
||||
|
||||
Si cela continuait, et que tu dépassais la limite acceptable des 4096
|
||||
Mo sur 24 heures, tu serais automatiquement déconnecté du réseau pour
|
||||
Si cela continuait, et que tu dépassais la limite acceptable des 3789
|
||||
Mo sur 24 heures, ton débit serais automatiquement fortement limité pour
|
||||
une durée de 24 heures. Il t'appartient donc de surveiller cela de
|
||||
plus près et de faire en sorte que tes machines n'uploadent pas de
|
||||
manière excessive à l'avenir.
|
||||
|
@ -50,15 +50,13 @@ Content-Type: text/plain; charset="utf-8"
|
|||
|
||||
Bonjour %(proprio)s,
|
||||
|
||||
Tu as temporairement été déconnecté du réseau en raison de l'envoi trop
|
||||
Ton débit à été temporairement limité en raison de l'envoi trop
|
||||
important de données vers l'extérieur (%(upload)s Mo en 24h).
|
||||
|
||||
Tu as toujours accès au web ainsi qu'à tes mails crans mais tous les
|
||||
autres services te sont suspendus. Si cela devait se renouveler trop
|
||||
souvent, tu serais déconnecté complètement pour une durée plus
|
||||
importante. Il t'appartient donc de surveiller cela de plus près et de
|
||||
faire en sorte que ta machine n'uploade plus de manière excessive à
|
||||
l'avenir.
|
||||
Si cela devait se renouveler trop souvent, tu serais déconnecté
|
||||
complètement pour une durée plus importante.
|
||||
Il t'appartient donc de surveiller cela de plus près et de faire en sorte que
|
||||
ta machine n'uploade plus de manière excessive à l'avenir.
|
||||
|
||||
Pour plus d'informations, tu peux consulter la page :
|
||||
http://wiki.crans.org/VieCrans/DéconnexionPourUpload
|
||||
|
|
|
@ -11,7 +11,7 @@ exempt = [ ['138.231.136.0/21', '138.231.0.0/16'],
|
|||
soft = 300
|
||||
|
||||
#: limite hard
|
||||
hard = 4096
|
||||
hard = 3789
|
||||
|
||||
#: envoyer des mails à disconnect@ en cas de dépassement soft ?
|
||||
disconnect_mail_soft = False
|
||||
|
|
|
@ -7,7 +7,7 @@ import sys
|
|||
sys.path.append('/usr/scripts/gestion')
|
||||
sys.path.append('/usr/scripts/lc_ldap')
|
||||
|
||||
from config import NETs, blacklist_sanctions, blacklist_sanctions_soft, mac_komaz, mac_titanic, adm_users, accueil_route
|
||||
from config import NETs, blacklist_sanctions, blacklist_sanctions_soft, blacklist_bridage_upload, mac_komaz, mac_titanic, adm_users, accueil_route
|
||||
|
||||
import pwd
|
||||
import config.firewall
|
||||
|
@ -223,7 +223,6 @@ class firewall_base(object) :
|
|||
}
|
||||
|
||||
self.ipset['blacklist']={
|
||||
'soft' : Ipset("BLACKLIST-SOFT","ipmap","--from 138.231.136.0 --to 138.231.151.255"),
|
||||
'hard' : Ipset("BLACKLIST-HARD","ipmap","--from 138.231.136.0 --to 138.231.151.255"),
|
||||
}
|
||||
|
||||
|
@ -472,6 +471,11 @@ class firewall_komaz(firewall_base_routeur):
|
|||
'allow' : Ipset("RESEAUX-NON-ROUTABLE-ALLOW","nethash"),
|
||||
}
|
||||
|
||||
self.ipset['blacklist'].update({
|
||||
'soft' : Ipset("BLACKLIST-SOFT","ipmap","--from 138.231.136.0 --to 138.231.151.255"),
|
||||
'upload' : Ipset("BLACKLIST-UPLOAD","ipmap","--from 138.231.136.0 --to 138.231.151.255"),
|
||||
})
|
||||
|
||||
def blacklist_maj(self, ips):
|
||||
self.blacklist_hard_maj(ips)
|
||||
self.blacklist_soft_maj(ips)
|
||||
|
@ -673,12 +677,19 @@ class firewall_komaz(firewall_base_routeur):
|
|||
for ip in ip_list:
|
||||
machine = conn.search("ipHostNumber=%s" % ip)
|
||||
# Est-ce qu'il y a des blacklists soft parmis les blacklists de la machine
|
||||
if machine and set([bl.value['type'] for bl in machine[0].blacklist_actif() ]).intersection(blacklist_sanctions_soft):
|
||||
if machine:
|
||||
if set([bl.value['type'] for bl in machine[0].blacklist_actif() ]).intersection(blacklist_sanctions_soft):
|
||||
try: self.ipset['blacklist']['soft'].add(ip)
|
||||
except IpsetError: pass
|
||||
if machine and set([bl.value['type'] for bl in machine[0].blacklist_actif() ]).intersection(blacklist_bridage_upload):
|
||||
try: self.ipset['blacklist']['upload'].add(ip)
|
||||
except IpsetError: pass
|
||||
else:
|
||||
try: self.ipset['blacklist']['soft'].delete(ip)
|
||||
except IpsetError: pass
|
||||
try: self.ipset['blacklist']['upload'].delete(ip)
|
||||
except IpsetError: pass
|
||||
|
||||
|
||||
def blacklist_soft(self, table=None, fill_ipset=False, apply=False):
|
||||
"""Redirige les gens blacklisté vers le portail captif"""
|
||||
|
@ -696,7 +707,17 @@ class firewall_komaz(firewall_base_routeur):
|
|||
for ip in ips
|
||||
)
|
||||
|
||||
bl_upload_ips = set(
|
||||
str(ip) for ips in
|
||||
[
|
||||
machine['ipHostNumber'] for machine in self.blacklisted_machines()
|
||||
if set([bl.value['type'] for bl in machine.blacklist_actif() ]).intersection(blacklist_bridage_upload)
|
||||
]
|
||||
for ip in ips
|
||||
)
|
||||
|
||||
self.ipset['blacklist']['soft'].restore(bl_soft_ips)
|
||||
self.ipset['blacklist']['upload'].restore(bl_upload_ips)
|
||||
print OK
|
||||
|
||||
if table == 'mangle':
|
||||
|
@ -830,6 +851,9 @@ class firewall_komaz(firewall_base_routeur):
|
|||
for net in NETs['personnel-ens']:
|
||||
self.add(table, chain, '-o %s -d %s -j CLASSIFY --set-class 1:3' % (dev['app'], net))
|
||||
self.add(table, chain, '-o %s -s %s -j CLASSIFY --set-class 1:2' % (dev['out'], net))
|
||||
|
||||
# Classification pour les blacklists upload
|
||||
self.add(table, chain, '-o %s -m set --match-set %s src -j CLASSIFY --set-class 1:11' % (dev['out'], self.ipset['blacklist']['upload']))
|
||||
print OK
|
||||
|
||||
if run_tc:
|
||||
|
@ -851,6 +875,13 @@ class firewall_komaz(firewall_base_routeur):
|
|||
tc('qdisc add dev %s parent 1:10 '
|
||||
'handle 10: sfq perturb 10' % dev[int_key])
|
||||
|
||||
|
||||
#Classe des decos upload
|
||||
tc('class add dev %s parent 1:2 classid 1:11 '
|
||||
'htb rate 40kbps ceil 40kbps prio 1' % dev['out'])
|
||||
tc('qdisc add dev %s parent 1:11 '
|
||||
'handle 11: sfq perturb 10' % dev['out'])
|
||||
|
||||
for int_key in ['app']:
|
||||
try:
|
||||
tc('qdisc del dev %s root' % dev[int_key])
|
||||
|
|
|
@ -25,13 +25,14 @@ import os, re, syslog, cPickle, socket
|
|||
from ldap_crans import crans_ldap, hostname
|
||||
from commands import getstatusoutput
|
||||
from config import NETs, role, prefix, rid, output_file, filter_policy
|
||||
from config import blacklist_sanctions, blacklist_sanctions_soft, file_pickle, ann_scol, periode_transitoire
|
||||
from config import blacklist_sanctions, blacklist_sanctions_soft, blacklist_bridage_upload, file_pickle, ann_scol, periode_transitoire
|
||||
from iptools import AddrInNet
|
||||
from ridtools import Rid
|
||||
import subprocess
|
||||
import netaddr
|
||||
|
||||
blacklist_sanctions.extend(blacklist_sanctions_soft)
|
||||
blacklist_sanctions.extend(blacklist_bridage_upload)
|
||||
|
||||
Mangle_policy = """
|
||||
*mangle
|
||||
|
|
|
@ -312,7 +312,7 @@ for elupload, eltype, elid in uploadeurs:
|
|||
mail.sendmail(upload.expediteur, upload.expediteur, corps)
|
||||
|
||||
# On supprime les vieux avertisements
|
||||
curseur.execute("DELETE FROM avertis_upload_hard WHERE date < timestamp 'now' - interval '1 day'")
|
||||
curseur.execute("DELETE FROM avertis_upload_hard WHERE date < timestamp 'now' - interval '85200 seconds'") # 23h et 40min pour prolonger les blacklists toujours au dessus de la limite
|
||||
curseur.execute("DELETE FROM avertis_upload_soft WHERE date < timestamp 'now' - interval '1 day'")
|
||||
|
||||
################################################################################
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue