[firewall4] Methode séparée pour les blacklist upload
This commit is contained in:
parent
5e8c54a0fc
commit
d447b9546b
1 changed files with 44 additions and 23 deletions
|
@ -479,13 +479,14 @@ class firewall_komaz(firewall_base_routeur):
|
||||||
'connexion_secours' : self.connexion_secours,
|
'connexion_secours' : self.connexion_secours,
|
||||||
'connexion_appartement' : self.connexion_appartement,
|
'connexion_appartement' : self.connexion_appartement,
|
||||||
'blacklist_soft' : self.blacklist_soft,
|
'blacklist_soft' : self.blacklist_soft,
|
||||||
|
'blacklist_upload' : self.blacklist_upload,
|
||||||
'reseaux_non_routable' : self.reseaux_non_routable,
|
'reseaux_non_routable' : self.reseaux_non_routable,
|
||||||
'filtrage_ports' : self.filtrage_ports,
|
'filtrage_ports' : self.filtrage_ports,
|
||||||
'limitation_debit' : self.limitation_debit,
|
'limitation_debit' : self.limitation_debit,
|
||||||
'limit_ssh_connexion' : self.limit_ssh_connexion,
|
'limit_ssh_connexion' : self.limit_ssh_connexion,
|
||||||
})
|
})
|
||||||
|
|
||||||
self.use_ipset.extend([self.blacklist_soft, self.reseaux_non_routable])
|
self.use_ipset.extend([self.blacklist_soft, self.blacklist_upload, self.reseaux_non_routable])
|
||||||
self.use_tc.extend([self.limitation_debit])
|
self.use_tc.extend([self.limitation_debit])
|
||||||
|
|
||||||
self.ipset['reseaux_non_routable'] = {
|
self.ipset['reseaux_non_routable'] = {
|
||||||
|
@ -518,6 +519,7 @@ class firewall_komaz(firewall_base_routeur):
|
||||||
chain = 'POSTROUTING'
|
chain = 'POSTROUTING'
|
||||||
self.add(table, chain, '-j %s' % self.clamp_mss(table))
|
self.add(table, chain, '-j %s' % self.clamp_mss(table))
|
||||||
self.add(table,chain, '-j %s' % self.limitation_debit(table, run_tc=True))
|
self.add(table,chain, '-j %s' % self.limitation_debit(table, run_tc=True))
|
||||||
|
self.add(table, chain, '-j %s' % self.blacklist_upload(table, fill_ipset=True))
|
||||||
return
|
return
|
||||||
|
|
||||||
def filter_table(self):
|
def filter_table(self):
|
||||||
|
@ -720,15 +722,6 @@ class firewall_komaz(firewall_base_routeur):
|
||||||
try: self.ipset['blacklist']['soft'].delete(ip)
|
try: self.ipset['blacklist']['soft'].delete(ip)
|
||||||
except IpsetError: pass
|
except IpsetError: pass
|
||||||
|
|
||||||
# Est-ce qu'il y a des blacklists pour upload parmis les blacklists de la machine
|
|
||||||
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']['upload'].delete(ip)
|
|
||||||
except IpsetError: pass
|
|
||||||
|
|
||||||
|
|
||||||
def blacklist_soft(self, table=None, fill_ipset=False, apply=False):
|
def blacklist_soft(self, table=None, fill_ipset=False, apply=False):
|
||||||
"""Redirige les gens blacklisté vers le portail captif"""
|
"""Redirige les gens blacklisté vers le portail captif"""
|
||||||
chain = 'BLACKLIST_SOFT'
|
chain = 'BLACKLIST_SOFT'
|
||||||
|
@ -745,17 +738,7 @@ class firewall_komaz(firewall_base_routeur):
|
||||||
for ip in ips
|
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']['soft'].restore(bl_soft_ips)
|
||||||
self.ipset['blacklist']['upload'].restore(bl_upload_ips)
|
|
||||||
print OK
|
print OK
|
||||||
|
|
||||||
if table == 'mangle':
|
if table == 'mangle':
|
||||||
|
@ -783,6 +766,47 @@ class firewall_komaz(firewall_base_routeur):
|
||||||
self.apply(table, chain)
|
self.apply(table, chain)
|
||||||
return chain
|
return chain
|
||||||
|
|
||||||
|
def blacklist_upload_maj(self, ip_list):
|
||||||
|
for ip in ip_list:
|
||||||
|
machine = conn.search("ipHostNumber=%s" % ip)
|
||||||
|
# Est-ce qu'il y a des blacklists pour upload parmis les blacklists de la machine
|
||||||
|
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']['upload'].delete(ip)
|
||||||
|
except IpsetError: pass
|
||||||
|
|
||||||
|
def blacklist_upload(self, table=None, fill_ipset=False, apply=False):
|
||||||
|
"""Redirige les gens blacklisté vers le portail captif"""
|
||||||
|
chain = 'BLACKLIST_UPLOAD'
|
||||||
|
|
||||||
|
if fill_ipset:
|
||||||
|
anim('\tRestoration de l\'ipset %s' % self.ipset['blacklist']['upload'])
|
||||||
|
# On récupère la liste de toutes les ips blacklistés pour upload
|
||||||
|
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']['upload'].restore(bl_upload_ips)
|
||||||
|
print OK
|
||||||
|
|
||||||
|
if table == 'mangle':
|
||||||
|
pretty_print(table, chain)
|
||||||
|
# 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 apply:
|
||||||
|
self.apply(table, chain)
|
||||||
|
return chain
|
||||||
|
|
||||||
def reseaux_non_routable(self, table=None, fill_ipset=False, apply=False):
|
def reseaux_non_routable(self, table=None, fill_ipset=False, apply=False):
|
||||||
"""Bloque les réseaux non routables autres que ceux utilisés par le crans"""
|
"""Bloque les réseaux non routables autres que ceux utilisés par le crans"""
|
||||||
chain = 'RESEAUX_NON_ROUTABLES'
|
chain = 'RESEAUX_NON_ROUTABLES'
|
||||||
|
@ -891,9 +915,6 @@ class firewall_komaz(firewall_base_routeur):
|
||||||
self.add(table, chain, '-o %s -d %s -j CLASSIFY --set-class 1:3' % (dev['app'], net))
|
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))
|
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']))
|
|
||||||
|
|
||||||
# Classification pour la voip
|
# Classification pour la voip
|
||||||
self.add(table, chain, '-d sip.crans.org -j CLASSIFY --set-class 1:12')
|
self.add(table, chain, '-d sip.crans.org -j CLASSIFY --set-class 1:12')
|
||||||
self.add(table, chain, '-s sip.crans.org -j CLASSIFY --set-class 1:12')
|
self.add(table, chain, '-s sip.crans.org -j CLASSIFY --set-class 1:12')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue