[firewall6] on rajoute l'ingress filtering
Ignore-this: 70bb869f58f85e481e7a8329fcf80e06 darcs-hash:20110308203846-8fbb1-a2688cf00d420dc48de79c6cb5e22415d43e17f1.gz
This commit is contained in:
parent
acef69c7da
commit
7a6a840c0f
2 changed files with 27 additions and 0 deletions
|
@ -136,6 +136,12 @@ def main_router():
|
||||||
ip6tables.filter.forward('-m conntrack --ctstate RELATED,ESTABLISHED -j \
|
ip6tables.filter.forward('-m conntrack --ctstate RELATED,ESTABLISHED -j \
|
||||||
ACCEPT')
|
ACCEPT')
|
||||||
|
|
||||||
|
# On filtre les réseaux non routable et aussi on accepte en entrée
|
||||||
|
# que les paquets dont la source n'est pas notre plage, pour éviter
|
||||||
|
# http://travaux.ovh.net/?do=details&id=5183
|
||||||
|
ingress_filtering(ip6tables)
|
||||||
|
ip6tables.filter.forward('-j INGRESS_FILTERING')
|
||||||
|
|
||||||
# Pour les autres connections
|
# Pour les autres connections
|
||||||
for type_m in [i for i in ['fil', 'fil-v6'] if not 'v6' in i]:
|
for type_m in [i for i in ['fil', 'fil-v6'] if not 'v6' in i]:
|
||||||
ip6tables.filter.mac('-s %s -j %s' % (prefix[type_m][0], 'MAC' +
|
ip6tables.filter.mac('-s %s -j %s' % (prefix[type_m][0], 'MAC' +
|
||||||
|
|
|
@ -103,6 +103,7 @@ class Table(object):
|
||||||
self.blacklist_src = Chain()
|
self.blacklist_src = Chain()
|
||||||
self.blacklist_dst = Chain()
|
self.blacklist_dst = Chain()
|
||||||
self.srv_out_adm = Chain()
|
self.srv_out_adm = Chain()
|
||||||
|
self.ingress_filtering = Chain()
|
||||||
|
|
||||||
class Ip6tables(object):
|
class Ip6tables(object):
|
||||||
''' Classe pour '''
|
''' Classe pour '''
|
||||||
|
@ -727,3 +728,23 @@ def macips(ipt, machines, types_machines):
|
||||||
type_mm = re.sub('-', '', type_m)
|
type_mm = re.sub('-', '', type_m)
|
||||||
eval('ipt.filter.mac' + type_mm)('-j DROP')
|
eval('ipt.filter.mac' + type_mm)('-j DROP')
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def ingress_filtering(ipt):
|
||||||
|
''' Réalise un filtre sur les plages d'IP susceptibles d'être routées '''
|
||||||
|
ip_proto = ipt.version()
|
||||||
|
if ip_proto == 6:
|
||||||
|
dev_ext = iface6('sixxs2')
|
||||||
|
# d'abord sur l'interface sur le réseau Cr@ns, on ne route que les
|
||||||
|
# paquet dans le bon subnet.
|
||||||
|
ipt.filter.ingress_filtering('-o %s -s %s -j RETURN' % (dev_ext,
|
||||||
|
prefix['subnet'][0]))
|
||||||
|
ipt.filter.ingress_filtering('-o %s -j LOG --log-prefix "BAD ROUTE "' %
|
||||||
|
dev_ext)
|
||||||
|
ipt.filter.ingress_filtering('-o %s -j DROP' % dev_ext)
|
||||||
|
# de l'extérieur, on ne veut que des paquet ne provenant pas de notre
|
||||||
|
# réseau à destination de notre réseau
|
||||||
|
ipt.filter.ingress_filtering('-i %s ! -s %s -d %s -j RETURN' %
|
||||||
|
(dev_ext, prefix['subnet'][0], prefix['subnet'][0]))
|
||||||
|
ipt.filter.ingress_filtering('-i %s -j LOG --log-prefix "BAD SRC "' %
|
||||||
|
dev_ext)
|
||||||
|
ipt.filter.ingress_filtering('-i %s -j DROP' % dev_ext)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue